Search
Duplicate
📒

[Kubernetes Infra] 02-3. 네임스페이스

상태
완료
수업
Kubernetes Infra
주제
4 more properties
참고

네임스페이스

NOTE
네임스페이스는 클러스터 내의 논리적인 분리 단위다!
Namespace ⇒ 각자의 집을 만들어서 공간을 분리한다.
쿠버네티스 클러스터를 dev/stg/prod 3개의 네임스페이스로 구분한다. 여기서 중요한건 네임스페이스는 논리적으로 분리하지, 물리적으로 분리되는것이 아니다.
네임스페이스는 쿠버네티스 오브젝트를 묶는 하나의 가상공간 또는 그룹이다.
다른 네임스페이스간 통신이 가능하며, 클러스터 장애발생시 모든 네임스페이스에 영향이간다.
리소스의 이름은 네임스페이스내에서 유일해야한다. 또한 쿠버네티스는 초기에 4개의 네임스페이스를 기본값으로 가진다.
default
kube-system
kube-node-release
kube-public
# 네임스페이스 조회 kubectl get namepsace || ns # 특정 네임스페이스 pod 조회 kubectl get pods --namespace=research kubectl get pods -n=research # 특정 네임스페이스 pod 생성 kubectl run redis —image=redis --namespace=finace # 모든 네임스페이스의 pod 조회 kubectl get pods --all-namespace || -A
Bash
복사
사용 명령어

네임스페이스 DNS

NOTE
다른 네임스페이스의 리소스와 이름이 중복될 수 있으므로 추가적인 이름을 붙인다!
서로 다른 네임스페이스에서 db-service 리소스의 이름이 겹친다.
다른 네임스페이스의 db-service를 사용할경우 dev.svc.cluster.local 의 정보를 추가로 붙여준다.

네임스페이스 생성

NOTE
# kubectl create namespace [이름] kubectl create -f namespace-dev.yaml kubectl create -f pod-definition.yaml kubectl config set-context $(kubectl config current-context) --namespace=prod
Bash
복사
apiVersion: v1 kind: Nmaespace metadata: name: dev
YAML
복사
namespace-dev.yaml
apiVersion: v1 kind: Pod metadata: name: myapp-pod namespace: dev # 특정 네임스페이스에 생성 labels: app: myapp type: front-end spec: containers: - name: nginx-container image: nginx
YAML
복사
pod-definition.yaml

네임스페이스 리소스 제한

NOTE
네임스페이스에 자원제한
apiVersion: v1 kind: ResourceQuota metadata: name: compute-quota namespace: dev spec: hard: pods: "10" requests.cpu: "4" requests.memory: 5Gi limits.cpu: "10" limits:memory: 10Gi
YAML
복사
자원제한에 대해선 후에 더 자세하게 다룬다.