- 라벨은 파드뿐 아니라 쿠버네티스의 모든 리소스를 구성하는 간단하고 강력한 기능
- 리소스에 부여하는 임의의 Key/Value 쌍
- 라벨 셀렉터를 사용해 리소스를 선택할 때 사용
- 일반적으로 리소스를 만들 때 부여하지만, 이후에도 라벨을 추가 혹은 변경 가능
- 필터링에 사용. (라벨의 개수 = 차원)
- app는 파드가 속한 애플리케이션, 구성요소 또는 마이크로 서비스 지정
- rel은 파드에서 실행중인 애플리케이션의 안정적 버전, 베타 혹은 카나리 버전인지 여부
- app과 rel을 추가하면서 파드들을 2가지 차원으로 구성

- yaml 파일에 객체 선언 시에 metadata 내에 labels 키워드에 key/value 쌍으로 정의
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
env: prod
creation_method: manual
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo hi K8S ! &&sleep 3600']
labels:
app: myapp
env: prod
creation_method: manual
→ 3개의 라벨 선언
기존 파드에 라벨 추가
$kubectl label po <Pod-Name> <Label-Key>=<Label-Value>
ex) kubectl label goapp-pod env=prod
기존 파드에 라벨 수정
$kubectl label po <Pod-Name> <Label-Key>=<Label-Value> --overwrite
ex) kubectl label nginx-pod rel=stable --overwrite
라벨 셀렉터를 이용한 파드 조회
$kubectl get pod –l <Label-Key>=<Label-Value>
ex) kubectl get pod –l env=prod
라벨 셀렉터로 Key 값만 이용해서 조회
$kubectl get pod –l <Label-Key>
ex) kubectl get pod –l env
라벨 셀렉터로 연산자를 사용해서 조회
# env 라는 라벨 Key 가 없는 Pod 조회
$kubectl get po –l ‘!env’
연산식 예제
creation_method!=manual : manual 이외의 다른 값으로 creation_method 라벨이 있는 Pod 선택
env in (prod, dev) : env 라벨이 prod 또는 dev 로 설정된 모든 Pod를 선택
env notin (prod, dev) : env 라벨이 prod 또는 dev 가 아닌 다른 값으로 설정된 Pod 선택
- 쿠버네티스에서는 어떤 노드로 파드가 스케줄 될지 알 수 없음
- 라벨을 이용해 특정 노드로 스케줄링 가능
- GPU 유무, 메모리 (High-Memmory), SSD 유무를 노드의 라벨에 적용
노드에 라벨 추가
$kubectl label node worker01.acorn.com ssd=true
$kubectl get nodes –l ssd=true
SSD가 있는 노드에 파드 스케줄링
apiVersion: v1
kind: Pod
metadata:
name: goapp-pod
spec:
nodeSelector:
ssd: “true”
containers:
- image: dangtong/goapp
name: goapp
- 쿠버네티스의 객체 이름의 범위를 제공하는 것
- 동일한 리소스 이름을 여러 네임스페이스에서 여러번 사용 가능 (개발 / 검증 / 운영 ..)
- 멀티 - 테넌트 환경으로 분리하는 효과

네임스페이스 조회
$kubectl get ns
특정 네임스페이스에 있는 파드 조회.
$kubectl get po -n kube-system
네임스페이스 yaml 작성
apiVersion: v1
kind: Namespace
metadata:
name: prod-namespace
네임스페이스 생성
$kubectl create -f prod-namespace.yaml
다른 네임스페이스 관리
$kubectl create -f goapp-pod.yaml -n dev-namespace
다른 네임스페이스로 전환
$kubectl config set-context $(kubectl config current-context) -namespace <Namespace - Name>
손쉬운 네임스페이스 전환을 위한 Alias 설정
$alias kcd='kubectl config set-context $(kubectl config current-context) -namespace <Namespace - Nmae>
쉽게 전환
kcd namespace-prod
- Key/Value 쌍으로 라벨과 유사하지만, 셀렉터로 선택 불가능
- 라벨보다 훨씬 더 많은 정보를 담을 수 있음
- 주로 쿠버네티스 객체에 상세한 설명을 추가해 다른 사람이 알아보기 쉽게 하는 용도
- EX) 객체를 만든 사람의 이름을 기록해 공동 작업 시에 훨씬 수월한 작업
250kb 까지 작성 가능하지만, 되도록 짧고 간결하게 사용 할 것
주석 추가
$kubectl annotate pod goapp-pod mycompany.com/created-by=“HYEONGJUN NOH”
주석 조회
$kubectl describe pod goapp-pod