Lable
Lable
Node를 포함하여 pod, deployment등 모든 리소스에 할당가능
Selector의 선택의 기준이며 Key-value 형태이다.
63 자 이하여야 하고 (공백일 수도 있음)
(공백이 아니라면) 시작과 끝은 알파벳과 숫자([a-z0-9A-Z])이며
알파벳과 숫자, 대시(-), 밑줄(_), 점(.)을 중간에 포함할 수 있다
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2"
}
}- 일반적인 레이블 예시
"release" : "stable","release" : "canary"
"environment" : "dev","environment" : "qa","environment" : "production"
-
"tier" : "frontend","tier" : "backend","tier" : "cache"

Pod lable
| CLI로 실행한 cmdpod 라벨없는 pod-demo 라벨포함 label-pod-demo |
#Lable을 포함한 pod 조회
kubectl get pods --show-labels
cmdpod 1/1 Running 0 run=cmdpod
label-pod-demo 1/1 Running 0 name=mainui,rel=stable
pod-demo 1/1 Running 0 <none>
kubectl get pods -l name=mainui #<-- 동일구문 kubectl get pods --selector name=ui
#Label 넣어주기
kubectl label pod pod-demo name=test
#Label 수정하기
#기존 라벨이름과 중복된다면 overwrite 옵션 필수
kubectl label pod pod-demo name=login --overwrite
#여러 라벨은 띄어쓰기로 나열
kubectl label pod cmdpod name=order rel=beta
#라벨제거 --> 라벨의 키 뒤에 -
kubectl label pod pod-demo name-#Label
metadata:
labels:
rel: stable
name: mainui
#Selector
selector:
matchLabels:
key: value
matchExpressions:
- {key: name, operator: In, values: [mainui]}
- {key: rel, operator: NotIn, values: ["beta","canary"]}Node Lable
Worker Node의 특성을 Label로 설정
예를들어 Node들의 하드웨어들이 각각 다르다고 가정했을때
특정노드는 gpu와 ssd를 가지고 있을때, 이를 Label로 설정해두고
해당 노드를 선택해서 파드를 배치할 수 있다.
#Label 정보를 포함해서 조회
kubectl get nodes --show-labels
#노드1에 label을 먹이고
kubectl label nodes node1.example.com gpu=true disk=ssd
#노드2에 label을 먹이고
kubectl label nodes node2.example.com disk=ssd
#조회 해보면, 각 node의 label에 추가된 것을 볼 수 있다.
kubectl get nodes --show-labels
#특정 Label만 조회
kubectl get nodes -L cpu,disk#node selector 구성한 파드 실행
cat nodeselector.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-nodeselector
spec:
nodeSelector:
gpu: "true"
disk: ssd
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
kubectl get pods -o wide #<--- node1에서 실행 된 것을 알 수 있다.
#만약 node selector에 적합한 node가 1개도 없다면?
# --> 문법적인 오류가 없기에 pod는 실행되나, STATUS가 Pending 상태로 대기 상태가 된다.Annotation
Label과 동일하게 key-value
🌟Kubernetes에게 특정 정보를 전달할 용도로 사용
#롤링업데이트의 사유를 kubernetes에 전달
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
annotations:
kubernetes.io/change-cause: version 1.15
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
labels:
app: webui
spec:
containers:
- name: web
image: nginx:1.15
ports:
- containerPort: 80#관리를 위해 필요한 정보를 기록할 용도로 사용(릴리즈,로깅,모니터링에 필요한 정보)
apiVersion: v1
kind: Pod
metadata:
name: pod-annotation
annotations:
builder: "bluedove (bluedove97@acornsoft.io)"
buildDate: "20221205"
imageRegistry: https://hub.docker.com/
spec:
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80