ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Namespaces 네임스페이스란?
    TECH/Kubernetes 2022. 11. 4. 19:33

    Kubernetes에서 namespaces는 하나의 클러스터 내의 리소스 그룹을 분리하는 메커니즘을 제공한다. 리소스의 이름은 네임스페이스 내에서 유일하지만, 모든 네임스페이스에 걸쳐 유일한 것은 아니다. 네임스페이스 기반 스코핑은 namespace 기반 오브젝트(Deployments, Services, etc)에만 가능하며 클러스터 기반 오브젝트에는 사용할 수 없다.

     

    언제 네임스페이스를 사용해야 할 까?

    많은 유저가 여러팀, 프로젝트으로 나뉜 환경에서 사용되는 것이 목적이다. 사용자가 열명 정도로 얼마 안되는 클러스터에서는 네임스페이스를 사용할 필요가 전혀 없다. 네임스페이스가 제공하는 기능들이 필요할 때 사용을 시작해라.

    네임스페이스는 이름에 대한 범위를 제공한다. 리소스의 이름은 네임스페이스 내에서 유일해야 하지만, 여러 네임스페이스에 걸쳐 유일해야 하는 것은 아니다. 네임스페이스는 다른 네임스페이스 안에 중첩될 수 없고, 각 Kubernetes 리소스는 하나의 네임스페이스 내에서만 존재할 수 있다.

    네임스페이스는 여러 사용자 사이에서 클러스터 리소스를 나눌 방법을 제공한다. (resource quota를 통해)

    같은 소프트웨어의 다른 버전 처럼 약간 다른 리소스를 위해 여러 네임스페이스를 사용할 필요는 없다. 이런 경우에는 같은 네임스페이스 내의 리소스를 식별하기 위해 label을 사용해라.

     

    네임스페이스 확인하기

    kubectl get namespace
    
    # initial namespaces
    NAME              STATUS   AGE
    default           Active   1d
    kube-node-lease   Active   1d
    kube-public       Active   1d
    kube-system       Active   1d
    

    default : 네임스페이스가 설정되지 않은 오브젝트들의 기본 네임스페이스

    kube-system: Kubernetes 시스템에 의해 생성된 오브젝트의 네임스페이스

    kube-public : 자동으로 생성되고, 모든 사용자가 읽을 수 있다.(인증되지 않은 사용자 포함) 이 네임스페이스는 주로 전체 클러스터 중에 공개적으로 드러나서 읽을 수 있는 리소스를 위해 예약되어 있다. 이 네임스페이스의 퍼블릭 성격은 컨벤션일 뿐이고 반드시 지켜야 하는 것은 아니다.

    kube-node-release: 이 네임스페이스는 각 노드와 연관된 Lease 오브젝트를 가지고 있다. 노드 lease는 kubelet이 heartbeat를 보내도록 허용하여 control plane이 노드 장애를 탐지할 수 있게 한다.

     

    모든 오브젝트가 네임스페이스 내에 있는 것은 아니다

    대부분의 Kubernetes 리소스는 (pods, services, replication controllers 등) 어떤 네임스페이스 내에 존재할 수 있다. 하지만 네임스페이스 리소스 자체는 네임스페이스 에 속하지 않는다. 그리고 로우 레벨 리소스, 노드와 persistentVolume 과 같은 경우는 어떠한 네임스페이스에도 속하지 않는다.

    # 네임스페이스에 속하는 리소스
    kubectl api-resources --namespaced=true
    
    # 네임스페이스에 속하지 않는 리소스
    kubectl api-resources --namespaced=false
    

     

     

    원문

    https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

Designed by Tistory.