NodeSelector

nodeSelector๋Š” ๋…ธ๋“œ ์„ ํƒ ์ œ์•ฝ์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ถŒ์žฅ ํ˜•์‹์ž…๋‹ˆ๋‹ค. nodeSelector๋Š” PodSpec์˜ ํ•„๋“œ๊ฐ’์œผ๋กœ ํ‚ค-๊ฐ’ ์Œ์˜ ๋งต์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Pod๊ฐ€ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๋…ธ๋“œ์— ํ‘œ์‹œ๋œ ๊ฐ ํ‚ค-๊ฐ’ ์Œ์ด ๋ ˆ์ด๋ธ”๋กœ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ถ”๊ฐ€ ๋ ˆ์ด๋ธ”๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ).

1. ๋…ธ๋“œ์— ๋ ˆ์ด๋ธ” ๋ถ€์ฐฉ

kubectl get nodes๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

kubectl get nodes

์ด ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์— ์ƒˆ ๋ ˆ์ด๋ธ” disktype = ssd๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋จผ์ € selector ์˜ต์…˜์œผ๋กœ ์ด์ „ ํ•ญ๋ชฉ์„ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ ˆ์ด๋ธ”์ด ์–ด๋–ค ๋…ธ๋“œ์—๋„ ํ• ๋‹น๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

kubectl get nodes --selector disktype=ssd

๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์— ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค.

# export the first node name as a variable
export FIRST_NODE_NAME=$(kubectl get nodes -o json | jq -r '.items[0].metadata.name')

# add the label to the node
kubectl label nodes ${FIRST_NODE_NAME} disktype=ssd

๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2. ๋ ˆ์ด๋ธ”์ด ์žˆ๋Š” ๋…ธ๋“œ์— nginx Pod ๋ฐฐํฌ

์ด์ œ ํŒŒ๋“œ ์‚ฌ์–‘์—์„œnodeSelector๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ํŒŒ๋“œ ์ƒ์„ฑ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค.

cat <<EoF > ~/environment/pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd
EoF

kubectl apply -f ~/environment/pod-nginx.yaml

๊ทธ๋ฆฌ๊ณ  ํŒŒ๋“œ๋Š” ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•œ ๋…ธ๋“œ์— ์˜ˆ์•ฝ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl get pods -o wide

๊ฒฐ๊ณผ๋กœ ์œ„์—์„œ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•œ ๋…ธ๋“œ์— ํŒŒ๋“œ๊ฐ€ ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Last updated

Was this helpful?