kubernetes_deployment
Last updated
Last updated
์ฟ ๋ฒ๋คํฐ์ค์์๋ ์ผ๋ฐ์ ์ผ๋ก Replication Controller(RC)๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํ์ง ์๊ณ Deployment๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํฉ๋๋ค. ๋ณต์ ๋(replicated) ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๋ API ๊ฐ์ฒด์ ๋๋ค.
ReplicatSet(+Pod)์ ์์ฑํฉ๋๋ค. ๋กค๋ฆด ์ ๋ฐ์ดํธ ๋ฑ์ ํ ๋ RC๋ฅผ ๋ ๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๊ณ ํ๋์ฉ Pod์ ์๋ฅผ ์๋์ผ๋ก ์กฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์๋ํ ํด์ ์ถ์ํํ ๊ฐ๋ ์ด Deployment์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Replication Controleer (RC)๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ๋๋ค.
ํน์ง
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์คํด์ค๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๊ณ ์ ๋ฐ์ดํธํด์ผ ํ๋์ง๋ฅผ ์ง์ํฉ๋๋ค.
๋ํ๋ก์ด๋จผํธ๊ฐ ๋ง๋ค์ด์ง๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค ๋ง์คํฐ๊ฐ ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๋ฅผ ํด๋ฌ์คํฐ์ ๊ฐ๋ณ ๋ ธ๋์ ์ค์ผ์คํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค ๋ํ๋ก์ด๋จผํธ ์ปจํธ๋กค๋ฌ๋ ์ง์์ ์ผ๋ก ์ด๋ค ์ธ์คํด์ค๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
๋จธ์ ์ ์ฅ์ ๋ ์ ๋น์ ๋์ํ ์ ์๋ ์๋ ๋ณต๊ตฌ(self-healing) ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
๋ํ๋ก์ด๋จผํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ ๋ฐ์ดํธ ํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
Kubectl์ด๋ผ๋ ์ฟ ๋ฒ๋คํฐ์ค CLI๋ฅผ ํตํด ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ฉฐ Kubectl์ ํด๋ฌ์คํฐ์ ์ํธ ์์ฉํ๊ธฐ ์ํด ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๊ตฌ๋์ํค๊ณ ์ ํ๋ ๋ณต์ ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฟ ๋ฒ๋คํฐ์ค ์์ ๋ฐฐํฌ๋๋ ค๋ฉด ์ง์๋๋ ์ปจํ ์ด๋ ํ์ ์ค ํ๋๋ก ํจํค์ง ๋์ด์ผํฉ๋๋ค.
ํ๋์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํธ
๋ชจ๋ ํ๋๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ
๊ธฐ์กด ํ๋๋ฅผ ๋ชจ๋ ์ญ์ ํ ๋ค์ ์ ํ๋๋ฅผ ์์ํฉ๋๋ค. (์งง์ ์๊ฐ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.)
์๋ก์ด ํ๋๋ฅผ ์์ํ๊ณ , ๊ธฐ๋ํ๋ฉด ๊ธฐ์กด ํ๋๋ฅผ ์ญ์ ํฉ๋๋ค. ์ ํ๋๋ฅผ ๋ชจ๋ ์ถ๊ฐํ ๋ค์ ํ๊บผ๋ฒ์ ๊ธฐ์กด ํ๋๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ฐจ์ ์ผ๋ก ์ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๊ธฐ์กด ํ๋๋ฅผ ์ ์ง์ ์ผ๋ก ์ ๊ฑฐํด ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ ํ๋ ๊ธฐ๋๊ณผ ์ด์ ํ๋ ์ญ์
ํ ๋ฒ์ ์ด์ ๋ฒ์ ์์ ์ ๋ฒ์ ์ผ๋ก ์ ํ
ํ๋์ ์์ชฝ์๋ ์ผ๋ฐ์ ์ผ๋ก ์๋น์ค๋ฅผ ๋ฐฐ์นํ๋ฉฐ ์ ๋ฒ์ ์ ์คํํ๋ ํ๋๋ฅผ ๋ถ๋ฌ์ค๋ ๋์ ์๋น์ค๋ ํ๋์ ์ด์ ๋ฒ์ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ธ๋ฃจ ๊ทธ๋ฆฐ ๋ํ๋ก์ด๋จผํธ : ์ ํ๋๊ฐ ๋ชจ๋ ์คํ๋๋ฉด ์๋น์ค์ ๋ ์ด๋ธ ์ ๋ ํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์๋น์ค๋ฅผ ์ ํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ์ ํํ ํ ์ ๋ฒ์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ฉด ์ด์ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ญ์ ํด ์ด์ ํ๋๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
๋กค๋ง ์ ๋ฐ์ดํธ
์ ํ๋๊ฐ ๋ชจ๋ ์คํ๋ ํ ์ด์ ํ๋๋ฅผ ํ ๋ฒ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ ๋์ ํ๋๋ฅผ ๋จ๊ณ๋ณ๋ก ๊ต์ฒดํ๋ ๋กค๋ง ์ ๋ฐ์ดํธ. ์ด์ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ์ฒํ ์ค์ผ์ผ ๋ค์ดํ๊ณ ์ ํ๋๋ฅผ ์ค์ผ์ผ ์ ํด ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋ํ๋ก์ด๋จผํธ๋ ๋ฎ์ ์์ค(lower-level)์ ๊ฐ๋ ์ผ๋ก ๊ฐ์ฃผ๋๋ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ ๋๋ ๋ ํ๋ฆฌ์นด์ ์ ํตํด ์ํํ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ์ ์ธ์ (declarative) ์ผ๋ก ์ ๋ฐ์ดํธํ๊ธฐ ์ํ ๋์ ์์ค(high-level)์ ๋ฆฌ์์ค์ ๋๋ค.
๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๋ฉด ๋ ํ๋ฆฌ์นด์ ๋ฆฌ์์ค๊ฐ ๊ทธ ์๋์ ์์ฑ๋์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๋ง์ ๋ฆฌ์์ค๊ฐ ์์ฑ๋ฉ๋๋ค.๋ ํ๋ฆฌ์นด์ ๋ ํ๋๋ฅผ ๋ณต์ ํ๊ณ ๊ด๋ฆฌํ๋ฉฐ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์ ํ๋๋ ๋ํ๋ก์ด๋จผํธ๊ฐ ์๋ ๋ํ๋ก์ด๋จผํธ์ ๋ ํ๋ฆฌ์นด์ ์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋ฉ๋๋ค.
ํ๋๋ฅผ ๊ฐ์ํ๋ ๋ ํ๋ฆฌ์นด์ ์ด ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ง์ํฉ๋๋ค.
๋ํ๋ก์ด๋จผํธ ์์ฑ
๋ํ๋ก์ด๋จผํธ๋ ๋ ์ด๋ธ ์ ๋ ํฐ, ์ํ๋ ๋ ํ๋ฆฌ์นด ์, ํ๋ ํ ํ๋ฆฟ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ํ๋ก์ด๋จผํธ ๋ฆฌ์์ค๊ฐ ์์ ๋ ๋ ์ ๋ฐ์ดํธ ์ํ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๋ํ๋ก์ด๋จผํธ ์ ๋ต์ ์ง์ ํ๋ ํ๋๋ ์์ต๋๋ค.
๋ํ๋ก์ด๋จผํธ ๋กค์์ ์ํ ์ถ๋ ฅ
๋ํ๋ก์ด๋จผํธ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ํน๋ณํ ๋ง๋ค์ด์ง ๋ค๋ฅธ ๋ช ๋ น์ด
๋ํ๋ก์ด๋จผํธ ์ ๋ฐ์ดํธ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ํ๋ก์ด๋จผํธ ์ ๋ต
Recreate ์ ๋ต
์ ํ๋๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ด์ ํ๋๋ฅผ ๋ชจ๋ ์ญ์ ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ๋ฒ์ ์ ๋ณ๋ ฌ๋ก ์คํํ๋ ๊ฒ์ ์ง์ํ์ง ์๊ณ ์ ๋ฒ์ ์ ์์ํ๊ธฐ ์ ์ ์ด์ ๋ฒ์ ์ ์์ ํ ์ค์งํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ์ฌ์ฉํ ์ ์๋ ์งง์ ์๋น์ค ๋ค์ดํ์์ด ๋ฐ์ํฉ๋๋ค.
RollingUpdate ์ ๋ต
๊ธฐ๋ณธ ์ ๋ต์ด๋ฉฐ ์ด์ ํ๋๋ฅผ ํ๋์ฉ ์ ๊ฑฐํ๊ณ ๋์์ ์ ํ๋๋ฅผ ์ถ๊ฐํด ์ ์ฒด ํ๋ก์ธ์ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ ์๋น์ค ๋ค์ด ํ์์ด ์๋๋ก ํฉ๋๋ค.
์๋ํ๋ ๋ ํ๋ฆฌ์นด ์๋ณด๋ค ๋ง๊ฑฐ๋ ์ ์ ํ๋ ์์ ๊ดํ ์ํ๊ณผ ํํ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด์ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ๋์์ ์คํํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ด ์ ๋ต์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ์กด ๋ฆฌ์์ค ์์ ํ๊ธฐ
kubectl edit : ๊ธฐ๋ณธ ํธ์ง๊ธฐ๋ก ์ค๋ธ์ ํธ์ ๋งค๋ํ์คํธ๋ฅผ ์คํํฉ๋๋ค. ๋ณ๊ฒฝ ํ ํ์ผ์ ์ ์ฅํ๊ณ ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ฉด ์ค๋ธ์ ํธ๊ฐ ์ ๋ฐ์ดํธ๋จ. kubectl edit deployment kubia
kubectl patch : ์ค๋ธ์ ํธ์ ๊ฐ๋ณ ์์ฑ์ ์์ ํฉ๋๋ค. kubectl patch deployment kubia -p '{"spec": {"template": {"spec": {"containers": [{"name": "nodejs", "image": "luksa/kubia:v2" }]}}}}'
kubectl apply : ์ ์ฒด YAML/JSON ํ์ผ์ ์์ฑ ๊ฐ์ ์ ์ฉํด ์ค๋ธ์ ํธ๋ฅผ ์์ ํฉ๋๋ค. YAML/JSON์ ์ง์ ๋ ์ค๋ธ์ ํธ๊ฐ ์์ง ์์ผ๋ฉด ์์ฑ๋๋ฉฐ ํ์ผ์๋ ๋ฆฌ์์ค์ ์ ์ฒด ์ ์๊ฐ ํฌํจ๋ผ์ผ ํฉ๋๋ค. kubectl apply -f kubia-deployment-v2.yaml
kubectl replace : YAML/JSON ํ์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ์ ๊ฒ์ผ๋ก ๊ต์ฒดํฉ๋๋ค. apply ๋ช ๋ น์ด์ ๋ฌ๋ฆฌ ์ด ๋ช ๋ น์ ์ค๋ธ์ ํธ๊ฐ ์์ด์ผ ํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. kubectl replace -f kubia-deployment-v2.yaml
kubectl set image : ํ๋, ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ ํ ํ๋ฆฟ, ๋ํ๋ก์ด๋จผํธ, ๋ฐ๋ชฌ์ , ์ก ๋๋ ๋ ํ๋ฆฌ์นด์ ์ ์ ์๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. kubectl set image deployment kubia nodejs=luksa/kubia:v2
์ด ๋ช ๋ น๋ค์ด ํ๋ ์ญํ ์ ๋ํ๋ก์ด๋จผํธ ์คํ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก ์ด ๋ณ๊ฒฝ์ผ๋ก ๋กค์์ ํ๋ก์ธ์ค๊ฐ ์์๋ฉ๋๋ค.
๋ํ๋ก์ด๋จผํธ ๋กค๋ฐฑ
๋ํ๋ก์ด๋จผํธ ๋กค์์ ์ด๋ ฅ ํ์
๋ํ๋ก์ด๋จผํธ๋ ๊ฐ์ ์ด๋ ฅ(revision history)์ ์ ์งํ๋ฏ๋ก ๋กค์์์ ๋กค๋ฐฑ์ด ๊ฐ๋ฅํจ. ๋กค์์์ด ์๋ฃ๋๋ฉด ์ด์ ๋ ํ๋ฆฌ์นด์ ์ ์ญ์ ๋์ง ์์ผ๋ฏ๋ก ์ด์ ๋ฒ์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ ์ ์์. kubectl rollout history ๋ช ๋ น์ด๋ก ๊ฐ์ ์ด๋ ฅ์ ํ์ํ ์ ์์ต๋๋ค.
ํน์ ๋ํ๋ก์ด๋จผํธ ๊ฐ์ ์ผ๋ก ๋กค๋ฐฑ
undo ๋ช ๋ น์ด์์ ๊ฐ์ (revison) ๋ฒํธ๋ฅผ ์ง์ ํด ํน์ ๊ฐ์ ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
๋กค์์ ์ผ์ ์ ์ง
์นด๋๋ฆฌ ๋ฆด๋ฆฌ์ค๋ ์๋ชป๋ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋กค์์๋ผ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ฃผ๋ ์ํ์ ์ต์ํํ๋ ๊ธฐ์ ๋ก ์ ๋ฒ์ ์ ๋ชจ๋ ์ฌ๋์๊ฒ ๋กค์์ํ๋ ๋์ ํ๋ ๋๋ ์ ์ ์์ ์ด์ ํ๋๋ง ์ ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์์ ์ฌ์ฉ์๋ง ์ด๊ธฐ์ ์ ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
https://www.oreilly.com/library/view/kubernetes-in-action/9781617293726/
https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/