728x90
Namespaces
네임스페이스란?
리소스를 각각의 분리된 영역으로 나누기 좋은 방법
여러 네임스페이스를 사용하면 복잡한 쿠버네티스 시스템을 더 작은 그룹으로 분할
멀티 테넌트(Multi-tenant) 환경을 분리하여 리소스를 생산, 개발, QA 환경 등으로 사용
리소스 이름은 네임스페이스 내에서만 고유 명칭 사용
현재 클러스터의 기본 네임스페이스 확인하기
$ kubectl get ns
NAME STATUS AGE
default Active 75m
kube-node-lease Active 75m
kube-public Active 75m
kube-system Active 75m
각 네임스페이스 상세 내용 확인
- kubectl get 을 옵션없이 사용하면 default 네임스페이스에 질의\
- 다른 사용자와 분리된 환경으로 타인의 접근을 제한
- 네임스페이스 별로 리소스 접근 허용과 리소스 양도 제어 가능
- --namespace나 -n을 사용하여 네임스페이스 별로 확인이 가능
$ kubectl get po --namespace kube-system
NAME READY STATUS RESTARTS AGE
coredns-74ff55c5b-bsm6g 1/1 Running 0 76m
coredns-74ff55c5b-btpq5 1/1 Running 0 76m
etcd-master 1/1 Running 0 76m
kube-apiserver-master 1/1 Running 0 76m
kube-controller-manager-master 1/1 Running 0 76m
kube-proxy-4frsb 1/1 Running 0 76m
kube-proxy-6ld5t 1/1 Running 0 75m
kube-proxy-fq6m7 1/1 Running 0 75m
kube-scheduler-master 1/1 Running 0 76m
weave-net-mxqkk 2/2 Running 0 75m
weave-net-qpmvn 2/2 Running 0 75m
weave-net-qq5bk 2/2 Running 0 75m
YAML 파일로 네임스페이스 만들기
- test_ns.yaml 파일을 생성하고 create 를 사용하여 생성
apiVersion: v1
kind: Namespace
metadata:
# 네임스페이스 이름
name: office
$ kubectl create -f test-ns.yaml
namespace/testr-ns created
$ kubectl get ns
NAME STATUS AGE
default Active 75m
kube-node-lease Active 75m
kube-public Active 75m
kube-system Active 75m
test-ns Active 4m17s
kubectl 명령어로 yaml 없이 바로 네임스페이스 생성 가능$ kubectl create namespace “test-namespace”
전체 네임스페이스 조회
- 전체 네임스페이스를 대상으로 kubectl을 실행하는 방법
$ kubectl get pod --all-namespaces
실습
- 네임스페이스 yaml 설정파일 생성
$ kubectl create ns office --dry-run=client -o yaml > office-ns.yaml
$ cat office-ns.yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: office
spec: {}
status: {}
- 네임스페이스 생성
$ kubectl create -f office-ns.yaml
namespace/office created
- 네임스페이스 자원 할당
$ kubectl create deploy nginx --image nginx -n office
deployment.apps/nginx created
- 네임스페이스로 생성된 POD 확인
$ kubectl get all -n office
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-vbch8 0/1 ContainerCreating 0 4s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 0/1 1 0 4s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6799fc88d8 1 1 0 4s
- 전체 네임스페이스 정보 조회
$ kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-74ff55c5b-bsm6g 1/1 Running 0 86m
kube-system pod/coredns-74ff55c5b-btpq5 1/1 Running 0 86m
kube-system pod/etcd-master 1/1 Running 0 86m
kube-system pod/kube-apiserver-master 1/1 Running 0 86m
kube-system pod/kube-controller-manager-master 1/1 Running 0 86m
kube-system pod/kube-proxy-4frsb 1/1 Running 0 86m
kube-system pod/kube-proxy-6ld5t 1/1 Running 0 85m
kube-system pod/kube-proxy-fq6m7 1/1 Running 0 85m
kube-system pod/kube-scheduler-master 1/1 Running 0 86m
kube-system pod/weave-net-mxqkk 2/2 Running 0 85m
kube-system pod/weave-net-qpmvn 2/2 Running 0 85m
kube-system pod/weave-net-qq5bk 2/2 Running 0 85m
office pod/nginx-6799fc88d8-vbch8 1/1 Running 0 2m43s
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 86m
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 86m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/kube-proxy 3 3 3 3 3 kubernetes.io/os=linux 86m
kube-system daemonset.apps/weave-net 3 3 3 3 3 <none> 85m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/coredns 2/2 2 2 86m
office deployment.apps/nginx 1/1 1 1 2m43s
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/coredns-74ff55c5b 2 2 2 86m
office replicaset.apps/nginx-6799fc88d8 1 1 1 2m43s
- 사용자 설정파일 수정
$ vi ~/.kube/config
context에 네임스페이스 추가
...
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
namespace: office
...
- 바뀐 네임스페이스 확인
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-vbch8 1/1 Running 0 9m17s
- 네임스페이스 삭제
네임스페이스를 삭제 하면 네임스페이스에 연결된 것들이 함께 삭제됨
$ kubectl delete ns office
namespace "office" deleted
$ kubectl get all -n office
No resources found in office namespace.
$ kubectl get all
No resources found in office namespace.
연습문제
- 현재 시스템에는 몇 개의 Namespace가 존재하는가?
$ kubectl get ns
NAME STATUS AGE
default Active 135m
kube-node-lease Active 135m
kube-public Active 135m
kube-system Active 135m
아래의 총 라인 수 조회를 한 뒤 1을 빼면 됨
$ kubectl get ns | wc -l -1
5
- kube-system에는 몇 개의 포드가 존재하는가?
아래의 총 라인 수 조회를 한 뒤 1을 빼면 됨
$ kubectl get pod -n kube-system | wc -l
13
모든 네임스페이스 라인 수와 동일
$ kubectl get pod --all-namespaces | wc -l
13
- ns-jenkins 네임스페이스를 생성하고 jenkins 포드를 배치하라.
- pod image: jenkins
- pod name: jenkins
Pod Templates 복사해서 사용
https://v1-17.docs.kubernetes.io/docs/concepts/workloads/pods/pod-overview/#pod-templates
ns-jenkins 네임스페이스 설정 파일 생성
$ kubectl create ns ns-jenkins --dry-run=client -o yaml > jenkins-ns.yaml
ns-jenkins.yaml 설정 파일에 pod 설정 내용을 추가하고 아래와 같이 수정
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: ns-jenkins
spec: {}
status: {}
---
apiVersion: v1
kind: Pod
metadata:
name: jenkins
namespace: ns-jenkins
spec:
containers:
- name: jenkins
image: jenkins
ports:
- containerPort: 8080
네임스페이스와 pod 생성
먼저 네임스페이스를 만들던지 같이 만들던지 해야지 pod 가 생성됨
$ kubectl create -f jenkins-ns.yaml
namespace/ns-jenkins created
pod/jenkins created
네임스페이스 및 pod 생성확인
$ kubectl get pod -n ns-jenkins
NAME READY STATUS RESTARTS AGE
jenkins 0/1 ImagePullBackOff 0 84s
- coredns는 어느 네임스페이스에 속해있는가?
$ kubectl get pod --all-namespaces | grep coredns
kube-system coredns-74ff55c5b-bsm6g 1/1 Running 0 161m
kube-system coredns-74ff55c5b-btpq5 1/1 Running 0 161m
728x90
'개발강의정리 > DevOps' 카테고리의 다른 글
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심개념-Network (0) | 2021.01.03 |
---|---|
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-Services (0) | 2020.12.27 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-애플리케이션 롤링 업데이트와 롤백 (0) | 2020.12.04 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-디플로이먼트 (0) | 2020.12.01 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-레플리케이션 컨트롤러와 레플리카셋 (0) | 2020.12.01 |
댓글