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?