728x90
Label 이란?
쿠버네티스에서 Label은 리소스(Deployment/Pod/Service 등)에 붙이는 키-값(key=value) 태그다.
라벨 자체는 "동작"을 만들진 않지만, 쿠버네티스는 라벨을 이용해서 대상을 선택하고 그룹화 한다.
라벨이 중요한 이유는 대표적으로 아래 기능들이 라벨을 사용하기 때문:
- Service selector: 어떤 Pod로 트래픽을 보낼지 선택
- Deployment / ReplicaSet selector: 어떤 Pod를 관리할지 선택
- (그 외) NetworkPolicy, affinity/anti-affinity, monitoring 필터링 등
Label 조회 기본 3종
1) 전체 라벨 같이 보기
kubectl get pods --show-labels
2) 특정 라벨을 컬럼으로 추가해서 보기(-L)
-L은 “표에 컬럼으로 보여주는 옵션”이다.
kubectl get pods -L app -L tier
3) 특정 라벨만 필터링해서 보기(-l)
-l은 “라벨 셀렉터로 골라서 조회”한다.
kubectl get pods -l app=web
✅ 정리
- -l(소문자 L) = 필터링(선택)
- -L(대문자 L) = 표에 컬럼 표시
라벨 추가/수정/삭제 (자주 쓰는 커맨드)
Pod에 라벨 추가
kubectl label pod <POD_NAME> app=web
Deployment에 라벨 추가
kubectl label deploy <DEPLOY_NAME> app=web
이미 라벨이 있는데 바꾸기 (--overwrite)
kubectl label deploy <DEPLOY_NAME> app=api --overwrite
라벨 삭제 (키 뒤에 -)
kubectl label pod <POD_NAME> app-
"Deployment에 라벨 붙이면 Pod도 붙나?"
여기서 많이 헷갈린다.
- kubectl label deploy web app=web
→ Deployment 리소스 자체의 metadata.labels에 라벨이 붙는다.
하지만 Service가 Pod를 붙일 때 보는 건 Deployment 라벨이 아니라 Pod 라벨이다.
Pod 라벨이 어디서 오냐?
Deployment는 내부에 spec.template.metadata.labels(Pod 템플릿 라벨)을 가지고 있고,
이 템플릿 라벨을 실제로 생성되는 Pod에 복사된다.
따라서 "Service selector를 맞추려면"결국 아래를 맞춰야 한다.
- Service의 spec.selector
- Pod의 metadata.labels (실제로는 Deployment 템플릿 라벨)
확인하는 방법
kubectl get deploy web -o yaml | grep -n "labels" -n
kubectl get pods -l app=web --show-labels
728x90
'CKA' 카테고리의 다른 글
| [k8s] Service : selector / endpoints / (port, targetPort) (0) | 2026.03.06 |
|---|---|
| [k8s] Taint & Toleration 정리 : Pod 스케줄링 제어와 Pending 디버깅 (0) | 2026.03.03 |
| [k8s] node label 붙이기 (0) | 2026.02.26 |
| [k8s] Deployment 정리(ReplicaSet, RollingUpdate, Rollback) (0) | 2026.02.23 |
| [k8s] 스케줄링 기본기: nodeSelector / nodeAffinity / podAntiAffinity로 Pod 배치 제어하기 (실습 포함) (0) | 2026.02.22 |