본문 바로가기
Containers/Kubernetes

3.4. namespace

by shinebee* 2020. 7. 24.

1. namespace란?

  • object를 논리적으로 분리할 수 있는 논리적 파티션.

 

 

2. namespace 확인

  • default : 기본 네임스페이스. 특정 네임스페이스를 지정하지 않으면 기본 네임스페이스를 사용한다.
  • 네임스페이스의 목록은 클러스터 배포 방법 / 도구나 쿠버네티스 버전에 따라 기본 제공되는 네임스페이스 목록이 조금씩은 다를 수 있다.

 

  • default : 기본 네임스페이스. 
  • kube-node-lease
    • kubernetes node의 가용성을 체크하기 위한 네임스페이스.
    • 하트비트를 위한 leases 오브젝트가 있다.
    • kubernetes 1.14 이상
    • kubectl get leases.coordination.k8s.io -n kube-node-lease
      -> 노드가 살아있는지 죽어있는지 확인.
  • kube-public
    • 모든 사용자(인증받지 않은 사용자도 포함)가 읽기 권한으로 접근할 수 있다.
    • 관례적으로 만들어져 있지만 아무 리소스도 없고, 꼭 사용해야하는 것은 아니다.
  • kube-system : kubernetes cluster의 리소스가 배치되는 네임스페이스
  • 그 외
    • ingress-nginx

 

 

3. namespace의 object 확인

  • kube-system namespace에 존재하는 pod의 목록 확인 

  • -n : namespace 지정하는 옵션. 사용하지 않으면 default namespace가 자동으로 지정
  • kube-system namespace는 kubernetes 시스템이 동작하기 위한 구성요소들이 pod 형태로 동작하고 있다.

 

  • 파드 이외의 다른 형식의 object 확인
kubectl get all -n kube-system 
  • kubectl get all 명령 : 실제 all 타입의 리소스는 없으며, 실제 모든 리소스를 지칭하지도 않는다.

 

  • 모든 namespace의 pod object
kubectl get pods --all-namespaces

 

 

4. namespace 생성

kubectl create namespace testname

 

  • 확인

 

  • YAML 파일을 이용하여 namespace 생성
# mynapp-ns.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: yamlname
kubectl create -f mynapp-ns.yaml
kubectl get namespaces  //확인

 

 

5. 특정 namespace에서 pod(및 object) 생성

  • 오브젝트 생성 시 특정 네임스페이스를 지정하면 해당 네임스페이스에 오브젝트를 생성할 수 있다.
kubectl create -f mynapp-pod.yaml -n testname
kubectl get pods -n development  //확인

 

  • YAML 파일의 pods.metadata.namespaces 필드에 직접 네임스페이스도 선언 가능하다.
# mynapp-pod-ns.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mynapp-pod
  namespace: testname
spec:
  containers:
  - image: httpd
    name: mynapp
    ports:
    - containerPort: 80
      protocol: TCP

 

 

6. resource 삭제

  • 세 가지 방법으로 삭제 가능하다.
    • 오브젝트 이름으로 삭제
    • 오브젝트 정의 파일(YAML or JSON)로 삭제
    • 오브젝트 레이블로 삭제

 

  • 오브젝트 이름으로 pod 삭제
 kubectl delete pods mynapp-pod
  • namespace를 지정하지 않았기 때문에 default 네임스페이스의 mynapp-pod 파드가 삭제된다.

 

  • YAML 파일로 삭제
kubectl delete -f mynapp-pod-ns.yaml
  • namespace는 YAML 파일 내에 지정되어있고 testname 네임스페이스의 mynapp-pod 파드가 삭제된다.

 

  • 오브젝트 레이블을 이용한 오브젝트 삭제
kubectl delete pods -l tier=frontend
  • default namespace에서 tier=frontend 레이블을 가지고 있는 모든 오브젝트를 삭제한다.

 

  • namespace 삭제
kubectl delete namespaces testname

'Containers > Kubernetes' 카테고리의 다른 글

4.2. Replication Controller  (0) 2020.07.24
4.1. Liveness Probe  (0) 2020.07.24
3.2. Label 및 Selector  (0) 2020.07.23
Pod  (0) 2020.07.23
명령형 명령어  (0) 2020.07.23

댓글