Namespace

Namespace는 쿠버네티스 클러스터 내에서 리소스들을 논리적으로 분리하는 가상 환경입니다. 하나의 물리적 클러스터를 여러 가상 클러스터로 나누어 사용할 수 있게 해줍니다.

특징

기본 네임스페이스

클라우드 네트워크 개념과 비교

네임스페이스 생성 예시

apiVersion: v1
kind: Namespace
metadata:
  name: development
  labels:
    env: dev

특정 네임스페이스에 리소스 생성 예시

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: development
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2

네임스페이스 리소스 할당량 설정 예시

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: development
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 5Gi
    limits.cpu: "8"
    limits.memory: 10Gi

네임스페이스 네트워크 정책 예시

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-from-other-namespaces
  namespace: development
spec:
  podSelector: {}
  ingress:
  - from:
    - podSelector: {}  # 같은 네임스페이스의 Pod만 허용

네임스페이스 관련 명령어

# 네임스페이스 생성
kubectl create namespace development

# 네임스페이스 목록 조회
kubectl get namespaces

# 특정 네임스페이스의 리소스 조회
kubectl get pods -n development

# 현재 컨텍스트의 기본 네임스페이스 변경
kubectl config set-context --current --namespace=development

# 모든 네임스페이스의 리소스 조회
kubectl get pods --all-namespaces

네임스페이스 제한사항

네임스페이스 사용 모범 사례