코딩/k8s

[Kubernetes] k8s namespace 와 kubectl 명령어

khseon7 2025. 11. 24. 23:53

Kubernetes(k8s)에서 Namespace는 클러스터 내 리소스를 격리하고 관리하기 위한 논리적 구분 단위로 단일 클러스터에서도 여러 프로젝트, 환경, 팀별 리소스를 깔끔하게 분리하고 권한을 관리할 수 있다.

출처 : stacksimplify.com

Namespace의 역할

  1. 리소스 격리
    • 같은 클러스터 안에서도 프로젝트별, 서비스별 리소스를 분리 관리 가능
    • ex. `dev`, `staging`, `prod` 를 나누어서 Pod, Service, Deployment 등을 구분
  2. 권한 관리
    • Role / RoleBinding을 namespace 단위로 적용 가능
    • 팀별 접근 권한 제어에 유용
  3. 리소스 관리
    • ResourceQuota와 LimitRange 적용 가능
    • 특정 namespace 내 CPU, 메모리, 저장소 사용량 제한 가능
  4. 서비스 구분
    • 동일 이름의 Pod/Service도 다른 namespace에 존재 가능
    • ex. `frontend` 서비스가 dev, staging, prod 각각 namespace에 존재

Namespace 조회/생성/삭제

# 클러스터 내 모든 namespace 조회
kubectl get namespaces
kubectl get ns  # 단축형

# 특정 namespace 생성
kubectl create namespace example-namespace
kubectl create ns example-namespace  # 단축형

# namespace와 내부 모든 리소스 삭제
kubectl delete namespace example-namespace
kubectl delete ns example-namespace  # 단축형

 

Namespace 지정해서 리소스 관리

# 특정 namespace에서 pod 조회
kubectl get pods -n example-namespace

# 특정 namespace에 Deployment, Service 등 적용
kubectl apply -f vllm.yaml -n example-namespace

# 특정 namespace에서 리소스 삭제
kubectl delete -f vllm.yaml -n example-namespace
namespace를 지정하지 않으면 기본 `default` namespace가 사용됨

 

Namespace context 변경

# 현재 kubectl context에서 기본 namespace 변경
kubectl config set-context --current --namespace=example-namespace

# 현재 namespace 확인
kubectl config view --minify | grep namespace:

 

Namespace 상세 정보 및 리소스 확인

# namespace 상태, 라벨, 리소스 쿼터 확인
kubectl describe namespace example-namespace

# 해당 namespace 내 모든 리소스 조회
kubectl get all -n example-namespace

# 모든 namespace에서 모든 리소스 조회
kubectl get all --all-namespaces