27์ XNUMX์ผ ์ปจํผ๋ฐ์ค์์
์ ํต์ ๋ฐ๋ผ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
๋ณด๊ณ ์์ ์ฃผ์ ๋ฅผ ํ ๋จ์ด์ฉ ๋ถ์ํ๊ณ ๋๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค.
Kubernetes
ํธ์คํธ์ Docker ์ปจํ ์ด๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฌด์์ ์ํด? ๋ฐ๋ณต์ฑ๊ณผ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํ์ฌ ๊ฐ๋จํ๊ณ ์ฐ์ํ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ CI/CD์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ถ ์ฐจ๋์ ๋ง์ด ๋ณด์ ํ๊ณ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ Kubernetes๋ ๋ฌด์์ ์ ๊ณตํฉ๋๊น?
- ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๊ธฐ๊ณ์ ๋ํ ์๊ฐ์ ๋ฉ์ถ๊ณ "ํด๋ผ์ฐ๋"๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ์์ํฉ๋๋ค. ์ปจํ ์ด๋ ํด๋ฌ์คํฐ ๋๋ ํฌ๋(์ปจํ ์ด๋ ๊ทธ๋ฃน).
- ๊ฒ๋ค๊ฐ ๊ฐ๋ณ ํฌ๋๊น์ง ์๊ฐํ์ง ์๊ณ ๋ ๋ง์ ๊ฒ์ ๊ด๋ฆฌํฉ๋๋ค.ะพ๋ ํฐ ๊ทธ๋ฃน. ๊ทธ๋ฐ ๋์ ์์ค์ ํ๋ฆฌ๋ฏธํฐ๋ธ ํน์ ์ํฌ๋ก๋๋ฅผ ์คํํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ด ์๊ณ ์ด๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ธ์คํด์ค ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋์ค์ ํ ํ๋ฆฟ์ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
- ๊ณผ ์ ์ธ์ API ์ผ๋ จ์ ํน์ ๋ช ๋ น์ ์คํํ๋ ๋์ Kubernetes๊ฐ ์์ฑํ๋ "์ธ๊ณ์ ๊ตฌ์กฐ"(YAML)๋ฅผ ์ค๋ช ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋งํ์ง๋ง, ์ค๋ช ์ด ๋ณ๊ฒฝ๋๋ฉด ์ค์ ํ์๋ ๋ณ๊ฒฝ๋ฉ๋๋ค.
์์ ๊ด๋ฆฌ
CPU
์๋ฒ์์ nginx, php-fpm ๋ฐ mysql์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฌํ ์๋น์ค์๋ ์ค์ ๋ก ๋ ๋ง์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉฐ ๊ฐ ํ๋ก์ธ์ค์๋ ์ปดํจํ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค.
(์ฌ๋ผ์ด๋์ ์ซ์๋ ์ปดํจํ
๋ฅ๋ ฅ์ ๋ํ ๊ฐ ํ๋ก์ธ์ค์ ์ถ์์ ์ธ ํ์์ฑ์ธ "์ต๋ฌด์"์
๋๋ค)
์ด ์์ ์ ๋ ์ฝ๊ฒ ํ๋ ค๋ฉด ํ๋ก์ธ์ค๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๊ฒฐํฉํ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ ๋๋ค(์: ๋ชจ๋ nginx ํ๋ก์ธ์ค๋ฅผ ํ๋์ ๊ทธ๋ฃน "nginx"๋ก). ์ด๋ฅผ ์ํํ๋ ๊ฐ๋จํ๊ณ ํ์คํ ๋ฐฉ๋ฒ์ ๊ฐ ๊ทธ๋ฃน์ ์ปจํ ์ด๋์ ๋ฃ๋ ๊ฒ์ ๋๋ค.
๊ณ์ํ๋ ค๋ฉด (Linux์์) ์ปจํ
์ด๋๊ฐ ๋ฌด์์ธ์ง ๊ธฐ์ตํด์ผ ํฉ๋๋ค. ๊ฝค ์ค๋ ์ ์ ๊ตฌํ๋ ์ปค๋์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ ๋๋ถ์ ์ด๋ฌํ ๋ชจ์ต์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
๋ณด๊ณ ์์ ๋งฅ๋ฝ์์ ์ฐ๋ฆฌ๋ ๋ค์์๋ง ๊ด์ฌ์ด ์์ต๋๋ค. cgroup, ์ ์ด ๊ทธ๋ฃน์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ๋ ์ปจํ
์ด๋(Docker ๋ฑ) ๊ธฐ๋ฅ์ ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋๋ก ๊ทธ๋ฃน์ผ๋ก ๊ฒฐํฉ๋ ํ๋ก์ธ์ค๊ฐ ์ ์ด ๊ทธ๋ฃน์
๋๋ค.
์ด๋ฌํ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ํ CPU ์๊ตฌ ์ฌํญ์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
(๋ชจ๋ ์ซ์๋ ์์ ํ์์ฑ์ ์ถ์์ ์ผ๋ก ํํํ ๊ฒ์์ ๋ฐ๋ณตํฉ๋๋ค)
๋์์ CPU ์์ฒด์๋ ํน์ ์ ํ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. (์์์๋ 1000์ ๋๋ค), ์ด๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ถ์กฑํ ์ ์์ต๋๋ค(๋ชจ๋ ๊ทธ๋ฃน์ ์๊ตฌ ์ฌํญ์ ํฉ์ 150+850+460=1460์ ๋๋ค). ์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น์?
์ปค๋์ ๋ฆฌ์์ค ๋ฐฐํฌ๋ฅผ ์์ํ๊ณ "๊ณต์ ํ๊ฒ" ์ด๋ฅผ ์ํํ์ฌ ๊ฐ ๊ทธ๋ฃน์ ๋์ผํ ์์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ผ๋ฏ๋ก(333>150) ์ด๊ณผ๋ถ(333-150=183)์ ์๋น๋ก ๋จ์ ์์ผ๋ฉฐ ์ด๋ ๋ค๋ฅธ ๋ ์ปจํ ์ด๋ ๊ฐ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ปจํ
์ด๋์๋ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ๊ณ , ๋ ๋ฒ์งธ ์ปจํ
์ด๋์๋ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ์ง ์์์ผ๋ฉฐ, ์ธ ๋ฒ์งธ ์ปจํ
์ด๋์๋ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ์ง ์์์ต๋๋ค. ์ด๊ฒ์ด ํ๋์ ๊ฒฐ๊ณผ์ด๋ค Linux์ "์ ์งํ" ์ค์ผ์ค๋ฌ -
๋ ๋ฒ์งธ ์ปจํ
์ด๋(php-fpm)์ ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ชจ๋ ์ปจํ
์ด๋ ๋ฆฌ์์ค๋ ํ๋ก์ธ์ค ๊ฐ์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ง์คํฐ ํ๋ก์ธ์ค๋ ์ ์๋ํ์ง๋ง ๋ชจ๋ ์์
์๋ ์๋๊ฐ ๋๋ ค์ง๊ณ ํ์ํ ๊ฒ์ ์ ๋ฐ๋ ๋ฐ์ง ๋ชปํฉ๋๋ค.
์ด๊ฒ์ด CFS ์ค์ผ์ค๋ฌ๊ฐ ์๋ํ๋ ๋ฐฉ์์
๋๋ค. ์ปจํ
์ด๋์ ํ ๋นํ๋ ๊ฐ์ค์น๋ฅผ ์ถ๊ฐ๋ก ํธ์ถํ๊ฒ ์ต๋๋ค. ์์ฒญ. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ํธ์์ ์ ์ฒด ์ํฉ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ์์๋ค์ํผ ๋ชจ๋ ๊ธธ์ ๋ก๋ง๋ก ํตํ๊ณ , ์ปดํจํฐ์ ๊ฒฝ์ฐ์๋ CPU๋ก ํตํฉ๋๋ค. ํ๋์ CPU, ๋ง์ ์์ - ์ ํธ๋ฑ์ด ํ์ํฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ "ํธ๋ํฝ ๋ผ์ดํธ"์ ๋๋ค. ์ฆ, ํ ํ๋ก์ธ์ค์ CPU์ ๋ํ ๊ณ ์ ์ก์ธ์ค ์๊ฐ์ ๋ถ์ฌํ ํ ๋ค์ ํ๋ก์ธ์ค์ ์ก์ธ์คํ๋ ๋ฑ์ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ํ๋ ํ ๋น๋์ด๋ผ๊ณ ํฉ๋๋ค. (ํ๋ ์ ํ). ๊ฐ๋จํ๊ฒ ๊ธฐ์ตํด๋์ ์ ํ. ๊ทธ๋ฌ๋ ๋ชจ๋ ์ปจํ
์ด๋์ ์ ํ์ ๋ถ๋ฐฐํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. mysql์ด ๋๋ก๋ฅผ ๋ฐ๋ผ ์ด์ ํ๊ณ ์ด๋ ์์ ์์ CPU์ ๋ํ ์๊ตฌ๊ฐ ์ข
๋ฃ๋์์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ CPU๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ฒ์ผ๋ฅธ.
Linux ์ปค๋๊ณผ CPU์์ ์ํธ ์์ฉ์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ์ ์ฒด ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
cgroup์๋ ๋ ๊ฐ์ง ์ค์ ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ ๋ค์์ ๊ฒฐ์ ํ ์ ์๋ ๋ ๊ฐ์ง ๊ฐ๋จํ "๋นํ๊ธฐ"์
๋๋ค.
- ์ปจํ ์ด๋ ์ค๋(์์ฒญ)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฃผ์;
- ์ปจํ ์ด๋ ์์ (ํ๋) ์์ ์ ์์๋๋ ์ด CPU ์๊ฐ์ ๋น์จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํ ๋น๋.
CPU๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค:
- ๋ฌด์์ธ๊ฐ ์ต๋ฌด์, ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค. ๋งค๋ฒ ํ์ํด์ผํฉ๋๋ค.
- ์ด์ ๋ ๋ช ํํ์ง๋ง ์๋์ ์ ๋๋ค. 50๊ฐ ์ฝ์ด๊ฐ ์๋ ์๋ฒ์ 4๊ฐ ์ฝ์ด๊ฐ ์๋ ์๋ฒ์ 20%๋ ์์ ํ ๋ค๋ฆ ๋๋ค.
- ์ด๋ฏธ ์ธ๊ธํ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฌด๊ฒ, Linux๊ฐ ์๊ณ ์์ง๋ง ์๋์ ์ด๊ธฐ๋ ํฉ๋๋ค.
- ๊ฐ์ฅ ์ ์ ํ ์ต์ ์ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์ธก์ ํ๋ ๊ฒ์ ๋๋ค. ์ด. ์ ๊ฒ๋ค. ์ค์ ์๊ฐ(์ด)์ ๋ํ ํ๋ก์ธ์ ์๊ฐ(์ด): ์ค์ 1์ด๋น 1์ด์ ํ๋ก์ธ์ ์๊ฐ์ด ์ ๊ณต๋์์ต๋๋ค. ์ด๋ ํ๋์ ์ ์ฒด CPU ์ฝ์ด์ ๋๋ค.
๋งํ๊ธฐ๋ฅผ ๋์ฑ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๊ทธ๋ค์ ์ง์ ์ธก์ ํ๊ธฐ ์์ํ์ต๋๋ค. ์ปค๋, ์ด๋ ์ค์ CPU ์๊ฐ๊ณผ ๋์ผํ CPU ์๊ฐ์ ์๋ฏธํฉ๋๋ค. Linux๋ ๊ฐ์ค์น๋ฅผ ์ดํดํ์ง๋ง CPU ์๊ฐ/์ฝ์ด๋ ๊ทธ๋ฆฌ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณํํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ์ต๋๋ค.
3๊ฐ์ CPU ์ฝ์ด๊ฐ ์๋ ์๋ฒ์ ๊ฐ๋จํ ์๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์ 500๊ฐ์ ํฌ๋์๋ ํ ๋น๋ ์ฝ์ด์ ํด๋น ๋ถ๋ถ(1000, 1500 ๋ฐ 0,5)์ผ๋ก ์ฝ๊ฒ ๋ณํ๋๋ ๊ฐ์ค์น(1, 1,5 ๋ฐ XNUMX)๊ฐ ์ง์ ๋ฉ๋๋ค.
๋ ๋ฐฐ์ ์ฝ์ด(6๊ฐ)๊ฐ ์๋ ๋ ๋ฒ์งธ ์๋ฒ๋ฅผ ๊ฐ์ ธ์ ๋์ผํ ํฌ๋๋ฅผ ๊ฑฐ๊ธฐ์ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ ๊ฐ๋จํ 2(๊ฐ๊ฐ 1, 2, 3)๋ฅผ ๊ณฑํ์ฌ ์ฝ์ด ๋ถํฌ๋ฅผ ์ฝ๊ฒ ๊ณ์ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํธ์์ ๋ฌด๊ฒ๊ฐ 3000์ด ๋๋ ๋ค ๋ฒ์งธ ํฌ๋๊ฐ ์ด ์๋ฒ์ ๋ํ๋ ๋ ์ค์ํ ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ CPU ๋ฆฌ์์ค์ ์ผ๋ถ(์ฝ์ด์ ์ ๋ฐ)๋ฅผ ๊ฐ์ ธ๊ฐ๊ณ ๋๋จธ์ง ํฌ๋์ ๋ํด์๋ ๋ค์ ๊ณ์ฐ๋ฉ๋๋ค(์ ๋ฐ).
Kubernetes ๋ฐ CPU ๋ฆฌ์์ค
Kubernetes์์ CPU ๋ฆฌ์์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ธก์ ๋ฉ๋๋ค. ๋ฐ๋ฆฌ์๋๋ฝ์ค, ์ฆ. 0,001 ์ฝ์ด๊ฐ ๊ธฐ๋ณธ ์ค๋์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. (Linux/cgroups ์ฉ์ด์์๋ ๋์ผํ ๊ฒ์ CPU ๊ณต์ ๋ผ๊ณ ํฉ๋๋ค. ๋ ์ ํํ๊ฒ๋ 1000๋ฐ๋ฆฌ์ฝ์ด = 1024 CPU ๊ณต์ ์ ๋๋ค.) K8s๋ ๋ชจ๋ ํฌ๋์ ๊ฐ์ค์น ํฉ๊ณ์ ๋ํ CPU ๋ฆฌ์์ค๋ณด๋ค ๋ ๋ง์ ํฌ๋๋ฅผ ์๋ฒ์ ๋ฐฐ์นํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋์? Kubernetes ํด๋ฌ์คํฐ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ CPU ์ฝ์ด ์๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํฌ๋๋ฅผ ์์ฑํ ๋ Kubernetes ์ค์ผ์ค๋ฌ๋ ์ด ํฌ๋์ ํ์ํ ์ฝ์ด ์๋ฅผ ์๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๋๋ ์ฝ์ด๊ฐ ์ถฉ๋ถํ ์๋ฒ์ ํ ๋น๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น์? ์๋ ์์ฒญ์ด ์ง์ ๋์์ต๋๊น(์ฆ, ํฌ๋์ ํ์ํ ์ฝ์ด ์๊ฐ ์ ์๋์ด ์์ง ์์)? Kubernetes๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ณด๊ฒ ์ต๋๋ค.
Pod์ ๊ฒฝ์ฐ ์์ฒญ(CFS ์ค์ผ์ค๋ฌ)๊ณผ ์ ํ(์ ํธ๋ฑ์ ๊ธฐ์ตํ์๋์?)์ ๋ชจ๋ ์ง์ ํ ์ ์์ต๋๋ค.
- ๋์ผํ๊ฒ ์ง์ ๋๋ฉด ํฌ๋์ QoS ํด๋์ค๊ฐ ํ ๋น๋ฉ๋๋ค. ๋ณด์ฅ. ํญ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ์ด ์๊ฐ ๋ณด์ฅ๋ฉ๋๋ค.
- ์์ฒญ์ด ํ๋ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ - QoS ํด๋์ค ํ์ด ๊ฐ๋ฅ. ์ ๊ฒ๋ค. ์๋ฅผ ๋ค์ด ํฌ๋๋ ํญ์ 1๊ฐ์ ์ฝ์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ์ด ๊ฐ์ ์ด์ ๋ํ ์ ํ์ด ์๋๋๋ค. ๋๋ก๋ Pod๋ ๋ ๋ง์ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์๋ฒ์ ์ด๋ฅผ ์ํ ์ฌ์ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ).
- QoS ํด๋์ค๋ ์์ต๋๋ค ์ต์ ์ ๋ ธ๋ ฅ โ ์์ฒญ์ด ์ง์ ๋์ง ์์ ๋ฐ๋ก ๊ทธ ํฌ๋๋ฅผ ํฌํจํฉ๋๋ค. ์์์ ๋ง์ง๋ง์ ๊ทธ๋ค์๊ฒ ์ฃผ์ด์ง๋๋ค.
๊ธฐ์ต
๋ฉ๋ชจ๋ฆฌ์ ๊ฒฝ์ฐ ์ํฉ์ ๋น์ทํ์ง๋ง ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ๊ฒฐ๊ตญ ์ด๋ฌํ ๋ฆฌ์์ค์ ์ฑ๊ฒฉ์ ๋ค๋ฆ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋น์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฒญ์ด ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. Pod ์ค ํ๋๊ฐ ๋๋ฌด ์ปค์ ธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ๋ณ๊ฒฝํ๋ฉด์ Pod๋ฅผ ์๋ฒ์ ์ ์งํ์ธ์. ์ด ๊ฒฝ์ฐ OOM ํฌ๋ฌ๊ฐ ๋ํ๋ ๊ฐ์ฅ ํฐ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํฉ๋๋ค.
์ด๊ฒ์ด ํญ์ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ ๊ฒ์ ์๋๋ฏ๋ก ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ฐ๋ฆฌ์๊ฒ ์ค์ํ๊ณ ์ข
๋ฃ๋์ด์๋ ์ ๋๋์ง ๊ท์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ญ์์ค. oom_score_adj.
CPU์ QoS ํด๋์ค๋ก ๋์๊ฐ์ ํฌ๋์ ๋ฉ๋ชจ๋ฆฌ ์๋น ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ oom_score_adj ๊ฐ์ผ๋ก โโ๋น์ ํด ๋ณด๊ฒ ์ต๋๋ค.
- Pod์ ๊ฐ์ฅ ๋ฎ์ oom_score_adj ๊ฐ(-998)์ ํด๋น Pod๊ฐ ๋ง์ง๋ง์ ์ข ๋ฃ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ณด์ฅ.
- ๊ฐ์ฅ ๋์ 1000์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ต์ ์ ๋ ธ๋ ฅ, ๊ทธ๋ฌํ ํฌ๋๋ ๋จผ์ ์ข ๋ฃ๋ฉ๋๋ค.
- ๋๋จธ์ง ๊ฐ์ ๊ณ์ฐํ๋ ค๋ฉด โโ(ํ์ด ๊ฐ๋ฅ) ๊ณต์์ด ์๋๋ฐ, ๊ทธ ํต์ฌ์ ํฌ๋๊ฐ ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ์๋ก ํฌ๋๊ฐ ์ข ๋ฃ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋ค๋ ์ฌ์ค๋ก ๊ท๊ฒฐ๋ฉ๋๋ค.
๋ ๋ฒ์งธ "๋นํ๋ฆผ" - limit_in_bytes - ํ๊ณ๋ฅผ ์ํด. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ ๊ฐ๋จํด์ง๋๋ค. ๋ฐํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ต๋ ์์ ํ ๋นํ๊ธฐ๋ง ํ๋ฉด ๋๋ฉฐ ์ฌ๊ธฐ์์๋ (CPU์ ๋ฌ๋ฆฌ) ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฌธ์ด ์์ต๋๋ค.
์ ์ฒด๋ก
Kubernetes์ ๊ฐ ํฌ๋์๋ requests
ะธ limits
- CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋งค๊ฐ๋ณ์:
- ์์ฒญ์ ๋ฐ๋ผ Kubernetes ์ค์ผ์ค๋ฌ๊ฐ ์๋ํ์ฌ ์๋ฒ ๊ฐ์ ํฌ๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
- ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ๋์ QoS ํด๋์ค๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
- ์๋ ๊ฐ์ค์น๋ CPU ์์ฒญ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
- CFS ์ค์ผ์ค๋ฌ๋ CPU ์์ฒญ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- OOM ํฌ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- "์ ํธ๋ฑ"์ CPU ์ ํ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๋ฐ๋ผ cgroup์ ๋ํ ์ ํ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ๊ทธ๋ฆผ์ Kubernetes์์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ฃผ์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง์ ๋ํ ๋ชจ๋ ์ง๋ฌธ์ ๋ตํฉ๋๋ค.
์๋ ํ์ฅ
K8s ํด๋ฌ์คํฐ ์๋ ํฌ๊ธฐ ์กฐ์ ๊ธฐ
์ ์ฒด ํด๋ฌ์คํฐ๊ฐ ์ด๋ฏธ ์ฌ์ฉ ์ค์ด๊ณ ์ ํฌ๋๋ฅผ ์์ฑํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. Pod๊ฐ ๋ํ๋ ์ ์์ง๋ง ์ํ๊ฐ ๋ฉ์ถฅ๋๋ค. ๋๊ธฐ์ค. ์ด๋ฅผ ํ์ํ๋ ค๋ฉด ์ ์๋ฒ๋ฅผ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๊ฑฐ๋... Cluster-autoscaler๋ฅผ ์ค์นํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ์์ ์ด ์๋์ผ๋ก ์ํ๋ฉ๋๋ค. ํด๋ผ์ฐ๋ ๊ณต๊ธ์์๊ฒ API ์์ฒญ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋จธ์ ์ ์ฃผ๋ฌธํ๊ณ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํฉ๋๋ค. , ๊ทธ ํ์ ํฌ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
์ด๋ Kubernetes ํด๋ฌ์คํฐ์ ์๋ ํฌ๊ธฐ ์กฐ์ ์ด๋ฉฐ (์ฐ๋ฆฌ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด) ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๊ณณ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๊ธฐ์๋ ์ฝ๊ฐ์ ๋์์ค๊ฐ ์์ต๋๋ค.
ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ํ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์์ง๋ง ํด๋ฌ์คํฐ๊ฐ ์ปค์ง๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์์ ์ ์์ ๋กญ๊ฒ ํ๊ธฐ ์์ํ๋ค? ๋ฌธ์ ๋ ํธ์คํธ๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ํฌ๋๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ๊ธฐ์ ์ ์ผ๋ก ๋งค์ฐ ์ด๋ ต๊ณ ๋ฆฌ์์ค ์ธก๋ฉด์์ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๋ ๊ฒ์ ๋๋ค. Kubernetes๋ ์์ ํ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฐฐํฌ ๊ธฐ๋ฅ์ด ์๋ 3๊ฐ์ ์๋ฒ๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ๋ฅผ ์๊ฐํด ๋ณด์ธ์. 6๊ฐ์ ํฌ๋๊ฐ ์์ต๋๋ค. ์ด์ ๊ฐ ์๋ฒ๋ง๋ค 2๊ฐ๊ฐ ์์ต๋๋ค. ์ด๋ค ์ด์ ๋ก ์ฐ๋ฆฌ๋ ์๋ฒ ์ค ํ๋๋ฅผ ๋๊ณ ์ถ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค kubectl drain
, ์ด๋:
- ์ด ์๋ฒ์ ์ ํฌ๋๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ๊ธ์ง๋ฉ๋๋ค.
- ์๋ฒ์ ๊ธฐ์กด ํฌ๋๋ฅผ ์ญ์ ํฉ๋๋ค.
Kubernetes๋ Pod ์(6)๋ฅผ ์ ์งํ๋ ์ญํ ์ ๋ด๋นํ๋ฏ๋ก ๊ฐ๋จํ ์ฌํํ ๊ฒ์ด๋ค ๋ค๋ฅธ ๋ ธ๋์๋ ์์ง๋ง ๋นํ์ฑํ๋ ๋ ธ๋์๋ ์์ต๋๋ค. ์ด๋ฏธ ์ ํฌ๋๋ฅผ ํธ์คํ ํ ์ ์๋ ๊ฒ์ผ๋ก ํ์๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ Kubernetes์ ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ ๋์์ค๊ฐ ์์ต๋๋ค. ๋น์ทํ ์ํฉ์์ (๋ฐฐํฌ ๋์ ) StatefulSet์ ๊ฒฝ์ฐ ์์
์ด ๋ฌ๋ผ์ง๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ํ ์ ์ฅ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด MongoDB๊ฐ ํฌํจ๋ XNUMX๊ฐ์ ํฌ๋๊ฐ ์๋๋ฐ ๊ทธ ์ค ํ๋์๋ ์ผ์ข
์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค(๋ฐ์ดํฐ๊ฐ ์์๋์๊ฑฐ๋ ํฌ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์๋์ง ๋ชปํ๊ฒ ํ๋ ๋ ๋ค๋ฅธ ์ค๋ฅ). ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ค์ ํ๋์ ์๋ฒ๋ฅผ ๋นํ์ฑํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊ฒ?
MongoDB์ ํ ์ ์์๋ค ์ฟผ๋ผ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฃฝ์ต๋๋ค. ์ธ ๊ฐ์ ์ค์น๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ์ต์ํ ๋ ๊ฐ๊ฐ ์๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ผ์ด๋์ง ์๋ - ๋๋ถ์ PodDisruptionBudget. ์ด ๋งค๊ฐ๋ณ์๋ ํ์ํ ์ต์ ์์
ํฌ๋ ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. MongoDB Pod ์ค ํ๋๊ฐ ๋ ์ด์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ PodDisruptionBudget์ด MongoDB์ ๋ํด ์ค์ ๋์ด ์์์ ํ์ธํฉ๋๋ค. minAvailable: 2
, Kubernetes์์๋ ํฌ๋ ์ญ์ ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค.
์์ : ํด๋ฌ์คํฐ๊ฐ ๋ฆด๋ฆฌ์ค๋ ๋ ํฌ๋์ ์ด๋(์ค์ ๋ก ์ฌ์์ฑ)์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ค๋ฉด PodDisruptionBudget์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ํ์ ํ์ฅ
๋ ๋ค๋ฅธ ์ํฉ์ ๊ณ ๋ คํด ๋ด ์๋ค. Kubernetes์ ๋ฐฐํฌ๋ก ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ต๋๋ค. ์ฌ์ฉ์ ํธ๋ํฝ์ ํฌ๋(์: ํฌ๋๊ฐ XNUMX๊ฐ ์์)๋ก ๋ค์ด์ค๊ณ ํฌ๋์์ ํน์ ์งํ(์: CPU ๋ก๋)๋ฅผ ์ธก์ ํฉ๋๋ค. ๋ถํ๊ฐ ์ฆ๊ฐํ๋ฉด ์ผ์ ์ ๋ฐ๋ผ ๊ธฐ๋กํ๊ณ Pod ์๋ฅผ ๋๋ ค ์์ฒญ์ ๋ถ์ฐ์ํต๋๋ค.
ํ์ฌ Kubernetes์์๋ ์ด ์์ ์ ์๋์ผ๋ก ์ํํ ํ์๊ฐ ์์ต๋๋ค. ์ธก์ ๋ ๋ก๋ ํ์๊ธฐ์ ๊ฐ์ ๋ฐ๋ผ ํฌ๋ ์์ ์๋ ์ฆ๊ฐ/๊ฐ์๊ฐ ๊ตฌ์ฑ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ฃผ์ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ํํ ๋ฌด์์ ์ธก์ ํด์ผ ํ๋๊ฐ ะธ ํด์ํ๋ ๋ฐฉ๋ฒ ์ป์ ๊ฐ (ํฌ๋ ์ ๋ณ๊ฒฝ ๊ฒฐ์ ) ๋ง์ ๊ฒ์ ์ธก์ ํ ์ ์์ต๋๋ค:
์ด๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ์ํํ๋ ๋ฐฉ๋ฒ - ์ธก์ ํญ๋ชฉ ์์ง ๋ฑ โ ๋๋ ๋ณด๊ณ ์์์ ์์ธํ ์ด์ผ๊ธฐํ์ต๋๋ค.
์ด
๋์ ๊ฒฐ๋ก
๋ณด๊ณ ์์๋ ์์ง์ ํ์ฅ๊ณผ ์ฌ๋ฐ๋ฅธ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ด ๊ณ์๋ฉ๋๋ค. ์ด์ ๋ํด์๋ ํฅํ ๋์์์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
๋น๋์ค ๋ฐ ์ฌ๋ผ์ด๋
๊ณต์ฐ ์์(44๋ถ):
๋ณด๊ณ ์ ๋ฐํ:
PS
๋ธ๋ก๊ทธ์ Kubernetes์ ๋ํ ๊ธฐํ ๋ณด๊ณ ์:
- ยซ
Kubernetes ํ์ฅ ๋ฐ ๋ณด์ ยป (Andrey Polovov; 8๋ 2019์ XNUMX์ผ Saint HighLoad++); - ยซ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ Kubernetes ยป (Dmitry Stolyarov; HighLoad++์์ 8๋ 2018์ XNUMX์ผ); - ยซ
๋ชจ๋ํฐ๋ง ๋ฐ Kubernetes ยป (Dmitry Stolyarov; 28๋ 2018์ XNUMX์ผ RootConf์์); - ยซ
Kubernetes ๋ฐ GitLab์ ์ฌ์ฉํ CI/CD ๋ชจ๋ฒ ์ฌ๋ก ยป (Dmitry Stolyarov; HighLoad++์์ 7๋ 2017์ XNUMX์ผ); - ยซ
์๊ท๋ชจ ํ๋ก์ ํธ์์์ Kubernetes ๊ฒฝํ ยป (Dmitry Stolyarov; 6๋ 2017์ XNUMX์ผ RootConf์์).
์ถ์ฒ : habr.com