Certified Kubernetes Administration - 16

2024-06-20

  • Kubernetes
  • Cloud

Kubernetes의 네임스페이스(Namespace) 개념 설명

비유를 통한 이해

  • 두 명의 마크: 마크 스미스와 마크 윌리엄스를 구별하기 위해 성을 사용.

  • 각각의 집: 스미스와 윌리엄스의 집.

  • 내부 호칭: 집 내부에서는 이름만 사용.

  • 외부 호칭: 외부에서는 풀네임 사용.

  • 규칙과 자원: 각 집은 고유한 규칙과 자원을 가짐.

Kubernetes와의 비교

  • 네임스페이스: 집과 유사한 개념으로, Kubernetes 클러스터 내에서 리소스를 구분하고 관리.

  • 디폴트 네임스페이스: 클러스터가 처음 설정될 때 자동으로 생성.

  • kube-system 네임스페이스: 네트워킹 솔루션, DNS 서비스 등 내부 용도로 사용.

  • kube-public 네임스페이스: 모든 사용자에게 공개되어야 하는 리소스를 위한 공간.

네임스페이스의 필요성

  • 소규모 환경: 기본 네임스페이스를 사용해도 무방.

  • 대규모 환경: 개발(dev) 및 운영(production) 환경을 분리하여 리소스를 관리.

  • 정책과 할당: 각 네임스페이스에 고유한 정책과 자원 할당.

네임스페이스 내에서 리소스 접근

  • 내부 접근: 같은 네임스페이스 내에서는 이름만으로 접근 가능.

  • 외부 접근: 다른 네임스페이스의 리소스 접근 시 servicename.namespace.svc.cluster.local 형식을 사용.

네임스페이스 관련 명령어

  • 기본 명령어:

    kubectl get pods
    
  • 특정 네임스페이스의 파드 목록 보기:

    kubectl get pods -n kube-system
    
  • 파드 생성:

    kubectl apply -f pod-definition.yaml
    
  • 네임스페이스 지정하여 파드 생성:

    kubectl apply -f pod-definition.yaml -n dev
    
  • 네임스페이스 정의 파일 예제:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: dev
    
  • 네임스페이스 생성 명령어:

    kubectl create -f namespace.yaml
    
  • 명령어를 통한 네임스페이스 생성:

    kubectl create namespace dev
    
  • 네임스페이스 전환:

    kubectl config set-context --current --namespace=dev
    
  • 모든 네임스페이스의 파드 목록 보기:

    kubectl get pods --all-namespaces
    

자원 할당(Quota) 설정

  • 리소스 할당 정의 파일:
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: quota
      namespace: dev
    spec:
      hard:
        pods: "10"
        requests.cpu: "10"
        requests.memory: "10Gi"
    

Certified ...

Certified ...