์ด ๋ฌธ์๋ Kubernetes์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ์๋ํ๋ ๋ฐฉ์, ์ฅ๊ธฐ ์ฐ๊ฒฐ์ ํ์ฅํ ๋ ๋ฐ์ํ๋ ์ํฉ, HTTP/2, gRPC, RSocket, AMQP ๋๋ ๊ธฐํ ์ฅ๊ธฐ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ธก ๋ฐธ๋ฐ์ฑ์ ๊ณ ๋ คํด์ผ ํ๋ ์ด์ ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. .
Kubernetes์์ ํธ๋ํฝ์ด ์ฌ๋ถ๋ฐฐ๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์กฐ๊ธ ์ค๋ช ํฉ๋๋ค.
Kubernetes๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์ํ ๋ ๊ฐ์ง ํธ๋ฆฌํ ์ถ์ํ, ์ฆ ์๋น์ค์ ๋ฐฐํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ฐฐํฌ๋ ํน์ ์๊ฐ์ ์คํ๋์ด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ฌ๋ณธ ์์ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋๋ก ๋ฐฐํฌ๋๊ณ IP ์ฃผ์๊ฐ ํ ๋น๋ฉ๋๋ค.
์๋น์ค๋ ๊ธฐ๋ฅ ๋ฉด์์ ๋ก๋ ๋ฐธ๋ฐ์์ ์ ์ฌํฉ๋๋ค. ์ฌ๋ฌ ํฌ๋์ ํธ๋ํฝ์ ๋ถ์ฐํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์.
- ์๋ ๋ค์ด์ด๊ทธ๋จ์์๋ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ก๋ ๋ฐธ๋ฐ์์ ์ธ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์๋ ์๋น์ค๋ผ๊ณ ํ๋ฉฐ IP ์ฃผ์๊ฐ ํ ๋น๋ฉ๋๋ค. ๋ค์ด์ค๋ ์์ฒญ์ Pod ์ค ํ๋๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
- ๋ฐฐํฌ ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค ์๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ๋ค์ ํญ๋ชฉ์์ ์ง์ ํ์ฅํ ํ์๋ ๊ฑฐ์ ์์ต๋๋ค.
- ๊ฐ ํฌ๋์๋ ์์ฒด IP ์ฃผ์๊ฐ ํ ๋น๋ฉ๋๋ค.
์๋น์ค๋ฅผ IP ์ฃผ์ ๋ชจ์์ผ๋ก ์๊ฐํ๋ฉด ์ ์ฉํฉ๋๋ค. ์๋น์ค์ ์ ์ํ ๋๋ง๋ค ๋ชฉ๋ก์์ IP ์ฃผ์ ์ค ํ๋๊ฐ ์ ํ๋์ด ๋์ ์ฃผ์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ปฌ 10.96.45.152 ์์ฒญ์ด ์๋น์ค์ ์์ ๋ฉ๋๋ค.
- ์๋น์ค๋ ์ธ ๊ฐ์ Pod ์ฃผ์ ์ค ํ๋๋ฅผ ๋์์ผ๋ก ์ ํํฉ๋๋ค.
- ํธ๋ํฝ์ด ํน์ ํฌ๋๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ฐํธ์๋์ ๋ฐฑ์๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ๋ํ ์๋น์ค์ ๋ฐฐํฌ๊ฐ ๋ชจ๋ ์ ๊ณต๋ฉ๋๋ค.
ํ๋ฐํธ์๋๊ฐ ๋ฐฑ์๋์ ์์ฒญํ ๋ ๋ฐฑ์๋๊ฐ ์ ๊ณตํ๋ ํฌ๋ ์๋ฅผ ์ ํํ ์ ํ์๋ ์์ต๋๋ค. XNUMX๊ฐ, XNUMX๊ฐ ๋๋ XNUMX๊ฐ๊ฐ ์์ ์ ์์ต๋๋ค.
๋ํ ํ๋ฐํธ์๋๋ ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ๋ ํฌ๋์ ์ฃผ์์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฆ ๋๋ค.
ํ๋ฐํธ์๋๊ฐ ๋ฐฑ์๋์ ์์ฒญํ ๋ ๋ณ๊ฒฝ๋์ง ์๋ ๋ฐฑ์๋ ์๋น์ค์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฌ๊ธฐ ๋ณด์ด๋ ๋ฐฉ๋ฒ.
- 1 ๋ฏธ๋ง์์๋ ๋ด๋ถ ๋ฐฑ์๋ ๊ตฌ์ฑ ์์๋ฅผ ์์ฒญํฉ๋๋ค. ๋ฐฑ์๋์ ๋ํด ํน์ ํญ๋ชฉ์ ์ ํํ๋ ๋์ ์๋น์ค์ ์์ฒญํฉ๋๋ค.
- ์๋น์ค๋ ๋ฐฑ์๋ Pod ์ค ํ๋๋ฅผ ๋์ ์ฃผ์๋ก ์ ํํฉ๋๋ค.
- ํธ๋ํฝ์ ์๋น์ค์์ ์ ํํ Pod 1์์ Pod 5๋ก ์ด๋ํฉ๋๋ค.
- Under 1์ ์๋น์ค ๋ค์ ์จ๊ฒจ์ ธ ์๋ Under 5์ ๊ฐ์ Pod์ ์๋ฅผ ์ ํํ ์์ง ๋ชปํฉ๋๋ค.
ํ์ง๋ง ์๋น์ค๋ ์์ฒญ์ ์ ํํ ์ด๋ป๊ฒ ๋ฐฐํฌํฉ๋๊น? ๋ผ์ด๋ ๋ก๋น ๋ฐธ๋ฐ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋์? ๊ทธ๊ฒ์ ์์ ๋ด ์๋ค.
Kubernetes ์๋น์ค์ ๊ท ํ ์กฐ์
Kubernetes ์๋น์ค๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค. IP ์ฃผ์์ ํฌํธ๊ฐ ํ ๋น๋ ์๋น์ค์๋ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
ํด๋ฌ์คํฐ์ ๋ ธ๋์ ๋ก๊ทธ์ธํ๊ณ netstat -ntlp ๋ช ๋ น์ ์คํํ์ฌ ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์๋น์ค์ ํ ๋น๋ IP ์ฃผ์๋ ์ฐพ์ ์ ์์ต๋๋ค.
์๋น์ค์ IP ์ฃผ์๋ ์ ์ด ๊ณ์ธต, ์ปจํธ๋กค๋ฌ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(etcd)์ ๊ธฐ๋ก๋ฉ๋๋ค. ๋์ผํ ์ฃผ์๊ฐ ๋ค๋ฅธ ๊ตฌ์ฑ์์์ธ kube-proxy์์ ์ฌ์ฉ๋ฉ๋๋ค.
Kube-proxy๋ ๋ชจ๋ ์๋น์ค์ ๋ํ IP ์ฃผ์ ๋ชฉ๋ก์ ์์ ํ๊ณ ํด๋ฌ์คํฐ์ ๊ฐ ๋
ธ๋์ iptables ๊ท์น ์ธํธ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฌํ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค. "์๋น์ค์ IP ์ฃผ์๊ฐ ๋ณด์ด๋ฉด ์์ฒญ์ ๋์ ์ฃผ์๋ฅผ ์์ ํ์ฌ ํฌ๋ ์ค ํ๋๋ก ๋ณด๋ด์ผ ํฉ๋๋ค."
์๋น์ค IP ์ฃผ์๋ ์ง์ ์ ์ผ๋ก๋ง ์ฌ์ฉ๋๋ฉฐ ํด๋น IP ์ฃผ์ ๋ฐ ํฌํธ๋ฅผ ์์ ํ๋ ํ๋ก์ธ์ค์์๋ ์ ๊ณต๋์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ดํด๋ณด์.
- ์ธ ๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ๊ฐ ๋ ธ๋์๋ Pod๊ฐ ์์ต๋๋ค.
- ๋ฒ ์ด์ง์์ผ๋ก ์น ํด์ง ๋ฌถ์ ํฌ๋๋ ์๋น์ค์ ์ผ๋ถ์ ๋๋ค. ์๋น์ค๊ฐ ํ๋ก์ธ์ค๋ก ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์์ผ๋ก ํ์๋ฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ Pod๋ ์๋น์ค๋ฅผ ์์ฒญํ๊ณ ์ฐ๊ฒฐ๋ Pod ์ค ํ๋๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
- ํ์ง๋ง ์๋น์ค๋ ์กด์ฌํ์ง ์๊ณ , ํ๋ก์ธ์ค๋ ์กด์ฌํ์ง ์์ต๋๋ค. ์ด๋ป๊ฒ ์๋ํ๋์?
- ์์ฒญ์ด ๋ ธ๋๋ฅผ ๋ ๋๊ธฐ ์ ์ iptables ๊ท์น์ ๋ฐ๋ฆ ๋๋ค.
- iptables ๊ท์น์ ์๋น์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ํด๋น IP ์ฃผ์๋ฅผ ํด๋น ์๋น์ค์ ์ฐ๊ฒฐ๋ Pod์ IP ์ฃผ์ ์ค ํ๋๋ก ๋ฐ๊ฟ๋๋ค.
- ์์ฒญ์ ์ ํจํ IP ์ฃผ์๋ฅผ ๋์ ์ฃผ์๋ก ์์ ํ๊ณ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ๋คํธ์ํฌ ํ ํด๋ก์ง์ ๋ฐ๋ผ ์์ฒญ์ ๊ฒฐ๊ตญ Pod์ ๋๋ฌํฉ๋๋ค.
iptables๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ ์ ์๋์?
์๋์, iptables๋ ํํฐ๋ง์ ์ฌ์ฉ๋๋ฉฐ ๊ท ํ ์กฐ์ ์ ์ํด ์ค๊ณ๋์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ ์ผ๋ จ์ ๊ท์น์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก Kubernetes์์ ๊ตฌํ๋๋ ๊ฒ์ ๋๋ค.
ํฌ๋๊ฐ XNUMX๊ฐ ์๋ ๊ฒฝ์ฐ kube-proxy๋ ๋ค์ ๊ท์น์ ์์ฑํฉ๋๋ค.
- ํ๋ฅ ์ด 33%์ธ ์ฒซ ๋ฒ์งธ ํ์๋ฅผ ์ ํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๊ท์น์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ๋ฅ ์ด 50%์ธ ๋ ๋ฒ์งธ ๊ท์น์ ์ ํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๊ท์น์ผ๋ก ์ด๋ํฉ๋๋ค.
- ์๋์์ ์ธ ๋ฒ์งธ๋ฅผ ์ ํํฉ๋๋ค.
์ด ์์คํ ์ ์ฌ์ฉํ๋ฉด ๊ฐ Pod๊ฐ 33%์ ํ๋ฅ ๋ก ์ ํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Pod 2 ๋ค์์ Pod 1๊ฐ ์ ํ๋๋ค๋ ๋ณด์ฅ๋ ์์ต๋๋ค.
์ฃผ์: iptables๋ ๋ฌด์์ ๋ถํฌ๋ฅผ ๊ฐ๋ ํต๊ณ ๋ชจ๋์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๊ท ํ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด์์ ์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ด์ ์๋น์ค ์๋ ๋ฐฉ์์ ์ดํดํ์ผ๋ฏ๋ก ๋ ํฅ๋ฏธ๋ก์ด ์๋น์ค ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Kubernetes์ ์ฅ๊ธฐ ์ฐ๊ฒฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฅ๋์ง ์์ต๋๋ค.
ํ๋ฐํธ์๋์์ ๋ฐฑ์๋๋ก์ ๊ฐ HTTP ์์ฒญ์ ์ด๋ฆฌ๊ณ ๋ซํ๋ ๋ณ๋์ TCP ์ฐ๊ฒฐ์ ํตํด ์ ๊ณต๋ฉ๋๋ค.
ํ๋ฐํธ์๋๊ฐ ๋ฐฑ์๋์ ์ด๋น 100๊ฐ์ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ 100๊ฐ์ ์๋ก ๋ค๋ฅธ TCP ์ฐ๊ฒฐ์ด ์ด๋ฆฌ๊ณ ๋ซํ๋๋ค.
ํ๋์ TCP ์ฐ๊ฒฐ์ ์ด๊ณ ๋ชจ๋ ํ์ HTTP ์์ฒญ์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ์ฒ๋ฆฌ ์๊ฐ๊ณผ ๋ก๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
HTTP ํ๋กํ ์ฝ์๋ HTTP ์ฐ๊ฒฐ ์ ์ง ๋๋ ์ฐ๊ฒฐ ์ฌ์ฌ์ฉ์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋จ์ผ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ HTTP ์์ฒญ ๋ฐ ์๋ต์ ๋ณด๋ด๊ณ ๋ฐ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค. ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ชจ๋ ์ ์ ํ๊ฒ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ค์ ์์ฒด๋ ๊ฐ๋จํ๊ณ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ ํ๊ฒฝ์์ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
๋ค์์ ๋ค์ํ ์ธ์ด๋ก ๋ ์์์ ๋ํ ๋งํฌ์ ๋๋ค.
Node.js์ ์ฐ๊ฒฐ ์ ์ง Spring ๋ถํธ์์ ์ฐ๊ฒฐ ์ ์ง Python์ ์ฐ๊ฒฐ ์ ์ง .NET์ ์ฐ๊ฒฐ ์ ์ง
Kubernetes ์๋น์ค์์ ์ฐ๊ฒฐ ์ ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
ํ๋ฐํธ์๋์ ๋ฐฑ์๋ ๋ชจ๋ ์ฐ๊ฒฐ ์ ์ง๋ฅผ ์ง์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
ํ๋ก ํธ์๋ ์ฌ๋ณธ XNUMX๊ฐ์ ๋ฐฑ์๋ ์ฌ๋ณธ XNUMX๊ฐ๊ฐ ์์ต๋๋ค. ํ๋ฐํธ์๋๋ ์ฒซ ๋ฒ์งธ ์์ฒญ์ ํ๊ณ ๋ฐฑ์๋์ ๋ํ TCP ์ฐ๊ฒฐ์ ์ฝ๋๋ค. ์์ฒญ์ด ์๋น์ค์ ๋๋ฌํ๋ฉด ๋ฐฑ์๋ Pod ์ค ํ๋๊ฐ ๋์ ์ฃผ์๋ก ์ ํ๋ฉ๋๋ค. ๋ฐฑ์๋๊ฐ ์๋ต์ ๋ณด๋ด๊ณ , ํ๋ก ํธ์๋๊ฐ ์ด๋ฅผ ์์ ํฉ๋๋ค.
์๋ต์ ๋ฐ์ ํ TCP ์ฐ๊ฒฐ์ด ๋ซํ๋ ์ผ๋ฐ์ ์ธ ์ํฉ๊ณผ ๋ฌ๋ฆฌ ์ด์ ๋ ์ถ๊ฐ HTTP ์์ฒญ์ ์ํด ์ด๋ฆฐ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
ํ๋ฐํธ์๋๊ฐ ๋ฐฑ์๋์ ๋ ๋ง์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์ด๋ป๊ฒ ๋๋์?
์ด๋ฌํ ์์ฒญ์ ์ ๋ฌํ๊ธฐ ์ํด ๊ฐ๋ฐฉํ TCP ์ฐ๊ฒฐ์ด ์ฌ์ฉ๋๋ฉฐ ๋ชจ๋ ์์ฒญ์ ์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์ ๋ฌ๋ ๋์ผํ ๋ฐฑ์๋๋ก ์ด๋๋ฉ๋๋ค.
iptables๊ฐ ํธ๋ํฝ์ ์ฌ๋ถ๋ฐฐํ๋ฉด ์ ๋๋์?
์ด ๊ฒฝ์ฐ๊ฐ ์๋๋๋ค.
TCP ์ฐ๊ฒฐ์ด ์์ฑ๋๋ฉด ํธ๋ํฝ์ด ์ด๋ํ ํน์ ๋ฐฑ์๋๋ฅผ ์ ํํ๋ iptables ๊ท์น์ ๊ฑฐ์นฉ๋๋ค.
๋ชจ๋ ํ์ ์์ฒญ์ ์ด๋ฏธ ์ด๋ ค ์๋ TCP ์ฐ๊ฒฐ์ ์์ผ๋ฏ๋ก iptables ๊ท์น์ ๋ ์ด์ ํธ์ถ๋์ง ์์ต๋๋ค.
์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์.
- ์ฒซ ๋ฒ์งธ Pod๋ ์๋น์ค์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
- ๋น์ ์ ๋ค์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ด๋ฏธ ์๊ณ ์์ต๋๋ค. ์๋น์ค๊ฐ ์กด์ฌํ์ง ์์ง๋ง ์์ฒญ์ ์ฒ๋ฆฌํ๋ iptables ๊ท์น์ด ์์ต๋๋ค.
- ๋ฐฑ์๋ Pod ์ค ํ๋๊ฐ ๋์ ์ฃผ์๋ก ์ ํ๋ฉ๋๋ค.
- ์์ฒญ์ด ํฌ๋์ ๋๋ฌํฉ๋๋ค. ์ด ์์ ์์ ๋ ํฌ๋ ์ฌ์ด์ ์๊ตฌ TCP ์ฐ๊ฒฐ์ด ์ค์ ๋ฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ Pod์ ๋ชจ๋ ํ์ ์์ฒญ์ ์ด๋ฏธ ์ค์ ๋ ์ฐ๊ฒฐ์ ํต๊ณผํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ต ์๊ฐ์ด ๋นจ๋ผ์ง๊ณ ์ฒ๋ฆฌ๋์ด ๋์์ง์ง๋ง ๋ฐฑ์๋๋ฅผ ํ์ฅํ๋ ๋ฅ๋ ฅ์ ์์ค๋ฉ๋๋ค.
๋ฐฑ์๋์ ๋ ๊ฐ์ ํฌ๋๊ฐ ์๊ณ ์ง์์ ์ธ ์ฐ๊ฒฐ์ด ์๋ ๊ฒฝ์ฐ์๋ ํธ๋ํฝ์ ํญ์ ๊ทธ ์ค ํ๋๋ก ์ด๋ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๊น?
Kubernetes๋ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ๊ท ํ์ ๋ง์ถ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด ์์ ์ ๊ทํ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
์๋น์ค๋ ์๋ํฌ์ธํธ๋ผ๊ณ ๋ถ๋ฆฌ๋ IP ์ฃผ์์ ํฌํธ์ ๋ชจ์์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค์์ ์๋ํฌ์ธํธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๊ณ ์๋ํฌ์ธํธ ๊ฐ์ ์์ฒญ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๊ฐ Pod์ ๋ํ ์๊ตฌ ์ฐ๊ฒฐ์ ์ด๊ณ ๋ผ์ด๋ ๋ก๋น์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ฐ๊ฒฐ ๊ฐ์ ์์ฒญ ๊ท ํ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
์๋๋ฉด ๋ ์ ์ฒญํ์ธ์.
๊ท ํ ์กฐ์ ์ ๋ด๋นํ๋ ํด๋ผ์ด์ธํธ์ธก ์ฝ๋๋ ๋ค์ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
- ์๋น์ค์์ ์๋ํฌ์ธํธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค.
- ๊ฐ ๋์ ์ ๋ํด ์๊ตฌ ์ฐ๊ฒฐ์ ์ฝ๋๋ค.
- ์์ฒญ์ ํด์ผ ํ ๊ฒฝ์ฐ ์ด๋ ค ์๋ ์ฐ๊ฒฐ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ๋์ ๋ชฉ๋ก์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ , ์ ๋์ ์ ์์ฑํ๊ฑฐ๋, ๋ชฉ๋ก์ด ๋ณ๊ฒฝ๋๋ฉด ๊ธฐ์กด ์๊ตฌ ์ฐ๊ฒฐ์ ๋ซ์ต๋๋ค.
์ด๊ฒ์ด ๋ค์๊ณผ ๊ฐ์ ๋ชจ์ต์ผ ๊ฒ์ ๋๋ค.
- ์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๋ ์ฒซ ๋ฒ์งธ Pod ๋์ ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฒญ ๊ท ํ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ์ด๋ค ํฌ๋๊ฐ ์๋น์ค์ ์ผ๋ถ์ธ์ง ๋ฌป๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
- ๋ชฉ๋ก์ด ์์ผ๋ฉด ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๋์ ์ฐ๊ฒฐํฉ๋๋ค.
- ๊ทํ๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋ด๋นํฉ๋๋ค.
์ด์ ์ง๋ฌธ์ด ์๊น๋๋ค. ์ด ๋ฌธ์ ๋ HTTP ์ฐ๊ฒฐ ์ ์ง์๋ง ์ ์ฉ๋ฉ๋๊น?
ํด๋ผ์ด์ธํธ ์ธก ๋ก๋ ๋ฐธ๋ฐ์ฑ
HTTP๋ ์ง์์ ์ธ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ํ๋กํ ์ฝ์ด ์๋๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฌธ์๋ฅผ ์์ฒญํ๊ฑฐ๋ ๊ฒ์ํด์ผ ํ ๋๋ง๋ค TCP ์ฐ๊ฒฐ์ด ์ด๋ฆฌ์ง ์์ต๋๋ค.
๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์๊ตฌ TCP ์ฐ๊ฒฐ์ด ์ด๋ฆฌ๊ณ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ Kubernetes์ ๋ฐฐํฌ๋๊ณ ์ก์ธ์ค๊ฐ ์๋น์ค๋ก ์ ๊ณต๋๋ ๊ฒฝ์ฐ ์ด์ ์น์ ์์ ์ค๋ช ํ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ ๋ณธ์ด ๋ค๋ฅธ ๋ณต์ ๋ณธ๋ณด๋ค ๋ ๋ง์ด ๋ก๋๋ฉ๋๋ค. Kube-proxy์ Kubernetes๋ ์ฐ๊ฒฐ ๊ท ํ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฟผ๋ฆฌ ๊ท ํ์ ์ ์งํ๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ๋ผ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ค๋ฅธ ์ต์ ์ด ์์ ์ ์์ต๋๋ค.
๋ค์์ Node.js์์ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ์ก์ธ์คํ๋ ์์ ๋๋ค.
var mysql = require('mysql');
var poolCluster = mysql.createPoolCluster();
var endpoints = /* retrieve endpoints from the Service */
for (var [index, endpoint] of endpoints) {
poolCluster.add(`mysql-replica-${index}`, endpoint);
}
// Make queries to the clustered MySQL database
์๊ตฌ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋กํ ์ฝ๋ ๋ง์ด ์์ต๋๋ค.
- WebSocket ๋ฐ ๋ณด์ WebSocket
- HTTP / 2
- gRPC
- R์์ผ
- AMQP
์ฌ๋ฌ๋ถ์ ์ด๋ฏธ ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋๋ถ๋ถ์ ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ํ๋กํ ์ฝ์ด ๊ทธ๋ ๊ฒ ์ธ๊ธฐ๊ฐ ์๋ค๋ฉด ์ ํ์คํ๋ ๋ฐธ๋ฐ์ฑ ์๋ฃจ์ ์ด ์๋ ๊ฑธ๊น์? ํด๋ผ์ด์ธํธ ๋ก์ง์ ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค์ดํฐ๋ธ Kubernetes ์๋ฃจ์ ์ด ์๋์?
Kube-proxy ๋ฐ iptables๋ Kubernetes์ ๋ฐฐํฌํ ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ํธ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
REST API๋ฅผ ๋ ธ์ถํ๋ ์น ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด์ด ์ข์ ๊ฒ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์๊ตฌ TCP ์ฐ๊ฒฐ์ด ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ชจ๋ Kubernetes ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์๊ตฌ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ๋ฐฑ์๋ ์ ์ฒด์ ๋ก๋๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค. Kubernetes์๋ ์ด ๊ฒฝ์ฐ์ ๋ํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์๋ฃจ์ ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์คํ ๋์์ด ๋ ์ ์๋ ์ต์ ์ด ์์ต๋๋ค.
Kubernetes์์ ์ฅ๊ธฐ ์ฐ๊ฒฐ ๊ท ํ ์กฐ์
Kubernetes์๋ ๋ค ๊ฐ์ง ์ ํ์ ์๋น์ค๊ฐ ์์ต๋๋ค.
- ํด๋ฌ์คํฐIP
- ๋ ธ๋ํฌํธ
- ๋ก๋๋ฐธ๋ฐ์
- ๋ชฉ์ด ์๋
์ฒ์ ์ธ ๊ฐ์ง ์๋น์ค๋ kube-proxy๊ฐ iptables ๊ท์น์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฐ์ IP ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค. ํ์ง๋ง ๋ชจ๋ ์๋น์ค์ ๊ธฐ๋ณธ ๊ธฐ๋ฐ์ ํค๋๋ฆฌ์ค ์๋น์ค์ ๋๋ค.
ํค๋๋ฆฌ์ค ์๋น์ค์๋ ์ฐ๊ฒฐ๋ IP ์ฃผ์๊ฐ ์์ผ๋ฉฐ ์ฐ๊ฒฐ๋ ํฌ๋(์๋ํฌ์ธํธ)์ IP ์ฃผ์ ๋ฐ ํฌํธ ๋ชฉ๋ก์ ๊ฒ์ํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ๋ง ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ ์๋น์ค๋ Headless ์๋น์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
ClusterIP ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ฌํญ์ด ํฌํจ๋ ํค๋๋ฆฌ์ค ์๋น์ค์ ๋๋ค.
- ๊ด๋ฆฌ ๊ณ์ธต์ ์ฌ๊ธฐ์ IP ์ฃผ์๋ฅผ ํ ๋นํฉ๋๋ค.
- Kube-proxy๋ ํ์ํ iptables ๊ท์น์ ์์ฑํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด kube-proxy๋ฅผ ๋ฌด์ํ๊ณ ํค๋๋ฆฌ์ค ์๋น์ค์์ ์ป์ ์๋ํฌ์ธํธ ๋ชฉ๋ก์ ์ง์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํํ ์ ์์ต๋๋ค.
ํ์ง๋ง ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฌํ ๋ ผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ถ๊ฐํ ์ ์์ต๋๊น?
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฏธ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ ์ด ์์ ์ด ๋ถ๊ฐ๋ฅํด ๋ณด์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ฒด ์ต์ ์ด ์์ต๋๋ค.
์๋น์ค ๋ฉ์๊ฐ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค
์๋ง๋ ํด๋ผ์ด์ธํธ์ธก ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ ๋ต์ด ์๋นํ ํ์ค์ ์ด๋ผ๋ ์ ์ ์ด๋ฏธ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋๋ฉด ๋ค์์ด ์ํ๋ฉ๋๋ค.
- ์๋น์ค์์ IP ์ฃผ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค.
- ์ฐ๊ฒฐ ํ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
- ๋์ ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ์ฌ ํ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญ์ ํ๊ณ ๋๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ผ๋ถ ๋ ผ๋ฆฌ(์: ๋ผ์ด๋ ๋ก๋น)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ์์ฒญ์ ์คํํฉ๋๋ค.
์ด ๋จ๊ณ๋ WebSocket, gRPC ๋ฐ AMQP ์ฐ๊ฒฐ ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค.
์ด ๋ ผ๋ฆฌ๋ฅผ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ Istio ๋๋ Linkerd์ ๊ฐ์ ์๋น์ค ๋ฉ์๋ฅผ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Service Mesh๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐํํฉ๋๋ค.
- ์๋น์ค IP ์ฃผ์๋ฅผ ์๋์ผ๋ก ๊ฒ์ํฉ๋๋ค.
- WebSocket ๋ฐ gRPC์ ๊ฐ์ ์ฐ๊ฒฐ์ ํ์ธํฉ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ๊ท ํ์ ์ ์งํฉ๋๋ค.
Service Mesh๋ ํด๋ฌ์คํฐ ๋ด์ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋์ง๋ง ๋ฆฌ์์ค ์ง์ฝ์ ์ ๋๋ค. ๋ค๋ฅธ ์ต์ ์ผ๋ก๋ Netflix Ribbon๊ณผ ๊ฐ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Envoy์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค.
๊ท ํ ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฌ์ฉํ์ง ์๋๋ก ์ ํํด๋ ์ฌ์ ํ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์์ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์๋ฒ๋ณด๋ค ํด๋ผ์ด์ธํธ๊ฐ ๋ ๋ง๋ค๋ฉด ์ด๋ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
๋ ๊ฐ์ ์๋ฒ์ ์ฐ๊ฒฐ๋๋ ๋ค์ฏ ๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ท ํ ์กฐ์ ์ด ์๋๋ผ๋ ๋ ์๋ฒ๊ฐ ๋ชจ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๊ฒฐ์ด ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋์ง ์์ ์ ์์ต๋๋ค. XNUMX๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด ์์ ์ ์์ง๋ง ๋ ์๋ฒ๊ฐ ๋ชจ๋ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ ๋ฌธ์ ๋ ๋ฐ๋ ์ํฉ์ด๋ค.
ํด๋ผ์ด์ธํธ ์๊ฐ ์ ๊ณ ์๋ฒ ์๊ฐ ๋ง์ผ๋ฉด ๋ฆฌ์์ค ํ์ฉ๋๊ฐ ๋ฎ์์ง ์ ์์ผ๋ฉฐ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ด ๋ํ๋ ์ ์์ต๋๋ค.
๋ ๊ฐ์ ํด๋ผ์ด์ธํธ์ ๋ค์ฏ ๊ฐ์ ์๋ฒ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฅ ์ข์ ๊ฒฝ์ฐ์๋ XNUMX๊ฐ์ ์๋ฒ ์ค XNUMX๊ฐ์ ์๋ฒ์ ๋ํ XNUMX๊ฐ์ ์๊ตฌ ์ฐ๊ฒฐ์ด ์์ ๊ฒ์ ๋๋ค.
๋๋จธ์ง ์๋ฒ๋ ์ ํด ์ํ๊ฐ ๋ฉ๋๋ค.
์ด ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ ์ํ์ ํ์ฅ์ ๋์์ด ๋์ง ์์ต๋๋ค.
๊ฒฐ๋ก
Kubernetes ์๋น์ค๋ ๋๋ถ๋ถ์ ํ์ค ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋๋ฆฌ์ค์์ ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, gRPC ๋๋ WebSocket๊ณผ ๊ฐ์ ์๊ตฌ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ ์ฝ๋ก ์์ ์ ์์ํ๋ฉด ์๋น์ค๊ฐ ๋ ์ด์ ์ ํฉํ์ง ์์ต๋๋ค. Kubernetes๋ ์๊ตฌ TCP ์ฐ๊ฒฐ์ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด๋ ํด๋ผ์ด์ธํธ์ธก ๊ท ํ์ ์ผ๋์ ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
ํ์์ ์ค๋นํ ๋ฒ์ญ
์ฃผ์ ์ ๋ํด ๋ ์ฝ์ ๋ด์ฉ:
Kubernetes์ ์ธ ๊ฐ์ง ์์ค์ ์๋ ํ์ฅ ๋ฐ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ .๊ตฌํ์ ์ํ ํ ํ๋ฆฟ์ ๊ฐ์ถ ๋ถ๋ฒ ๋ณต์ ์ ์ ์ Kubernetes .๋์งํธ ํ์ ์ ๊ดํ ํ ๋ ๊ทธ๋จ ์ฑ๋ .
์ถ์ฒ : habr.com