Kubernetes namespace

김신영·2024년 12월 5일

Kubernetes

목록 보기
6/6

쿠버네티스 네임스페이스(Namespace)

하나의 클러스터 내에서 리소스를 논리적으로 분리하고 관리하기 위한 도구
ex) 건물 안에 여러 개의 사무실이 있는 것처럼, 하나의 쿠버네티스 클러스터 안에 여러 개의 네임스페이스를 만들어 각각의 목적으로 사용할 수 있다.

네임스페이스가 필요한 이유

  • 리소스 격리: 각 네임스페이스는 독립적인 공간으로, 다른 네임스페이스의 리소스와 격리된다. 이를 통해 서로 다른 팀이나 프로젝트가 같은 클러스터를 공유하면서도 리소스 충돌을 방지할 수 있다.

  • 권한 관리: 각 네임스페이스에 대한 접근 권한을 다르게 설정하여, 특정 사용자나 팀에게만 특정 네임스페이스에 대한 접근을 허용할 수 있다.

  • 리소스 할당: 각 네임스페이스에 할당되는 리소스(CPU, 메모리 등)를 제한하여, 특정 네임스페이스가 다른 네임스페이스의 리소스를 과도하게 사용하는 것을 방지할 수 있다.

  • 환경 분리: 개발, 테스트, 운영 환경을 별도의 네임스페이스로 분리하여 관리할 수 있다.

네임스페이스 생성

  • 네임스페이스 생성: kubectl create namespace <네임스페이스 이름> 명령어를 사용하여 네임스페이스를 생성

  • 네임스페이스 선택: kubectl config set-context --current --namespace <네임스페이스 이름> 명령어를 사용하여 현재 작업 중인 네임스페이스를 변경

  • 네임스페이스 조회
    kubectl get namespaces

  • 특정 네임스페이스의 리소스 조회
    kubectl get pods -n my-namespace

  • YAML로 네임스페이스 생성

apiVersion: v1
kind: Namespace
metadata:
name: my-namespace

네임스페이스 사용 시 주의사항

  1. 일부 쿠버네티스 리소스는 네임스페이스에 속하지 않음 (예: Node, PersistentVolume)
  2. 네임스페이스를 삭제하면 그 안의 모든 리소스도 삭제됨
  3. 네임스페이스 간 네트워크 통신은 기본적으로 가능

네임스페이스 활용 전략

  1. 환경별 분리:

    • dev, staging, prod 네임스페이스 구분
    • 각 환경별 리소스 관리 용이
  2. 팀/프로젝트별 분리:

    • 팀별 독립적인 리소스 관리
    • 권한 관리 용이
  3. 리소스 쿼터 설정:

    • 네임스페이스별 리소스 사용량 제한 가능
    • 비용 관리와 리소스 남용 방지
profile
공부합시다.

0개의 댓글