Pod Internal Networking
K8s์ Pod์์ ํจ๊ป ๋์๊ฐ๋ container๋ค์ ์๋ก ๋คํธ์ํฌ๋ฅผ ๊ณต์ ํ๋ค!
๋ ์ปจํ ์ด๋๊ฐ ํ๋์ Pod ์์์ ์คํ๋๋ multi container Pod์ ์๊ฐํด๋ณด์. ๋ ์ปจํ ์ด๋๋ ์ด๋ป๊ฒ ํต์ ํ ์ ์์๊น? Docker Network๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ docker-compose์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๋ฉด, ์ปจํ ์ด๋ ์ด๋ฆ์ผ๋ก ์๋ก ํต์ ํ ์ ์๊ธด ํ๋ค. K8s Pod์์๋ ์ปจํ ์ด๋ ์ด๋ฆ์ผ๋ก ํต์ ํ ์ ์์๊น?
K8s Pod์์๋ ์ปจํ
์ด๋ ์ด๋ฆ์ผ๋ก ํต์ ํ๋๊ฒ ์๋๋ผ loalhost:[port]
๋ก ํต์ ํด์ผ ํ๋ค. docker-compose์ฒ๋ผ ์ปจํ
์ด๋ ์ด๋ฆ์ผ๋ก ํต์ ํ๋๊ฒ ์๋๋ค. ์ฌ์ค K8s Pod์ ๋ด๋ถ์ ์ผ๋ก ํ๋์ ํธ์คํธ๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ๋ง์น ํธ์คํธ ์ปดํจํฐ์์ docker run
ํ๋ ๊ฒ๊ณผ ๊ฐ์ด localhost
๋ก ์ ๊ทผํ๋ ๊ฒ์ด๋ค.
์์๋ฅผ ํตํด ์ด๋ฐ ์ ์ ์ข๋ ์ดํด๋ณด์.
Pod ๋ด๋ถ์์ ๋์ผ ํฌํธ ์ฌ์ฉ ๋ถ๊ฐ
์๋์ ๊ฐ์ด ๋์ผ ํฌํธ๋ฅผ ์ฐ๋ ๋ ์ปจํ ์ด๋๋ฅผ ํ๋์ Pod์ผ๋ก ์คํ์ํฌ ์๋ ์๋ค.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: container1
image: nginx:alpine
- name: container2
image: nginx:alpine
์ด ๊ฒฝ์ฐ, container2
์์ ์ด๋ฏธ ์ ์ ํ๊ณ ์๋ ํฌํธ๋ฅผ ์ฐ๋ ค๊ณ ํ๋ค๊ณ ์ค๋ฅ๊ฐ ๋๋ค.
Pod ๋ด๋ถ์์ localhost๋ก ํต์
์ด๋ฒ์๋ container2
๋ฅผ 6379 ํฌํธ๋ฅผ ์ฐ๋ redis
๋ก ๋ฐ๊ฟ๋ณด์.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: container1
image: nginx:alpine
- name: container2
image: redis:alpine # redis๋ `6379` ํฌํธ์์ ์คํ๋๋ค
๊ทธ๋ฆฌ๊ณ nc
๋ช
๋ น์ด๋ก localhost
์ ํด๋น ํฌํธ๊ฐ ์ด๋ ค ์๋์ง ํ์ธํด๋ณด์.
$ k exec -it multi-container-pod -- nc -vz localhost 80
localhost ([::1]:80) open
$ k exec -it multi-container-pod -- nc -vz localhost 6379
localhost ([::1]:6379) open
80
, 6379
ํฌํธ๋ฅผ ์ด๋ผ๊ณ ๋ช
์ํ์ง๋ ์์๋๋ฐ, localhost
์์ ํด๋น ํฌํธ๋ค์ด ์ด๋ ค ์๋ค.
์ฆ, K8s Pod์ ํ๋์ ํธ์คํธ ๋จธ์ ์ผ๋ก์จ container๋ค์ ๋๋ฆฌ๊ณ ์๋ ๊ฒ์ด๋ค!