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