K8s metaspace name 과 labels

devswansong·2025년 1월 10일

K8s 의 오브젝트는 namespace 에서 존재하며 name 으로 식별됩니다. 반면 labes중복을 허용하며 검색, 그루핑 등에서 사용됩니다.

metadata.name

  • 오브젝트의 식별자
  • 한 namespace 안에서 중복될 수 없습니다.
apiVersion: v1
kind: Pod
metadata:
  name: popod
spec:
  containers:
    - name: nginx
      image: nginx:latest

특정 오브젝트 조회

kubectl get Pod popod

굳이 오브젝트 타입을 적어줘야할까요?
오브젝트 타입으로 조회하는 명령어에 확장된 기능이라 그런건가 잘 모르겠습니다.
-n, --namespace 명령어로 조회 namespace 를 지정할 수 있습니다.
기본값은 default namespace 입니다.

metadata.labels

  • 중복이 가능하며 복수의 label 을 가질 수 있습니다.
  • 검색, 그루핑, 필터링 등에 사용됩니다.
apiVersion: v1
kind: Pod
metadata:
  name: popod
  labels:
    app: web-server
    env: production
spec:
  containers:
    - name: nginx
      image: nginx:latest

label selector 를 응용한 조회

kubectl get pods -l app=web-server

실용적인 포인트

  1. label 도 되도록 작성합시다.
    label 의 검색, 그루핑 기능이 참 유용하니 되도록 작성합시다.
  2. label 필터링에 참 좋습니다.
    배포 환경, 서비스 이름, 팀 이름 을 label 로 지정하면 리소스를 관리하기 좋습니다.
  3. scale out 같은 상황에 좋은 label
    scale out 이 일어나면 Pod 의 name 은 바뀔 수 있지만 label 로 묶어 다룰 수 있습니다.이 덕분에 service 오브젝트를 통해 언제나 트래픽을 받을 수 있습니다.
  4. label 을 통해 일괄적 리소스 제거
    label 을 통해 일괄적으로 처리하기 참 좋으니 가능한 작성합시다.
kubectl delete pod -l app=web-server

정리

  1. name
    • namespace 내에서 유일하며 오브젝트를 식별하는 값
  2. labels
    • 여러 리소스에서 중복되어도 되며 한 개 이상을 가져도된다.
    • key-value 형태입니다.
    • 검색, 필터링, 그루핑 시 좋으니 꼭 사용합시다.
profile
unagi.zoso == ziggy stardust == devswansong

0개의 댓글