μš”μ•½

namespace=<λ„€μž„μŠ€νŽ˜μ΄μŠ€>
daemonset_name=<데λͺ¬μ…‹ 배포 λͺ…>
 
# 데λͺ¬μ…‹ νŒŒλ“œ 0으둜 쑰절
kubectl -n "${namespace}" patch daemonset "${daemonset_name}" -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'
 
# 데λͺ¬μ…‹ νŒŒλ“œ μž¬μ‹€ν–‰
kubectl -n "${namespace}" patch daemonset "${daemonset_name}" --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'

이슈

Statefulset μ΄λ‚˜ Replicaset 은 scale 을 μ‚¬μš©ν•˜μ—¬ νŒŒλ“œλ₯Ό λͺ¨λ‘ μ’…λ£Œν•˜κ±°λ‚˜ μ›ν•˜λŠ” μ‚¬μ΄μ¦ˆλ‘œ 쑰절이 κ°€λŠ₯ν•˜λ‹€.

kubectl scale --replicas <μ›ν•˜λŠ” 숫자> -n <λ„€μž„μŠ€νŽ˜μ΄μŠ€> statefulset <statefulset λ„€μž„>

Daemonset 을 scale ν•œλ‹€λŠ” 것은 말이 μ•ˆλ˜μ§€λ§Œ (기본적으둜 λ…Έλ“œ λ‹Ή 1개의 νŒŒλ“œλ₯Ό κ΅¬λ™ν•˜λŠ” ν˜•νƒœμ΄λ―€λ‘œ) PVC λ³Όλ₯¨μ„ κ΅μ²΄ν•œλ‹€κ±°λ‚˜ κΈ°λŠ₯을 μΌμ‹œ μ€‘λ‹¨ν•˜κΈ° μœ„ν•΄μ„œ λͺ¨λ“  νŒŒλ“œλ₯Ό μž μ‹œ κΊΌμ•Όν•˜λŠ” 상황이 생겼을 λ•Œμ˜ 처리 방법이 ν•„μš”ν–ˆλ‹€.

ν•΄κ²°

ν•΄λ‹Ή 데λͺ¬μ…‹ λͺ…μ„Έμ˜ nodeSelector λ₯Ό μˆ˜μ •ν•˜μ—¬ ν•΄λ‹Ήν•˜λŠ” λ…Έλ“œκ°€ μ•„μ˜ˆ μ‘΄μž¬ν•˜μ§€ μ•Šλ„λ‘ ν•˜μ—¬ 전체 λ…Έλ“œμ— μ‘΄μž¬ν•˜λŠ” 데λͺ¬μ…‹ νŒŒλ“œλ₯Ό μ‚­μ œν•  수 μžˆλ‹€.

(이런 μ‹μœΌλ‘œ μ‘μš©ν•  수 μžˆμ„κ±°λΌκ³€ 생각지도 λͺ»ν–ˆλ‹€.. μ™€μš°)

namespace=<λ„€μž„μŠ€νŽ˜μ΄μŠ€>
daemonset_name=<데λͺ¬μ…‹ 배포 λͺ…>
 
# 데λͺ¬μ…‹ νŒŒλ“œ 0으둜 쑰절
kubectl -n "${namespace}" patch daemonset "${daemonset_name}" -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'
 
# 데λͺ¬μ…‹ νŒŒλ“œ μž¬μ‹€ν–‰
kubectl -n "${namespace}" patch daemonset "${daemonset_name}" --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'

μ°Έκ³