โœ”๏ธ

Lable

Lable

Node๋ฅผ ํฌํ•จํ•˜์—ฌ pod, deployment๋“ฑ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ํ• ๋‹น๊ฐ€๋Šฅ
Selector์˜ ์„ ํƒ์˜ ๊ธฐ์ค€์ด๋ฉฐ Key-value ํ˜•ํƒœ์ด๋‹ค.
63 ์ž ์ดํ•˜์—ฌ์•ผ ํ•˜๊ณ  (๊ณต๋ฐฑ์ผ ์ˆ˜๋„ ์žˆ์Œ)
(๊ณต๋ฐฑ์ด ์•„๋‹ˆ๋ผ๋ฉด) ์‹œ์ž‘๊ณผ ๋์€ ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž(
[a-z0-9A-Z])์ด๋ฉฐ
์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž, ๋Œ€์‹œ(
-), ๋ฐ‘์ค„(_), ์ (.)์„ ์ค‘๊ฐ„์— ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค
"metadata": {
  "labels": {
    "key1" : "value1",
    "key2" : "value2"
  }
}
Label Template
์ถœ์ฒ˜ : ์œ ํŠœ๋ธŒ ๋”ฐ๋ฐฐ๋Ÿฐ ๋”ฐ๋ฐฐ์ฟ  https://www.youtube.com/@ttabae-learn

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