DevOps/Kubernetes

[kubernetes] namespace

twoDeveloper 2022. 8. 24. 14:28

■ namespace 란?

- 클러스터를 여러개의 논리적인 단위로 나눠서 사용

- API가 하나이지만 목적에 맞춰 여러개로 분리

- namespace를 사용하지 않으면 자동으로 'default namespace' 로 동작

 

· namespace 조회

$ kubectl get namespace
---
NAME              STATUS   AGE
default           Active   1d
kube-node-lease   Active   1d
kube-public       Active   1d
kube-system       Active   1d

· 쿠버네티스 초기 namespace는 총 4개 다음과 같다.

default 다른 namespace가 없는 object를 위한 기본 namespace
kube-system 쿠버네티스 시스템에서 생성한 object를 위한 namespace
kube-public 자동으로 생성되며 모든 사용자가 읽기 권한으로 접근 가능한 namespace
kube-node-lease 각 node와 연관된 lease object를 갖고, kubelet이 heartbeat를 보내서 control plane이 node 장애를 탐지

 

※ kube-system

$ kubectl get pods -n kube-system
---
apiServer
controller
proxy
scheduler

 

□ namespace 설정

※ CLI / YAML 2가지 방법

 

1. CLI 방법으로 실행

$ kubectl create namespace [namespace 명]

 

2. YAML 파일로 실행

· 최소한의 YAML 파일 구성

---
apiVersion: v1
kind: namespace
metadata:
  name: orange

· 지정한 namespace에서 실행할 Pod를 YAML 파일을 통해 실행

$ kubectl create -f [yaml 파일 명] -n [namespace 명]

 

 

□ Switch

· 기본 namespace 는 'default'

$ kubectl config view

 

· config에 context (blue namespace) 추가

$ kubectl config set-context [blue@kubernetes] \
                    --cluster=kubernetes \
                    --user=kubernetes-admin \
                    --namespace=blue \

 

· namespace가 default에서 blue로 switch

$ kubectl config use-context [blue@kubernetes]

 

★ namespace가 단위 중 가장 큼, 따라서 namespace 제거 시 한번에 날아갈 수 있으니 주의!!!