DevOps/K8S

[k8s] Namespace

kyoulho 2024. 8. 28. 21:07

네임스페이스는 쿠버네티스(Kubernetes) 클러스터에서 리소스를 그룹화하고 논리적으로 구분하는 방법을 제공하는 기능이다. 네임스페이스를 사용하면 동일한 클러스터 내에서 서로 다른 프로젝트, 팀, 또는 환경(예: 개발, 테스트, 프로덕션) 간에 리소스를 격리할 수 있다.

 

네임스페이스의 주요 기능

  1. 리소스 격리:
    • 네임스페이스는 쿠버네티스 리소스를 논리적으로 구분하여 서로 간섭하지 않도록 한다. 예를 들어, 동일한 이름의 파드(Pod)나 서비스(Service)를 다른 네임스페이스에 중복 생성할 수 있다.
  2. 접근 제어:
    • RBAC(Role-Based Access Control)을 통해 네임스페이스별로 권한을 설정할 수 있다. 이를 통해 특정 사용자나 그룹이 특정 네임스페이스에서만 리소스를 관리하도록 제한할 수 있다.
  3. 리소스 할당:
    • 네임스페이스 단위로 리소스 할당을 제한하거나 관리할 수 있다. 예를 들어, CPU와 메모리 사용량을 네임스페이스별로 제한하여 특정 팀이 클러스터 자원을 독점하지 않도록 할 수 있다.
  4. 조직화:
    • 네임스페이스를 사용하여 클러스터 내의 리소스를 조직화하고, 프로젝트나 팀별로 리소스를 쉽게 관리할 수 있다.

 

기본 네임스페이스

쿠버네티스 클러스터에는 기본적으로 몇 가지 네임스페이스가 생성되며, 각 네임스페이스는 특정 목적을 가진다. 예를 들어 default, kube-system, kube-public 등이 있다.

  1. default(기본 네임스페이스)
    • 쿠버네티스 클러스터에서 네임스페이스를 명시하지 않고 리소스를 생성할 때 자동으로 사용되는 기본 네임스페이스이다.
    • 개발, 테스트, 또는 간단한 배포에 자주 사용된다.
    • 많은 경우, 클러스터 관리자는 리소스 관리를 위해 별도의 네임스페이스를 만들지만, default 네임스페이스는 여전히 기본적으로 존재한다.
  2. kube-public(공용 정보 저장소)
    • 클러스터 내의 모든 사용자가 접근할 수 있는 공용 네임스페이스이다.
    • 주로 클러스터 정보나 설정 등을 저장하는 데 사용된다.
    • 예를 들어, 클러스터 부팅 시 자동으로 생성되는 cluster-info ConfigMap이 여기에 저장된다. 이는 인증되지 않은 사용자도 읽을 수 있다.
  3. kube-node-lease(노드 상태 추적)
  • 쿠버네티스 클러스터의 각 노드는 kube-node-lease 네임스페이스에 lease 객체를 생성하여 자신의 상태를 추적한다.
  • 이 lease 객체는 노드의 상태를 더 빠르고 효율적으로 모니터링하는 데 사용된다.
  • 이를 통해 노드 장애 감지가 더 신속하게 이루어지며, 클러스터의 성능이 향상된다.
  1. kube-system (쿠버네티스 시스템 관리)
  • 클러스터를 운영하는 데 필수적인 시스템 구성 요소들이 실행되는 네임스페이스이다.
  • 여기에는 kube-apiserver, kube-controller-manager, kube-scheduler, etcd, 네트워킹 및 DNS 관련 파드 등이 포함된다.
  • 이 네임스페이스는 클러스터 관리자가 주의 깊게 모니터링해야 하며, 클러스터의 안정성과 성능에 직접적인 영향을 미친다.

 

네임스페이스 예외 사항

네임스페이스는 클러스터 범위의 리소스에는 적용되지 않는다. 예를 들어, 노드(Node)나 PersistentVolume(PV)와 같은 리소스는 네임스페이스에 종속되지 않는다.

'DevOps > K8S' 카테고리의 다른 글

[k8s] Pod  (0) 2024.08.29
[k8s] NodePort  (0) 2024.08.29
[k8s] Service  (0) 2024.08.28
[k8s] 배포 흐름  (0) 2024.08.28
[K8s] 설치 시 스왑 비활성화의 필요성  (0) 2024.08.26