728x90
Kubernetes Namespace란
쿠버네티스 클러스터를 논리적으로 분할하는 파티션이다. 즉, 클러스터 내에서 오브젝트를 논리적으로 파티셔닝해서 사용할 수 있다.
주의 ) 도커컨테이너의 리눅스 네임스페이스와는 관련이 없다. 쿠버네티스의 네임스페이스 개념은 따로 이해해야 한다.
클러스터의 Namespace 정보 확인하기
$ kubectl get namespace
vagrant@kube-control1:~/work/mj$ kubectl get namespace
NAME STATUS AGE
default Active 24h
kube-node-lease Active 24h
kube-public Active 24h
kube-system Active 24h
- default : 별도로 네임스페이스를 지정하지 않으면 기본 네임스페이스인 default namespace를 사용한다.
- kube-node-lease: 쿠버네티스 노드의 가용성을 체크하기 위한 네임스페이스
이 네임스페이스의 목적이 이해가 잘 안되서 좀 더 찾아보았다.
각각의 Node들은 이에 대응하는 Lease object라는 것이 있다. 이 Lease object는 kube-node-lease 네임스페이스에 있다.
lease object의 역할을 이해하면 이 네임스페이스에 대한 역할을 이해할 수 있다.
kubelet heart beat 가 쿠버네티스의 Node가 제대로 돌아가는 상태인지 아닌지 (= 가용성) 확인하기 위해서 Lease object에 Node의 상태를 update를 해달라고 요청을 한다. 즉, Lease object는 가용성을 확인할 것이며 kube-node-lease에 배치되어있다. - kube-public : 모든 사용자들이 읽기전용으로 접근 가능
- kube-system : 쿠버네티스 클러스터의 핵심 object가 만들어지는 네임스페이스
namespace를 지정하여 pod object 목록 확인하기
kubectl get pods 명령어에서 namespace를 따로 지정하지 않으면 default namespace의 내용을 출력한다.
-n 옵션 뒤에 namespace를 지정한다.
$ kubectl get pods -n kube-system
모든 namespace에 있는 pod object 의 목록 확인하기
$ kubectl get pods -A
주의 !!) $ kubectl get all 은 모든 종류의 오브젝트를 다 보여주는 것이 아니다. 쿠버네티스의 가장 기본적인 오브젝트인 pod, controller object, 쿠버네티스 네트워크 관련된 설정을 하는 service object 을 보여준다.
namespace 생성하기
1. command로 namespace 생성
$ kubectl create namespace NAMESPACE_NAME
2. Manifest File을 이용하여 네임스페이스를 생성
new_ns.yaml 파일 내용을 다음과 같이 구성한다.
apiVersion: v1
kind: Namespace
metadata:
name: new_namespace
Manifest File을 이용하여 생성한다.
$ kubectl create -f new-ns.yaml
특정 namespace 에서 오브젝트 생성하기
1. command 로 생성하기
$ kubectl create -f MANIFEST_FILE -n NAME_SPACE
2. Manifest File로 생성하기
apiVersion: v1
kind: Pod
metadata:
name: myapp
namespace: development
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
protocol: TCP
.yaml 파일 (Manifest File) 을 이용하여 pod을 생성하면 지정한 namespace에 생성된다.
$ kubectl create -f myapp.yaml
네임스페이스 삭제하기
1. command 로 삭제
$ kubectl delete namespace NAMESPACE_NAME
2. namespace에 대해 정의한 manifest file 을 이용하여 삭제하기
$ kubectl delete -f NAMESPACE_MANIFESTFILE
namespace를 삭제하면 namespace 안에 있는 object들도 제거가 된다. 실제 실행순서는 object들이 먼저 제거된 후 namespace가 삭제되는 것이다.
728x90
'Cloud Engineering > Kubernetes ⚙️' 카테고리의 다른 글
[Kubernetes] 컨테이너 프로브 (Container Probe) (0) | 2023.02.11 |
---|---|
[Kubernetes] Pod Lifecycle (Pod의 생명주기) 와 컨테이너의 상태 (0) | 2023.02.11 |
[Kubernetes] Annotation 추가하기 (0) | 2023.02.09 |
[Kubernetes] Pod 생성 및 삭제하기 (0) | 2023.02.09 |
[Kubernetes] Label 생성과 Label 검색하기 (Selector) (0) | 2023.02.09 |