네임스페이스
- 동일한 물리 클러스트를 기반으로 하는 논리적으로 구분된 가상 클러스터를 네임스페이스라고 한다.
- 여러개의 팀이나 많은 사용자가 있는 경우, 클러스터안에서 여러개의 어플리케이션을 실행해야 하는 경우 사용
root@master:~# kubectl get namespace
NAME STATUS AGE
default Active 10d
kube-node-lease Active 10d
kube-public Active 10d
kube-system Active 10d
root@master:~# kubectl get deploy
No resources found in default namespace.
root@master:~# kubectl get deploy -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
calico-kube-controllers 1/1 1 1 10d
coredns 2/2 2 2 10d
default : 기본 네임스페이스, 별도의 네임스페이스가 정의되지 않는 오브젝트들이 생성
kube-system : 쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스
kube-public : 클러스터안의 모든 사용자가 읽기 권한으로 접근 가능한 네임스페이스, 모두가 확인해야 하는 클러스터 사용량 같은 정보가 이 네임스페이스에 관리된다.
kube-node-lease : 클러스터가 스케일링 될 때 노드 하트비트(hearbeat)의 성능을 향상시키는 각 노드와 관련된 리스(lease) 오브젝트에 대한 네임스페이스
kubectl 예제
root@master:~# kubectl get pods (디폴트로 default)
No resources found in default namespace.
root@master:~# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-647d84984b-rbp5b 1/1 Running 1 (10d ago) 10d
calico-node-5hsqt 1/1 Running 5 (6d23h ago) 10d
calico-node-6xmjl 1/1 Running 0 10d
calico-node-gft4v 1/1 Running 1 (10d ago) 10d
coredns-64897985d-2ndcp 1/1 Running 1 (10d ago) 10d
coredns-64897985d-bn7r8 1/1 Running 1 10d
etcd-master 1/1 Running 1 (10d ago) 10d
kube-apiserver-master 1/1 Running 1 (10d ago) 10d
kube-controller-manager-master 1/1 Running 4 (41h ago) 10d
kube-proxy-9hjlt 1/1 Running 0 10d
kube-proxy-bvcx9 1/1 Running 1 (10d ago) 10d
kube-proxy-jgv54 1/1 Running 5 (6d23h ago) 10d
kube-scheduler-master 1/1 Running 4 (41h ago) 10d
root@master:~# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-647d84984b-rbp5b 1/1 Running 1 (10d ago) 10d
kube-system calico-node-5hsqt 1/1 Running 5 (6d23h ago) 10d
kube-system calico-node-6xmjl 1/1 Running 0 10d
kube-system calico-node-gft4v 1/1 Running 1 (10d ago) 10d
kube-system coredns-64897985d-2ndcp 1/1 Running 1 (10d ago) 10d
kube-system coredns-64897985d-bn7r8 1/1 Running 1 10d
kube-system etcd-master 1/1 Running 1 (10d ago) 10d
kube-system kube-apiserver-master 1/1 Running 1 (10d ago) 10d
kube-system kube-controller-manager-master 1/1 Running 4 (41h ago) 10d
kube-system kube-proxy-9hjlt 1/1 Running 0 10d
kube-system kube-proxy-bvcx9 1/1 Running 1 (10d ago) 10d
kube-system kube-proxy-jgv54 1/1 Running 5 (6d23h ago) 10d
kube-system kube-scheduler-master 1/1 Running 4 (41h ago) 10d
root@master:~# kubectl get all --all-namespaces (모든 컴포넌트의 모든 네임스페이스에 대해서 출력)
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/calico-kube-controllers-647d84984b-rbp5b 1/1 Running 1 (10d ago) 10d
kube-system pod/calico-node-5hsqt 1/1 Running 5 (6d23h ago) 10d
kube-system pod/calico-node-6xmjl 1/1 Running 0 10d
kube-system pod/calico-node-gft4v 1/1 Running 1 (10d ago) 10d
kube-system pod/coredns-64897985d-2ndcp 1/1 Running 1 (10d ago) 10d
kube-system pod/coredns-64897985d-bn7r8 1/1 Running 1 10d
kube-system pod/etcd-master 1/1 Running 1 (10d ago) 10d
kube-system pod/kube-apiserver-master 1/1 Running 1 (10d ago) 10d
kube-system pod/kube-controller-manager-master 1/1 Running 4 (41h ago) 10d
kube-system pod/kube-proxy-9hjlt 1/1 Running 0 10d
kube-system pod/kube-proxy-bvcx9 1/1 Running 1 (10d ago) 10d
kube-system pod/kube-proxy-jgv54 1/1 Running 5 (6d23h ago) 10d
kube-system pod/kube-scheduler-master 1/1 Running 4 (41h ago) 10d
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 10d
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/calico-node 3 3 3 3 3 kubernetes.io/os=linux 10d
kube-system daemonset.apps/kube-proxy 3 3 3 3 3 kubernetes.io/os=linux 10d
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/calico-kube-controllers 1/1 1 1 10d
kube-system deployment.apps/coredns 2/2 2 2 10d
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/calico-kube-controllers-647d84984b 1 1 1 10d
kube-system replicaset.apps/coredns-64897985d 2 2 2 10d
기본 네임스페이스 변경
- 쿠버네티스는 kubeconfig 라는 YAML 파일을 이용하여 kubectl 명령에 대한 클러스터 인증 정보 저장
- KUBECONFIG 변수를 통해 config 파일의 저장 위치 결정 ($ echo $KUBECONFIG)
- context는 access parameters 으로 각 context에는 쿠버네티스 클러스터, 사용자 및 인터페이스가 포함된다.
1) 현재 사용중인 context 확인
root@master:~# kubectl config current-context
kubernetes-admin@kubernetes
2) 현재 context의 access parameter 확인
root@master:~# kubectl config get-contexts kubernetes-admin@kubernetes
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin
3) 기본 네임스페이스를 "kube-system"으로 변경
root@master:~# kubectl config set-context kubernetes-admin@kubernetes --namespace=kube-system
Context "kubernetes-admin@kubernetes" modified.
root@master:~# kubectl config get-contexts kubernetes-admin@kubernetes
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin kube-system
4) 기본 네임스페이스를 "default" 다시 변경
root@master:~# kubectl config set-context kubernetes-admin@kubernetes --namespace=""
Context "kubernetes-admin@kubernetes" modified.
context 생성 / 삭제
1) 클러스터 접근 context 확인
root@master:~# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://172.30.1.25:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
- context:
cluster: ""
user: ""
name: kubernetes@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
2) 새로운 context 생성 후 context 전환
root@master:~# kubectl config set-context kindlove@kubernetes --cluster kubernetes --namespace=kube-system
Context "kindlove@kubernetes" created.
root@master:~# kubectl config use-context kindlove@kubernetes
Switched to context "kindlove@kubernetes".
root@master:~# kubectl config current-context
kindlove@kubernetes
3) context 정보 등록 확인
root@master:~# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kindlove@kubernetes kubernetes kube-system
kubernetes-admin@kubernetes kubernetes kubernetes-admin
kubernetes@kubernetes
4) 기존의 context로 전환하고, kindlove@kubernetes context 삭제하기
root@master:~# kubectl config use-context kubernetes-admin@kubernetes
Switched to context "kubernetes-admin@kubernetes".
root@master:~# kubectl config unset users.kindlove
Property "users.kindlove" unset.
root@master:~# kubectl config unset contexts.kindlove@kubernetes
Property "contexts.kindlove@kubernetes" unset.
-- The End --
'Devops > Kubernetes' 카테고리의 다른 글
[Kubernetes] apt-get 시 public key is not available: NO_PUBKEY 에러 수정 (1) | 2023.12.21 |
---|---|
[Kubernetes] 쿠버네티스 Service 개념 - ClusterIP, NodePort (0) | 2022.01.23 |
[Kubernetes] Controller - Replicaset (0) | 2022.01.22 |
[Kubernetes] 쿠버네티스 Architecture와 기본 동작 (0) | 2022.01.16 |
[Kubernetes] 쿠버네티스 설치(kubeadm) 및 cluster 구성하기 (5) | 2022.01.12 |