2021. 4. 4. 16:54ㆍ🎯 OpenSource/K8S
쿠버네티스는 Namespace를 통해 여러 오브젝트를 분리할 수 있다.
서로 다른 Namespace에서는 같은 이름의 리소스를 각각 사용할 수 있다.
3.7.1 Namespace의 필요성
- 많은 구성요소를 좀 더 작은 개별 그룹으로 분리하여 관리할 수 있다.
- multi-tenant 환경처럼 리소스 분리
- production, dev, QA 등 용도에 맞게 리소스 분리
- 여러 사용자가 하나의 클러스터를 나눠 사용하는 경우
서로 다른 namespace에서 리소스는 독립적이지만, node 같은 경우는 global 하게 동작한다.
3.7.2 다른 namespace와 pod 살펴보기
root@master001:~/k8s_in_action/03_pod# kubectl get namespace
NAME STATUS AGE
calico-system Active 34d
default Active 34d
kube-node-lease Active 34d
kube-public Active 34d
kube-system Active 34d
tigera-operator Active 34d
이는 현재 k8s cluster 내에 존재하는 namespace의 리스트이다.
지금까지 모든 실습은 default에서만 진행했다.
다른 namespace의 pod는 다음과 같이 조회한다.
kube-system namespace의 경우, 쿠버네티스의 시스템 자체와 관련된 리소스를 포함한다. 시스템적인 환경 설정은 되도록 변경하지 않는 것이 좋으며, 실수로 변경되는 것을 방지하기 위해 별도의 namespace로 관리된다.
root@master001:~# kubectl get po --namespace kube-system
NAME READY STATUS RESTARTS AGE
coredns-74ff55c5b-rvkgk 1/1 Running 0 34d
coredns-74ff55c5b-wkx5w 1/1 Running 0 34d
etcd-master001 1/1 Running 0 34d
kube-apiserver-master001 1/1 Running 0 34d
kube-controller-manager-master001 1/1 Running 0 34d
kube-proxy-7qqhq 1/1 Running 0 34d
kube-proxy-892sm 1/1 Running 0 34d
kube-proxy-fflc8 1/1 Running 0 34d
kube-scheduler-master001 1/1 Running 0 34d
3.7.3 Namespace 생성하기
namespace 또한 쿠버네티스의 리소스로, yaml 파일을 이용해 생성할 수 있다.
root@master001:~# cat custom-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: custom-namespace
namespace 생성
root@master001:~# kubectl create -f custom-namespace.yaml
namespace/custom-namespace created
위와 같이 yaml 파일로 namaspace를 생성할 수 있지만, 좀 더 간단하게 명령어 한줄로 생성할 수도 있다.
root@master001:~# kubectl create namespace wglee-namespace
namespace wglee-namespace created
root@master001:~# kubectl get ns wglee-namespace
NAME STATUS AGE
wglee-namespace Active 20s
3.7.4 다른 namespace의 오브젝트 관리
특정 namespace 안에 리소스를 만들때는 metadata 속성에 설정을 하거나, kubectl create를 할 때 namespace를 지정하는 방법이 있다.
다음과 같이 -n 옵션으로 namespace를 지정하여 pod를 생성할 수 있다.
다른 namespace에 있는 리소스에 접근 하기 위해서는 -n 옵션을 사용한다.
root@master001:~/k8s_in_action/03_pod# kubectl create -f kubia-manual.yaml -n wglee-namespace
pod/kubia-manual created
root@master001:~/k8s_in_action/03_pod# kubectl get pod -n wglee-namespace
NAME READY STATUS RESTARTS AGE
kubia-manual 1/1 Running 0 24s
3.7.5 namespace가 제공하는 격리란?
namespace를 사용하면 오브젝트를 별도 그룹으로 분리해 특정 namespace에 속한 리소스에 대해서만 작업할 수 있다.
하지만 이는 실행 중인 오브젝트에 대한 격리는 아니다.
예를 들어, 서로 다른 namespace에 있다고 그 안의 pod 끼리의 통신이 불가능한 것은 아니다.
이는 쿠버네티스 환경에서 사용하는 네트워킹 솔루션의 영향을 받는다.
'🎯 OpenSource > K8S' 카테고리의 다른 글
06. liveness probe (0) | 2021.04.05 |
---|---|
05. Pod 중지, 제거 (0) | 2021.04.04 |
03. Label을 이용한 Pod 구성 (0) | 2021.04.04 |
02. YAML 또는 JSON 디스크립터로 Pod 생성하기 (0) | 2021.04.03 |
01. Pod_쿠버네티스에서 컨테이너 실행하기 (0) | 2021.03.27 |