๋ชฉ์ฐจ
ย Kubernetes ํด๋ฌ์คํฐ์ ๋
ธ๋ ๊ด๋ฆฌ
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋
ธ๋์์ ์ํํธ์จ์ด๋ฅผ ์
๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ๋ณด์ ํจ์น๋ฅผ ์ ์ฉํ๋ ๋ฑ์ ์ ์ง ๊ด๋ฆฌํ ๋ ๋
ธ๋๋ฅผ ์ค๋จ(Down)๋๋ค. ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฟ ๋ฒ๋คํฐ์ค์์์ ์ต์
์ ๋ํด ์์๋ณด์.
ย ํด๋ฌ์คํฐ์ ๋
ธ๋์ ์ดํด
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ ์ฌ๋ฌ ๊ฐ์ ๋
ธ๋๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ๋
ธ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ๋ Pod๋ฅผ ์คํํ๋ค. ๋ง์ผ ํ ๋
ธ๋๊ฐ ์ค๋จ๋๋ฉด, ํด๋น ๋
ธ๋์ Pod๋ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค. ์ด๋ Pod๋ฅผ ๋ฐฐํฌํ ๋ฐฉ์์ ๋ฐ๋ผ ์ฌ์ฉ์์ ๊ฒฝํ์ด ๋ฌ๋ผ์ง๋ค.
์ ๊ทธ๋ฆผ์ ์ผ์ชฝ ๋
ธ๋๊ฐ ์ค๋จ๋๋ค๊ณ ํ์ ๋, Blue Pod๋ ๋ณต์ ๋ณธ์ ๊ฐ์ง๊ณ , Green Pod๋ ๊ทธ๋ ์ง ์๋ค. ๋
ธ๋๊ฐ ๋ค์ด๋๋ฉด Blue ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผํ๋ ์ฌ์ฉ์๋ ๋ค๋ฅธ ์จ๋ผ์ธ Pod๋ฅผ ํตํด ์๋น์ค๋๋ฏ๋ก ์ํฅ์ ๋ฐ์ง ์๋๋ค. ํ์ง๋ง Green Pod๋ ์ผ์ชฝ ๋
ธ๋์์ ์ ์ผํ๊ธฐ ๋๋ฌธ์ Green ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผํ๋ ์ฌ์ฉ์๋ ์ํฅ์ ๋ฐ๋๋ค.
ย Kubernetes ์ฒ๋ฆฌ ์ ์ฐจ
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ค์ด๋์๋ ๋
ธ๋๊ฐ ๋ฐ๋ก ์จ๋ผ์ธ์ผ๋ก ๋์์จ๋ค๋ฉด Kubelet process๋ฅผ ์คํ์ํค๊ณ , Pod๋ค์ ์จ๋ผ์ธ ์ํ๋ก ๋ณต๊ทํ๋ค. ํ์ง๋ง ๋
ธ๋๊ฐ ๋ค์ด๋๊ณ 5๋ถ ์ด์ ์๊ฐ์ด ์ง๋๋ค๋ฉด ํด๋น Pod๋ค์ ์ฃฝ์ ์ํ(dead)๋ก ๊ฐ์ฃผํ๊ณ ์ข
๋ฃ(terminated)ํ๋ค. ์ด๋ Pod๊ฐ ReplicaSet์ ์ผ๋ถ๋ผ๋ฉด ๋ค๋ฅธ ๋
ธ๋์์ ์๋ก ์์ฑ๋๋ค. Pod๊ฐ ์จ๋ผ์ธ ์ํ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ pod-eviction-timeout์ด๋ผ๊ณ ํ๋ฉฐ, ์ปจํธ๋กค๋ฌ ๋งค๋์ ์์ ์ค์ ๋๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 5๋ถ์ด๋ค.
๋ฐ๋ผ์ ๋
ธ๋๊ฐ ์คํ๋ผ์ธ ์ํ์ผ ๋, ๋ง์คํฐ ๋
ธ๋๋ ์ต๋ 5๋ถ ๋์ ๊ธฐ๋ค๋ฆฐ ํ ๋
ธ๋๋ฅผ ์ฃฝ์ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค. ๋
ธ๋๊ฐ pod-eviction-timeout ์ดํ์ ๋ค์ ์จ๋ผ์ธ ์ํ๊ฐ ๋์์ ๋, ํด๋น ๋
ธ๋๋ ๋น ์ํ๋ก ์์ํ๋ฉฐ ์ด๋ ํ Pod๋ ์ค์ผ์ค๋์ง ์๋๋ค. Blue Pod๋ ReplicaSet์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋
ธ๋์์ ์๋ก์ด Pod๊ฐ ์์ฑ๋์์ง๋ง, Green Pod๋ ReplicaSet์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ผ์ ธ๋ฒ๋ฆฐ๋ค.
์ ์ง ๋ณด์ ์์
์ํ
๋
ธ๋์์ ์ ์ง ๊ด๋ฆฌ ์์
์ ์ํํด์ผ ํ ๊ฒฝ์ฐ, ํด๋น ๋
ธ๋์์ ์คํ ์ค์ธ ์ํฌ๋ก๋๊ฐ Replica๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์งง์ ์๊ฐ ๋์ ์ค๋จ๋๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๋ฉด ๋
ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ์
๊ทธ๋ ์ด๋ํ๊ณ ์ฌ๋ถํ
ํ ์ ์๋ค. ํ์ง๋ง ๋
ธ๋๊ฐ 5๋ถ ์ด๋ด์ ๋ค์ ์จ๋ผ์ธ ์ํ๋ก ๋ณต๊ทํ๋ค๊ณ ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
Drain, Cordon, Uncordon
kubectl drain node-1 ๋ช
๋ น์ ํตํด ๋
ธ๋์์ ๋ชจ๋ ์ํฌ๋ก๋๋ฅผ ๋น์ด๋ค. Drain์ ์ฌ์ฉํ๋ฉด ์ํฌ๋ก๋๊ฐ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋
ธ๋๋ก ์ด๋ํ๋๋ฐ, ๊ธฐ์ ์ ์ผ๋ก ์ด๋๋๋ ๊ฒ์ ์๋๋ค. ๋
ธ๋๋ฅผ ๋๋ ์ธํ ๋, Pod๋ ํ์ฌ ์๋ ๋
ธ๋์์ *์ฐ์ํ๊ฒ ์ข
๋ฃ๋๊ณ (gracefully terminated) ๋ค๋ฅธ ๋
ธ๋์์ ๋ค์ ์์ฑ๋๋ค. ์ด๋ ๋
ธ๋๋ cordon ์ฒ๋ฆฌ๋์ด ์ค์ผ์คํ ์ ์๋ ์ํ๊ฐ ๋๋ค. ์ฆ, ์ด ๋
ธ๋์์ ๋ช
์์ ์ผ๋ก ์ ํ์ ์ ๊ฑฐํ๊ธฐ ์ ๊น์ง ์ด๋ค ํ๋๋ ์ค์ผ์ค๋์ง ์๋๋ค.
Drain์ ํตํด Pod๊ฐ ๋ค๋ฅธ ๋
ธ๋์ ์์ ํ๊ฒ ์ด๋๋๋ฉด, ๋
ธ๋๋ฅผ ์ฌ๋ถํ
ํ ์ ์๋ค. ๋
ธ๋๊ฐ ๋ค์ ์จ๋ผ์ธ ์ํ๊ฐ ๋๋ฉด ์ฌ์ ํ ์ค์ผ์คํ ์ ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ Pod๊ฐ ๋ค์ ํด๋น ๋
ธ๋์ ์ค์ผ์ค๋ ์ ์๋๋ก uncordonํด์ผํ๋ค.
kubectl uncordon node-1
drain, uncordon ๊ณผ ๊ฐ์ด cordon๋ ๋ช
๋ น์ด๋ก ์ฌ์ฉํ ์ ์๋ค. cordon์ ๊ธฐ์กด ๋
ธ๋์ ํ๋๋ฅผ ์ข
๋ฃํ๊ฑฐ๋ ์ด๋์ํค์ง ์์ผ๋ฉฐ ๋จ์ํ ์ค์ผ์ค๋ง๋์ง ์๋๋ก ๋ณด์ฅํ๋ ๋ช
๋ น์ด๋ค.
kubectl cordon node-2
Gracefully Terminated(์ฐ์ํ ์ข
๋ฃ)๋?
์์คํ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ข
๋ฃ๋ ๋, ์ด์ ์ค์ธ ์์
์ด๋ ํ๋ก์ธ์ค๋ฅผ ์์ ํ๊ฒ ๋ง๋ฌด๋ฆฌํ๊ณ ํ์ํ ์ ๋ฆฌ ์์
์ ์ํํ ํ์ ์ข
๋ฃ๋๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ์ด ๋ฐฉ์์ ๋ฐ์ดํฐ ์์ค์ด๋ ์ํ ๋ถ์ผ์น๋ฅผ ๋ฐฉ์งํ๋ค.