728x90
네임스페이스
namespace: 네임스페이스
네임스페이스란
- 오브젝트를 논리적으로 분리할 수 있는 논리적 파티션
네임스페이스
- 기본 네임스페이스
항목 | 설명 |
default | 기본 네임스페이스 |
kube-node-lease | - 쿠버네티스 노드의 가용성을 체크하기 위한 네임스페이스 - 해당 네임스페이스에는 하트비트를 위한 리스 오브젝트가 있음 - 쿠버네티스 1.14 이상 |
kube-public | - 모든 사용자(인증받지 않은 사용자 포함)가 읽기 권한으로 접근할 수 있음 - 관례적으로 만들어져 있찌만 아무 리소스도 없고, 꼭 사용해야하는 것은 아님 |
kube-system | 쿠버네티스 클러스터의 핵심 리소스 배치 |
- 추가 네임스페이스
항목 | 설명 |
ingress-nginx | 쿠버네티스 인그레스 리소스를 위한 Nginx 인그레스 컨트롤러 배치 |
rook-ceph | Rook Ceph 스토리지 관련 리소스 배치 |
네임스페이스 사용
- 기본 네임스페이스 확인
vagrant@kube-master1:~$ kubectl get namespaces
NAME STATUS AGE
default Active 23h
ingress-nginx Active 23h
kube-node-lease Active 23h
kube-public Active 23h
kube-system Active 23h
- 네임스페이스 생성
vagrant@kube-master1:~/test$ vi testnamespace.yml
- yml 파일을 이용하여 네임스페이스 생성
vagrant@kube-master1:~/test$ kubectl create -f testnamespace.yml
namespace/test-ns created
- 네임스페이스 목록 출력
- 생성된 test-ns 네임스페이스 확인
vagrant@kube-master1:~/test$ kubectl get namespaces
NAME STATUS AGE
default Active 23h
ingress-nginx Active 23h
kube-node-lease Active 23h
kube-public Active 23h
kube-system Active 23h
test-ns Active 34s
- 파드는 같은 이름으로 중복 생성되지 않음
- 현재 default 네임스페이스에서 testapp-pod가 실행되고 있음
vagrant@kube-master1:~/test$ kubectl create -f testapp-pod.yml
Error from server (AlreadyExists): error when creating "testapp-pod.yml": pods "testapp-pod" already exists
- test-ns 네임스페이스에 testapp-pod 파드 생성
- 네임스페이스는 논리적으로 격리된 공간이므로 default 네임스페이스에 생성된 파드의 이름과 동일해도 파드가 생성됨
vagrant@kube-master1:~/test$ kubectl create -f testapp-pod.yml -n test-ns
pod/testapp-pod created
- test-ns 네임스페이스에서 실행 중인 testapp-pod 파드 확인
vagrant@kube-master1:~/test$ kubectl get pods -n test-ns
NAME READY STATUS RESTARTS AGE
testapp-pod 1/1 Running 0 12s
vagrant@kube-master1:~/test$ kubectl get pods testapp-pod -n test-ns1 -o yaml | grep -i namespace
namespace: test-ns1
selfLink: /api/v1/namespaces/test-ns1/pods/testapp-pod
vagrant@kube-master1:~/test$ kubectl get pods testapp-pod-ns -n test-ns2 -o yaml |
grep -i namespace
namespace: test-ns2
selfLink: /api/v1/namespaces/test-ns2/pods/testapp-pod-ns
실습
namespace 생성
- yml 파일을 이용하여 myns1 네임스페이스 생성
vagrant@kube-master1:~/exam$ vi exam-ns.yml
apiVersion: v1
kind: Namespace
metadata:
name: myns1
vagrant@kube-master1:~/exam$ kubectl create -f exam-ns.yml
namespace/myns1 created
- 명령을 이용한 myns2 네임스페이스 생성
vagrant@kube-master1:~/exam$ kubectl create namespace myns2
namespace/myns2 created
- 네임스페이스 생성 확인
vagrant@kube-master1:~/exam$ kubectl get namespaces
NAME STATUS AGE
default Active 24h
ingress-nginx Active 24h
kube-node-lease Active 24h
kube-public Active 24h
kube-system Active 24h
myns1 Active 11m
myns2 Active 6m33s
pod 생성
- default namespace에 exam-pod 생성
vagrant@kube-master1:~/exam$ kubectl create -f exam-pod.yml
- myns1 namespace에 exam-pod 생성
- 조건: 명령어에 -n 옵션 부여
vagrant@kube-master1:~/exam$ kubectl create -f exam-pod.yml -n myns1
pod/exam-pod created
- myns2 namespace에 exam-pod 생성
- 조건: yml 파일을 이용하여 파드 생성
vagrant@kube-master1:~/exam$ vi exam-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: exam-pod
namespace: myns2
spec:
containers:
- name: default
image: c1t1d0s7/myweb
ports:
- containerPort: 8081
protocol: TCP
vagrant@kube-master1:~/exam$ kubectl create -f exam-pod.yml
pod/exam-pod created
실행 중인 파드 정보 확인
- 네임스페이스: default
vagrant@kube-master1:~/exam$ kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
exam-pod 1/1 Running 0 9s
- 네임스페이스: myns1
vagrant@kube-master1:~/exam$ kubectl get pods -n myns1
NAME READY STATUS RESTARTS AGE
exam-pod 1/1 Running 0 7m8s
- 네임스페이스: myns2
vagrant@kube-master1:~/exam$ kubectl get pods -n myns2
NAME READY STATUS RESTARTS AGE
exam-pod 0/1 ContainerCreating 0 5s
리소스 삭제
- myns2
- 명령을 이용해 myns2 네임스페이스 삭제
- & 옵션을 이용해 네임스페이스와 파드가 삭제되는 동안 다른 명령을 수행할 수 있도록 함
- & 옵션을 사용하지 않으면 리소스가 삭제되는 동안 다른 작업 불가
vagrant@kube-master1:~/exam$ kubectl delete namespaces myns2 &
[1] 11067
vagrant@kube-master1:~/exam$ namespace "myns2" deleted
- myns1
- myns1 네임스페이스를 생성한 yml 파일을 이용하여 삭제
vagrant@kube-master1:~/exam$ kubectl delete -f exam-ns.yml
namespace "myns1" deleted
- default
- exam-pod.yml 파일에서 namespace: myns2 부분을 지우고 저장
vagrant@kube-master1:~/exam$ vi exam-pod.yml
vagrant@kube-master1:~/exam$ kubectl get pods
No resources found in default namespace.
728x90
'쿠버네티스 교육 > 강의 내용 정리' 카테고리의 다른 글
220622_2_k8s_파드의 생명 주기와 프로브-livenessProbe, startupProbe (0) | 2022.06.22 |
---|---|
220622_1_k8s_deployment, replicaset, pod (0) | 2022.06.22 |
220621_2_k8s_파드_레이블, 어노테이션 (0) | 2022.06.21 |
220621_1_k8s_파드_개념, 기본 템플릿 사용 (0) | 2022.06.21 |
220617_5_도커_Docker Compose 설치 (0) | 2022.06.20 |