728x90
반응형
출처
Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스
Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)
namespace
What is namespace?
클러스터 내에서 리소스를 논리적으로 분리하는 방법이다.
namespace의 특징
- 리소스 격리: 각 namespace안에서 리소스들이 격리되어 다른 namespace에서 같은 이름의 Pod나 Service가 동시에 존재할 수 있다.
- 리소스 할당 및 쿼터 관리: namespace단위로 리소스를 할당하고, 특정 namespace에 대해 ResourceQuota를 설정하여 사용량을 제한할 수 있다. (CPU, 메모리 등)
- 보안 및 접근 제어: RBAC과 결합하여 namespace단위로 사용자와 서비스의 권한을 제어할 수 있다.
- 자원 공유: 동일한 클러스터 내의 다른 namespace와 리소스를 공유할 수 있다.
- DNS: Service가 생성될 때, ServiceName.Namespace.Service.domain의 이름으로 접근할 수 있다.
namespace의 활용
- 프로젝트 구분: 한 클러스터 내에서 서로 다른 프로젝트를 위한 namespace를 생성하여 리소스를 격리하고 관리할 수 있다.
- 환경 구분: dev, stag, prod와 같이 환경을 별도의 namespace로 나누어 환경에 따른 리소스를 분리할 수 있다.
- 다중 테넌시: 여러 팀이나 고객이 동일한 클러스터를 사용하지만 각자의 리소스를 독립적으로 관리하고 싶을 때 유용하다.
기본 namespace
- default: 클러스터에서 namespace를 지정하지 않은 경우, 모든 리소스가 default에 생성된다.
- kube-system: 쿠버네티스 시스템 컴포넌트가 실행되는 namespace. 클러스터의 관리 및 운영에 필요한 시스템 리소스들이 배치된다. (kube-apiserver, kube-scheduler, kube-controller-manager 등)
- kube-public: 클러스터 내에서 모든 사용자가 접근할 수 있는 공개 리소스를 저장하는 namespace. 클러스터의 구성 정보나 public-data가 이곳에 저장된다.
Namespace의 구성
#namespace가 kube-system인 pod를 조회
[root@]$ kubectl get pods --namespace=dev
#다른 namespace들의 모든 pod를 조회
[root@]$ kubectl get pods --all-namespaces
#namespace=dev인 pod 생성
[root@]$ kubectl create -f namespace-pod-definition.yml --namespace=dev
pod/imfra-pod created
#namespace yaml 구조
[root@]$ vi namespace-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
#namespace 생성-yaml
[root@]$ kubectl create -f namespace-dev.yml
namespace/dev created
#namespace 생성-cli
[root@]$ kubectl create namespace dev
namespace/dev created
#특정 namespace를 기본설정으로 변경
[root@]$ kubectl config set-context $(kubectl config current-context) --namespace=dev
#수정 전 namespace=dev인 pod 조회
[root@]$ kubectl get po --namespace=dev
#수정 후 namespace=dev인 pod 조회
[root@]$ kubectl get po
#ResourceQuota yaml 구조
[root@]$ vi resource-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata: compute-quota
namespace: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits.memory: 10Gi
#namespace=dev에 ResourceQuota 설정
[root@]$ kubectl create -f resource-quota.yaml
728x90
반응형
'클라우드 > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 자원 기반 접근법, 명령 기반 접근법 (0) | 2024.11.24 |
---|---|
[쿠버네티스] 서비스 (0) | 2024.11.09 |
[쿠버네티스] ReplicaSet (0) | 2024.10.27 |
[쿠버네티스] ETCD (0) | 2024.09.21 |
[쿠버네티스] Container Runtime Interface (CRI) (0) | 2024.09.16 |
댓글