이름과 UID
클러스터의 각 오브젝트 고유한 이름이 있음
Namespace 내에서만 고유하면 됨.
Namespace를 쓰는 이유는 오브젝트의 분리, DNS 이름의 분리를 위해서
기본적으로는 default를 사용한다.
오브젝트를 리소스로 만들 때 쿠버네티스의 컨트롤러 매니저는 해당되는 리소스에 UID를 붙이게 되고,
모든 쿠버네티스 오브젝트는 전체 클러스터에 걸쳐 고유한 UID를 가짐
Namespace
쿠버네티스 클러스터 내의 논리적인 분리 단위
리소스 분리 기준
1. 서비스 별
2. 사용자 별
3. 환경 : 개발, 스테이징, 프로덕션
네임스페이스 확인하기
$ kubectl get namespaces
--namespace 를 통해 해당 네임스페이스 내 리소스를 확인 가능
$ kubectl get pods --namespace default
모든 네임스페이스는 -A 로 확인 가능
kube-system: Kubernetes의 핵심 컴포넌트
kube-public: 모든 사용자가 읽기 권한
kube-node-lease: 노드의 HeartBeat 체크를 위한 Lease 리소스가 존재
default: 기본 작업 공간
lease
leases는 HB(Heart Beat) 즉, 노드가 죽어있는지 살아있는지 체크할 때 사용하는 리소스
Namespace 생성하기
명령형 커맨드로 생성하기
$ kubectl create namespace developments
yaml 파일로 생성하기
ns-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
$ kubectl create -f dev-ns.yaml
myweb-dev.yaml
apiVersion: v1
kind: Pod
metadata:
name: myweb
namesapce: dev
spec:
containers:
- name: myweb
image: httpd
ports:
- containerPort: 80
protocol: TCP
생성한 yaml 파일로 파드를 생성한다.
$ kubectl create -f myweb-dev.yaml
$ kubectl get ns
NAME STATUS AGE
default Active 14h
dev Active 3s
kube-node-lease Active 14h
kube-public Active 14h
kube-system Active 14h
namespace가 다르면 pod의 이름은 같아도 되고, 아래 2개의 myweb는 서로 다른 것
--> default 네임스페이스의 myweb과 dev 네임스페이스의 myweb
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myweb 1/1 Running 0 33m
$ kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
myweb 1/1 Running 0 38m
Namespace 삭제하기
단, 지울 때는 네임스페이스에 리소스가 없어야 함.
$ kubectl delete ns <NAMESPACE>
$ kubectl delete pods <Pod> -n <NAMESPACE>
'Cloud > Kubernates' 카테고리의 다른 글
[k8s, kubernates] 파드 라이프사이클 (0) | 2024.07.09 |
---|---|
[k8s, kubernates] 레이블 (0) | 2024.07.09 |
[k8s, kubernates] 파드 (0) | 2024.07.09 |
[k8s, kubernates] 오브젝트 (0) | 2024.07.09 |
[kubernates, k8s] 노드 (0) | 2024.07.08 |