본문 바로가기

K8S

쿠버네티스(Kubernetes) NameSpace

728x90

■ 쿠버네티스(Kubernetes) NameSpace 개요

  • 쿠버네티스 클러스터 내에서 리소스를 논리적으로 분리하는 방법이며, 네임스페이스는 고유한 이름을 가지며, 해당 네임스페이스 내에서만 오브젝트를 생성하고 관리할 수 있습니다
  • 네임스페이스는 클러스터 자원을 (리소스 쿼터를 통해) 여러 사용자 사이에서 나누는 방법이다.
  • 리소스의 이름은 네임스페이스 내에서 유일해야 하며, 네임스페이스 간에서 유일할 필요는 없음.
  • 네임스페이스 기반 오브젝트 (예: 디플로이먼트, 서비스 등)는 해당 네임스페이스 내에서만 존재하고 관리되고, 클러스터 범위 오브젝트 (스토리지, 노드, 퍼시스턴트 볼륨)는 네임스페이스와 상관없이 전체 클러스터에서 공유됨
  • 동일한 소프트웨어의 다른 버전과 같이 약간 다른 리소스를 분리하기 위해 여러 네임스페이스를 사용할 필요는 없다. 동일한 네임스페이스 내에서 리소스를 구별하기 위해 레이블을 사용한다.

 

■ 쿠버네티스(Kubernetes) NameSpace 종류

항목 설명
default 쿠버네티스에는 이 네임스페이스가 포함되어 있으므로 먼저 네임스페이스를 생성하지 않고도 새 클러스터를 사용할 수 있다. 네임스페이스를 지정하지 않고 pod 생성 시 할당되는 기본값이다.
kube-node-lease 각 노드와 연관된 리스 오브젝트(coordination.k8s.io API 그룹에 속하는 오브젝트)를 갖는다. 노드 리스는 kubelet이 하트비트(노드의 .status 정보 업데이트)를 보내서 컨트롤 플레인이 노드의 장애를 탐지할 수 있게 한다.
kube-public 모든 클라이언트(인증되지 않은 클라이언트 포함)가 읽기 권한으로 접근할 수 있다. 이 네임스페이스는 주로 전체 클러스터 중에 공개적으로 드러나서 읽을 수 있는 리소스를 위해 예약되어 있다. 
kube-system 쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스

 


■ 쿠버네티스(Kubernetes) NameSpace 명령어

  • kubectl get namespace: 현재 사용중인 클러스터의 네임스페이스 나열
  • kubectl get namespaces <name>: 특정 네임스페이스에 대한 요약 정보 확인
  • kubectl describe namespaces <name>: 상세 정보 확인, 리소스 한도 및 리소스 쿼터 정보 확인 가능
  • kubectl create namespace <insert-namespace-name-here>: 네임스페이스 생성, 네임스페이스 생성은 유효한 DNS 레이블 이여야 함. (최대 63자, 소문자와 숫자만 가능, 영어/숫자로 시작하고 끝나야함)
  • kubectl run nginx --image=nginx --namespace=<namespace-name>: Pod 생성 시 네임스페이스 지정
  • # yaml 코드를 통한 네임스페이스 생성
    apiVersion: v1
    kind: Namespace
    metadata:
      name: <insert-namespace-name-here>
  • kubectl get pods --namespace=<namespace-name>: Pod정보 조회 시 특정 네임스페이스 필터 수행 
  • kubectl delete namespaces <insert-some-namespace-name>: 네임스페이스 삭제. 삭제할 경우 네임스페이스의 모든 것이 삭제됨
  • 쿠버네티스의 대부분의 리소스는 네임스페이스에 소속되어 있지만 저수준의 리소스(노드, 스토리지, 퍼시스턴트 볼륨 등) 는 네임스페이스에 속하지 않는다. 
    • kubectl api-resources --namespaced=true : 네임스페이스에 속하는 리소스 조회
    • kubectl api-resources --namespaced=false : 네임스페이스에 속하지 않는 리소스 조회
728x90