๋ง์ ์ฌ๋๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ Kubernetes๋ก ์ ์กํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํฉ๋๋ค(Helm์ ์ฌ์ฉํ๊ฑฐ๋ ์๋์ผ๋ก). ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง๋ ์์ต๋๋ค.
ํ
XNUMX๋จ๊ณ: Pod ์์ฒญ ๋ฐ ์ ํ ์ค์
ํฌ๋๊ฐ ์คํ๋ ๊นจ๋ํ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์์ํ๊ฒ ์ต๋๋ค. Kubernetes๋ ํ(Pod) ์ค์ผ์ค๋ง ๋ฐ ์ฅ์ ์กฐ์น(failover)์ ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋ ๋ฐ ํ์ํ ๋ฆฌ์์ค ์๋ฅผ ์ถ์ ํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๊ฐ ํฌ๋๋ฅผ ๋ฐฐ์นํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ฆฌ์์ค ๋ฐ ์ ํ์ ๋ํ ์์ฒญ์ด ํ์ ๋๋ ๊ณณ์ ๋๋ค. ์์ฒญ ๋ฐ ์ ํ ์ค์ ์ ๋ํ ์ต์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ํด ๋ง์ ๋ ผ์์ด ์์ต๋๋ค. ๋๋๋ก ์ด๊ฒ์ ๊ณผํ๋ณด๋ค ์์ ์ ๋ ๊ฐ๊น์ต๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ์ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค.
ํฌ๋ ์์ฒญ Pod๋ฅผ ์ต์ ์ผ๋ก ๋ฐฐ์นํ๊ธฐ ์ํด ์ค์ผ์ค๋ฌ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๊ฐ์ ๋๋ค.
์ผ๋ก
์ฟ ๋ฒ๋คํฐ์ค ๋ฌธ์ : ํํฐ ๋จ๊ณ๋ Pod๋ฅผ ์์ฝํ ์ ์๋ ๋ ธ๋ ์งํฉ์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด PodFitsResources ํํฐ๋ ํฌ๋์ ํน์ ๋ฆฌ์์ค ์์ฒญ์ ์ถฉ์กฑํ๊ธฐ์ ์ถฉ๋ถํ ๋ฆฌ์์ค๊ฐ ๋ ธ๋์ ์๋์ง ํ์ธํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ผ๋ง๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ถ์ ํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์์ฒญ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ค ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด ํ์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค์ผ์ค๋ฌ๊ฐ ์ค์ ๋ก ๋ ธ๋๋ฅผ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์ฒ์์๋ ๊ฐ ํฌ๋์ ์ถฉ๋ถํ ๋ฆฌ์์ค๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ์์ฒญ์ ๊ณผ๋ํ๊ฒ ์์ฝํ๋ ค๊ณ ํ์ง๋ง ์์ฝ ์๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐํ๊ณ ์ผ๋ถ ํฌ๋๋ ๋ฆฌ์์ค ์์ฒญ์ด ์๋ ๊ฒ์ฒ๋ผ ์์ ํ ์์ฝ๋์ง ์์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๋ ์ข ์ข ํฌ๋๋ฅผ "์์ถ"ํ๊ณ ์ ์ด ํ๋ฉด์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ฆฌ์์ค์ ์์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ํฌ๋๋ฅผ ๋ค์ ์์ฝํ ์ ์์ต๋๋ค. ์ด๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ๊ตฌ์ฑ ์์์ ๋๋ค.
ํฌ๋ ํ๋ ํฌ๋์ ๋ํ ๋ช ํํ ์ ํ์ ๋๋ค. ํด๋ฌ์คํฐ๊ฐ ์ปจํ ์ด๋์ ํ ๋นํ ์ต๋ ๋ฆฌ์์ค ์์ ๋ํ๋ ๋๋ค.
๋ค์ ๋งํ์ง๋ง
๊ณต์ ๋ฌธ์ : ์ปจํ ์ด๋์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด 4GiB์ด๋ฉด kubelet(๋ฐ ์ปจํ ์ด๋ ๋ฐํ์)์ด ์ด๋ฅผ ์ ์ฉํฉ๋๋ค. ๋ฐํ์์ ์ปจํ ์ด๋๊ฐ ์ง์ ๋ ๋ฆฌ์์ค ํ๋ ์ด์์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋์ ํ๋ก์ธ์ค๊ฐ ํ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ์๋ณด๋ค ๋ ๋ง์ด ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์์คํ ์ปค๋์ด "๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ"(OOM) ์ค๋ฅ์ ํจ๊ป ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํฉ๋๋ค.
์ปจํ ์ด๋๋ ํญ์ ๋ฆฌ์์ค ์์ฒญ์ด ์ง์ ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ํ๋๋ฅผ ์ด๊ณผํ์ฌ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ด ๊ฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ธฐ ์ด๋ ต์ง๋ง ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ด์์ ์ผ๋ก๋ ์์คํ ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๋ฐฉํดํ์ง ์๊ณ ํ๋ก์ธ์ค์ ์๋ช ์ฃผ๊ธฐ ๋์ ํฌ๋์ ๋ฆฌ์์ค ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ํ์ ์ค์ ํ๋ ๋ชฉ์ ์ ๋๋ค.
์ํ๊น๊ฒ๋ ์ค์ ํ ๊ฐ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ง์นจ์ ์ ๊ณตํ ์๋ ์์ง๋ง ๋ค์ ๊ท์น์ ์ค์ํฉ๋๋ค.
- ๋ถํ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ํฝ์ ๊ธฐ๋ณธ ์์ค์ ์๋ฎฌ๋ ์ด์ ํ๊ณ ํฌ๋ ๋ฆฌ์์ค(๋ฉ๋ชจ๋ฆฌ ๋ฐ ํ๋ก์ธ์)์ ์ฌ์ฉ์ ๊ด์ฐฐํฉ๋๋ค.
- Pod ์์ฒญ์ ์์๋ก ๋ฎ์ ๊ฐ(์์ฒญ ๊ฐ์ ์ฝ 5๋ฐฐ ๋ฆฌ์์ค ์ ํ)์ผ๋ก ์ค์ ํ๊ณ ๊ด์ฐฐํฉ๋๋ค. ์์ฒญ ์์ค์ด ๋๋ฌด ๋ฎ์ผ๋ฉด ํ๋ก์ธ์ค๋ฅผ ์์ํ ์ ์์ด ์ข ์ข ์์๊ป๋ผ ๊ฐ์ Go ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํฌ๋์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ ๋์ ๋ ธ๋๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค ์ ํ์ด ๋์์๋ก ์์ฝ์ด ๋ ์ด๋ ค์์ง๋๋ค.
4GB ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ๋ฆฌ์์ค ์ ํ์ด ๋งค์ฐ ๋์ ๊ฒฝ๋ ์น ์๋ฒ๊ฐ ์๋ ์ํฉ์ ์์ํด ๋ณด์ญ์์ค. ์ด ํ๋ก์ธ์ค๋ ์ํ์ผ๋ก ํ์ฅํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ๊ฐ๊ฐ์ ์ ํฌ๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ 4GB ์ด์์ธ ๋ ธ๋์์ ์์ฝํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌํ ๋ ธ๋๊ฐ ์์ผ๋ฉด ํด๋ฌ์คํฐ๋ ์ด ํฌ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ๋ ธ๋๋ฅผ ๋์ ํด์ผ ํ๋ฉฐ ์ด๋ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋น ๋ฅด๊ณ ์ํํ ํ์ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฆฌ์์ค ์์ฒญ๊ณผ ์ ํ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
XNUMX๋จ๊ณ: ํ์ฑ ๋ฐ ์ค๋น ํ ์คํธ ์ค์
์ด๊ฒ์ Kubernetes ์ปค๋ฎค๋ํฐ์์ ์์ฃผ ๋ ผ์๋๋ ๋ ๋ค๋ฅธ ๋ฏธ๋ฌํ ์ฃผ์ ์ ๋๋ค. Liveness ๋ฐ Readiness ํ ์คํธ๋ ์ํํธ์จ์ด์ ์์ ์ ์ธ ์๋์ ์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๊ณ ๋ค์ดํ์์ ์ต์ํํ๋ฏ๋ก ์ด๋ฅผ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ฌ๊ฐํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ค์์ ๋ ์ํ์ด ๋ฌด์์ธ์ง ์์ฝํ ๊ฒ์ ๋๋ค.
์๋๊ฐ ์ปจํ
์ด๋๊ฐ ์คํ ์ค์ธ์ง ๋ณด์ฌ์ค๋๋ค. ์คํจํ๋ฉด kubelet์ด ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํ๊ณ ๋ค์ ์์ ์ ์ฑ
์ด ํ์ฑํ๋ฉ๋๋ค. ์ปจํ
์ด๋์ Liveness Probe๊ฐ ์ฅ์ฐฉ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ํ๋ ์ฑ๊ณต์
๋๋ค.
ํ์ฑ ํ๋ก๋ธ๋ ์ ๋ ดํด์ผ ํฉ๋๋ค. ์ฆ, ์์ฃผ ์คํ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ ์ค์์ Kubernetes์ ์๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋นํ์ง ์์์ผ ํฉ๋๋ค.
1์ด๋ง๋ค ์คํํ๋๋ก ์ต์ ์ ์ค์ ํ๋ฉด ์ด๋น XNUMX๊ฐ์ ์์ฒญ์ด ์ถ๊ฐ๋๋ฏ๋ก ์ด ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ถ๊ฐ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค.
๋น์ฌ์์ Liveness ํ ์คํธ๋ ๋ฐ์ดํฐ(์: ์๊ฒฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์บ์์ ๋ฐ์ดํฐ)๋ฅผ ์์ ํ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ํ ์คํธํฉ๋๋ค.
๋จ์ํ 200 ์๋ต ์ฝ๋๋ฅผ ๋ฐํํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ "์ํ" ์๋ํฌ์ธํธ๋ฅผ ์ค์ ํ์ต๋๋ค. ์ด๋ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ด๊ณ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์์ ๋ํ๋ด๋ ์งํ์ ๋๋ค(์์ง ํธ๋ํฝ์ ์๋).
์ํ ์ค๋น ์ปจํ ์ด๋๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. ์ค๋น ํ๋ก๋ธ๊ฐ ์คํจํ๋ฉด ์๋ํฌ์ธํธ ์ปจํธ๋กค๋ฌ๋ ํฌ๋์ ์ผ์นํ๋ ๋ชจ๋ ์๋น์ค์ ์๋ํฌ์ธํธ์์ ํฌ๋์ IP ์ฃผ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ Kubernetes ์ค๋ช ์์๋ ๋ช ์๋์ด ์์ต๋๋ค.
์ค๋น ์ํ ํ๋ก๋ธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญ์ ์๋ฝํ ์ค๋น๊ฐ ๋์์์ ํ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฑ์๋์ ๋๋ฌํด์ผ ํ๋ฏ๋ก ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋นํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ก์ธ์คํ ์ง ์ฌ๋ถ์ ๋ํด ์ปค๋ฎค๋ํฐ์์ ๋ง์ ๋ ผ์์ด ์์ต๋๋ค. ์ค๋ฒํค๋(๊ฒ์ฌ๋ ๋น๋ฒํ์ง๋ง ์ ์ดํ ์ ์์)๋ฅผ ๊ณ ๋ คํ์ฌ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ ์ฝ๋๊ฐ ๋ฐํ๋๋์ง ํ์ธํ ํ์๋ง ํธ๋ํฝ ์ฒ๋ฆฌ ์ค๋น๋ฅผ ๊ณ์ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ ์ค๊ณ๋ ์ค๋น ํ๊ฐํ์ ๋ ๋์ ์์ค์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐฐํฌ ์ค ๋ค์ดํ์์ ์์ด์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋น ์ํ๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ์ ๋ ดํ์ง ํ์ธํ์ญ์์ค. ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
SELECT small_item FROM table LIMIT 1
๋ค์์ Kubernetes์์ ์ด ๋ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์์ ๋๋ค.
livenessProbe:
httpGet:
path: /api/liveness
port: http
readinessProbe:
httpGet:
path: /api/readiness
port: http periodSeconds: 2
๋ช ๊ฐ์ง ์ถ๊ฐ ๊ตฌ์ฑ ์ต์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
initialDelaySeconds
- ์ปจํ ์ด๋ ์์๊ณผ ํ๋ก๋ธ ์์ ์ฌ์ด์ ๊ฒฝ๊ณผํ ์๊ฐ(์ด)์ ๋๋ค.periodSeconds
- ์ํ ์คํ ์ฌ์ด์ ๋๊ธฐ ๊ฐ๊ฒฉ.timeoutSeconds
โ ํฌ๋๊ฐ ๋น์ ์ํ๋ก ๊ฐ์ฃผ๋๋ ์๊ฐ(์ด)์ ๋๋ค. ์ ์์ ์ธ ์๊ฐ ์ด๊ณผ.failureThreshold
์ฌ์์ ์ ํธ๊ฐ ํ(Pod)์ผ๋ก ์ ์ก๋๊ธฐ ์ ์ ํ ์คํธ ์คํจ ํ์์ ๋๋ค.successThreshold
Pod๊ฐ ์ค๋น ์ํ๋ก ์ ํ๋๊ธฐ ์ (Pod๊ฐ ์์๋๊ฑฐ๋ ๋ณต๊ตฌ๋ ๋ ์คํจ ํ) ์ฑ๊ณต์ ์ธ ์๋ ํ์์ ๋๋ค.
XNUMX๋จ๊ณ: ํฌ๋์ ๊ธฐ๋ณธ ๋คํธ์ํฌ ์ ์ฑ ์ค์
Kubernetes์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํฌ๋๊ฐ ์๋ก ์ง์ ํต์ ํ๋ "ํ๋ซ" ๋คํธ์ํฌ ์งํ์ด ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๊ฒ์ด ๋ฐ๋์งํ์ง ์์ต๋๋ค.
์ ์ฌ์ ์ธ ๋ณด์ ๋ฌธ์ ๋ ๊ณต๊ฒฉ์๊ฐ ์ทจ์ฝํ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ์ ๋ชจ๋ ํฌ๋์ ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ง์ ๋ณด์ ์์ญ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ต์ ๊ถํ ์์น์ด ์ฌ๊ธฐ์ ์ ์ฉ๋ฉ๋๋ค. ์ด์์ ์ผ๋ก ๋คํธ์ํฌ ์ ์ฑ ์ ํฌ๋ ๊ฐ์ ํ์ฉ๋๋ ์ฐ๊ฒฐ๊ณผ ํ์ฉ๋์ง ์๋ ์ฐ๊ฒฐ์ ๋ช ์์ ์ผ๋ก ๋ช ์ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์์ ํน์ ๋ค์์คํ์ด์ค์ ๋ํ ๋ชจ๋ ์์ ํธ๋ํฝ์ ๊ฑฐ๋ถํ๋ ๊ฐ๋จํ ์ ์ฑ ์ ๋๋ค.
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- Ingress
์ด ๊ตฌ์ฑ์ ์๊ฐํ:
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
์ธ๋ถ ์ ๋ณด
XNUMX๋จ๊ณ: ํํฌ ๋ฐ ์ด๊ธฐํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ฌ์ฉ์ ์ง์ ๋์
์ฐ๋ฆฌ์ ์ฃผ์ ๋ชฉํ ์ค ํ๋๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ค๋จ ์๊ฐ ์์ด Kubernetes์ ๋ฐฐํฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃํ๊ณ ์ฌ์ฉ๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๋ ์ต์ ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ ์ด๋ ต์ต๋๋ค.
ํนํ ์ด๋ ค์์ด ๋ฐ์ํ์ต๋๋ค.
์ธํฐ๋ท์ ๋ํ ๊ด๋ฒ์ํ ์ฐ๊ตฌ ๋์ Kubernetes๋ ํฌ๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ Nginx ์ฐ๊ฒฐ์ด ์์ง๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์ฌ์ ์ค์ง ํํฌ์ ๋์์ผ๋ก ๋ค์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ค๋จ ์๊ฐ์ ์์ ํ ์ ๊ฑฐํ์ต๋๋ค.
lifecycle:
preStop:
exec:
command: ["/usr/local/bin/nginx-killer.sh"]
ํ์ง๋ง nginx-killer.sh
:
#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
echo "Waiting while shutting down nginx..."
sleep 10
done
๋งค์ฐ ์ ์ฉํ ๋ ๋ค๋ฅธ ํจ๋ฌ๋ค์์ ์ด๊ธฐํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์๋๊ธฐ ์ ์ ์คํํด์ผ ํ๋ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์ ํนํ ์ ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ์ด๋ฌํ ์ ํ์ ์ค์ ํ์ง ์๊ณ ์ด ํ๋ก์ธ์ค์ ๋ํด ๋ ๋์ ๋ฆฌ์์ค ์ ํ์ ์ง์ ํ ์๋ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์ฒด๊ณ๋ ๊ธฐ๋ณธ ๋ชจ๋์ ์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ์ ์ ๊ณตํ๋ init ์ปจํ ์ด๋์ ๋น๋ฐ์ ์ก์ธ์คํ์ฌ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ์์ฒด์์ ๋น๋ฐ์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค.
ํ์์ ๊ฐ์ด ๋ฌธ์์์ ์ธ์ฉ: ์ด๊ธฐํ ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ณด์์ ์์์ํฌ ์ ์๋ ์ฌ์ฉ์ ์ฝ๋ ๋๋ ์ ํธ๋ฆฌํฐ๋ฅผ ์์ ํ๊ฒ ์คํํฉ๋๋ค. ๋ถํ์ํ ๋๊ตฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๊ณต๊ฒฉ ํ๋ฉด์ ์ ํํฉ๋๋ค.
XNUMX๋จ๊ณ: ์ปค๋ ๊ตฌ์ฑ
๋ง์ง๋ง์ผ๋ก ๊ณ ๊ธ ๊ธฐ์ ์ ๋ํด ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
Kubernetes๋ ์ ํฉํ๋ค๊ณ ํ๋จ๋๋ ์ํฌ๋ก๋๋ฅผ ์คํํ ์ ์๋ ๋งค์ฐ ์ ์ฐํ ํ๋ซํผ์ ๋๋ค. ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ณ ํจ์จ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์ด ์์ต๋๋ค. ๊ด๋ฒ์ํ ๋ก๋ ํ ์คํธ๋ฅผ ์ํํ ํ ๊ธฐ๋ณธ Kubernetes ์ค์ ์ด ์ ์ฉ๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ค ํ๋๊ฐ ์์๋๋ ํธ๋ํฝ ๋ก๋๋ฅผ ๋ฐ๋ผ์ก๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
๊ทธ๋ฌ๋ Kubernetes๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ํฌ๋์ ๋ํ ์ปค๋ ๋งค๊ฐ๋ณ์๋ง ๋ณ๊ฒฝํ๋ ๊ถํ ์๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฆฐ ์ฐ๊ฒฐ์ ์ต๋ ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
initContainers:
- name: sysctl
image: alpine:3.10
securityContext:
privileged: true
command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]
์ด๊ฒ์ ์ข
์ข
ํ์ํ์ง ์์ ๊ณ ๊ธ ๊ธฐ์ ์
๋๋ค. ๊ทธ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๊ณผ๋ํ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์๋ค๋ฉด ์ด๋ฌํ ์ค์ ์ค ์ผ๋ถ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค์ ๋ํ ์ถ๊ฐ ์ ๋ณด ๋ฐ ๋ค๋ฅธ ๊ฐ ์ค์ - ํญ์ ๊ทธ๋ ๋ฏ์ด
๊ฒฐ๋ก ์ ์ผ๋ก
Kubernetes๊ฐ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํ๊ฒ ์คํํ๊ธฐ ์ํด ์ํํด์ผ ํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๊ฐ ์์ต๋๋ค.
Kubernetes๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋์ "๋ถํ ํ ์คํธ ์ฃผ๊ธฐ"๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ , ๋ถํ ์ํ์์ ํ ์คํธํ๊ณ , ๋ฉํธ๋ฆญ ๋ฐ ํ์ฅ ๋์์ ๊ด์ฐฐํ๊ณ , ์ด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ์ ์กฐ์ ํ ๋ค์, ์ด ์ฃผ๊ธฐ๋ฅผ ๋ค์ ๋ฐ๋ณตํฉ๋๋ค.
์์๋๋ ํธ๋ํฝ์ ๋ํด ํ์ค์ ์ผ๋ก ์๊ฐํ๊ณ ์ด๋ค ๊ตฌ์ฑ ์์๊ฐ ๋จผ์ ์ค๋จ๋๋์ง ํ์ธํ๊ธฐ ์ํด ๊ทธ ์ด์์ ์๋ํ์ญ์์ค. ์ด ๋ฐ๋ณต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋์ด๋ ๊ถ์ฅ ์ฌํญ ์ค ๋ช ๊ฐ์ง๋ง์ผ๋ก๋ ์ฑ๊ณต์ ๊ฑฐ๋๊ธฐ์ ์ถฉ๋ถํ ์ ์์ต๋๋ค. ๋๋ ๋ณด๋ค ์ฌ์ธต์ ์ธ ์ฌ์ฉ์ ์ง์ ์ด ํ์ํ ์ ์์ต๋๋ค.
ํญ์ ์ค์ค๋ก์๊ฒ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํ์ญ์์ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋นํ๋ ๋ฆฌ์์ค์ ์์ ์ผ๋ง์ด๋ฉฐ ์ด ์์ ์ด๋ป๊ฒ ๋ณํ ๊น์?
- ์ค์ ํ์ฅ ์๊ตฌ ์ฌํญ์ ๋ฌด์์ ๋๊น? ์ฑ์ด ํ๊ท ์ ์ผ๋ก ์ผ๋ง๋ ๋ง์ ํธ๋ํฝ์ ์ฒ๋ฆฌํฉ๋๊น? ์ต๋ ํธ๋ํฝ์ ์ด๋ป์ต๋๊น?
- ์๋น์ค๋ฅผ ์ผ๋ง๋ ์์ฃผ ํ์ฅํด์ผ ํฉ๋๊น? ํธ๋ํฝ์ ์์ ํ๋ ค๋ฉด ์ ํ(Pod)์ ์ผ๋ง๋ ๋นจ๋ฆฌ ์์ํ๊ณ ์คํํด์ผ ํฉ๋๊น?
- ํฌ๋๋ ์ผ๋ง๋ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋์? ์ ํ ํ์ํฉ๋๊น? ๋ค์ดํ์ ์์ด ๋ฐฐํฌํ ์ ์์ต๋๊น?
- ๋ณด์ ์ํ์ ์ต์ํํ๊ณ ์์๋ ํ(Pod)์ ์์์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ์๋น์ค์ ํ์ํ์ง ์์ ๊ถํ์ด๋ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๊น?
Kubernetes๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ์์ฒ ๊ฐ์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๋๋ผ์ด ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค๋ฆ ๋๋ค. ๋๋ก๋ ๊ตฌํ์ ์กฐ๊ธ ๋ ๋ง์ ์์ ์ด ํ์ํฉ๋๋ค.
๋คํ์ค๋ฝ๊ฒ๋ Kubernetes๋ ๋ชจ๋ ๊ธฐ์ ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ํ์ํ ์ค์ ์ ์ ๊ณตํฉ๋๋ค. ๋ฆฌ์์ค ์์ฒญ ๋ฐ ์ ํ, ํ์ฑ ๋ฐ ์ค๋น ํ๋ก๋ธ, ์ด๊ธฐํ ์ปจํ ์ด๋, ๋คํธ์ํฌ ์ ์ฑ ๋ฐ ์ฌ์ฉ์ ์ง์ ์ปค๋ ํ๋์ ์กฐํฉ์ ์ฌ์ฉํ์ฌ ๋ด๊ฒฐํจ์ฑ ๋ฐ ๋น ๋ฅธ ํ์ฅ์ฑ๊ณผ ํจ๊ป ๊ณ ์ฑ๋ฅ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
๊ทธ ๋ฐ์ ์ฝ์ ๋ด์ฉ:
ํ๋ก๋์ ํ๊ฒฝ์์ ์ปจํ ์ด๋ ๋ฐ Kubernetes๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก .Kubernetes๋ฅผ ์ํ 90๊ฐ ์ด์์ ์ ์ฉํ ๋๊ตฌ: ๋ฐฐํฌ, ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง, ๋ณด์ ๋ฑ .Telegram์ Kubernetes ์ฃผ๋ณ ์ฑ๋ .
์ถ์ฒ : habr.com