# 8.๊ธฐ๋ณธ Object - Service
Service๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ Cluster IP๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด Service๋ฅผ Pod์ ์ฐ๊ฒฐ์์ผ ๋์ผ๋ฉด Service์ IP๋ฅผ ํตํด์ Pod์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ ์ ๋ฐฐ์ด Pod์๋ Cluster๋ด์์ ์ ๊ทผํ ์ ์๋ IP๊ฐ ์๋๋ฐ ์ Service๋ก ์ ๊ทผํ ๊น?
๊ทธ ์ด์ ๋ Pod์ ํน์ฑ์ผ๋ก ์์คํ ์ฅ์ or ์ฑ๋ฅ ์ฅ์ ๋ก ์ธํด ์ธ์ ๋ ์ง ์ฃฝ์ ์ ์๋ค.
์ฃฝ์ผ๋ฉด ์ฌ์์ฑ ๋๋๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ํ๋ฐ์ฑ์!
๊ทธ๋์ Pod IP๋ ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋ค.
ํ์ง๋ง Service๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ง์ฐ์ง ์๋ํ ์ญ์ ๋๊ฑฐ๋ ์ฌ์์ฑ๋์ง ์์.
๋ฐ๋ผ์ Service๋ก ์ ๊ทผํ๋ฉด ํญ์ ์ฐ๊ฒฐ๋์ด์๋ Pod์ ์ ์ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค.
Service๋ Pod์ ์ ๊ทผ์ ๋์์ฃผ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ช๊ฐ์ง ์ข ๋ฅ๋ก ๋๋๋ค.
# 1.ClusterIP
โฒ Service - ClusterIP ๋ฐฉ์
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์์ผ๋ก ์ด IP๋ ์ฟ ๋ฒ๋คํฐ์ค Cluster ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
Pod์ ์๋ IP์ ํน์ง์ด ๋๊ฐ๋ค!
๋ฐ๋ผ์ Cluster๋ด์ ๋ชจ๋ Object๋ ์ ๊ทผํ ์ ์์ง๋ง ์ธ๋ถ(External)์์๋ ์ ๊ทผํ ์ ์๋ค.
Pod๋ฅผ ์ฌ๋ฌ๊ฐ ์ฐ๊ฒฐํ ์ ์๊ณ Service๋ ํธ๋ํฝ์ ๋ถ์ฐํด์ Pod์ ์ ๋ฌํด์ค๋ค.
yaml ๋ด์ฉ์ ํ์ธํด๋ณด์.
โฒ ClusterIP์ yaml ํ์ผ
- Service์ Pod๊ฐ ์ฐ๊ฒฐ๋๊ธฐ ์ํ selector์ label์ด ๊ทธ๋๋ก ์ฌ์ฉ๋๋ค.
- type: ClusterIP ๋ ์๋ตํ ์ ์์ (๊ธฐ๋ณธ๊ฐ์ด ClusterIP์!)
- port: 9000 ๋ 9000๋ฒ ํฌํธ๋ก ๋ค์ด์ฌ ๊ฒฝ์ฐ target์ 8080ํฌํธ๋ก ์ฐ๊ฒฐ๋๋ค๋ ๋ด์ฉ
# 2.NodePort
NodePort ํ์ ์ผ๋ก ๋ง๋ค์ด๋ Service์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ClusterIP๊ฐ ํ ๋น์ด ๋์ด์ ๊ฐ์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๋ค.
โฒ Service - NodePort ํ์
# โนNodePort์ ํฐ ํน์ง
Kubernetes Cluster์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ Node์๊ฒ ๋๊ฐ์ Port๊ฐ ํ ๋น์ด ๋์ด์ ์ธ๋ถ๋ก๋ถํฐ ์ด๋ Node๋ ๊ฐ์ ๊ทธ IP์ ํฌํธ๋ก ์ ์์ ํ๋ฉด ํด๋น Service์ ์ฐ๊ฒฐ์ด ๋๋ค!
์ด Service๋ ์์ ์ ์ฐ๊ฒฐ๋์ด์๋ Pod์ ํธ๋ํฝ์ ์ ๋ฌํด์ค๋ค.
# ์ฃผ์ํ ์ !
- pod๊ฐ ์๋ node์๋ง ํฌํธ๊ฐ ํ ๋น๋๋ ๊ฒ์ด ์๋๊ณ ๋ชจ๋ node์ Port๊ฐ ๋ง๋ค์ด์ง๋ค.
yaml ํ์ผ์ ํ์ธํด๋ณด์.
โฒ NodePort yamlํ์ผ
- type: NodePort โ NodePort ํ์ ์ผ๋ก ์ค์
- nodePort: port๋ฒํธ โ Port๋ฒํธ๋ฅผ ์ค์
- 30000~32767๊ฐ์ผ๋ก ์ค์ ์ด ๊ฐ๋ฅํ๊ณ ์ ์ง ์๋๋ค๋ฉด ์์์ ๋ฒ์๋ด๋ก ์ค์ ๋๋ค.
# ์ถ๊ฐ์ ์ธ ์์ฑ
๋ง์ฝ ๊ฐ Node์ Pod๊ฐ ํ๋์ฉ ์ฌ๋ผ๊ฐ์๋ค๊ณ ๊ฐ์ ํ๋ฉด Node1๋ก ์ ๊ทผํ๋๋ผ๋ ์ด Service๋ Node2์ ์๋ Pod์ ํธ๋ํฝ ์ ๋ฌ ๊ฐ๋ฅ
Service์ ์ฅ์์๋ ์ด๋ค Node์์ ์จ ํธ๋ํฝ์ธ์ง ์๊ด์์ด ์์ ์๊ฒ ์ฐ๊ฒฐ๋ Node์ Pod์๊ฒ ์ ๋ฌํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ yamlํ์ผ์ externalTrafficPolicy: Local
๋ก ์ค์ ํ ๊ฒฝ์ฐ
ํน์ Node ํฌํธ์ IP๋ก ์ ๊ทผํ๋ ํธ๋ํฝ์ Service๊ฐ ํด๋น Node ์์ ์ฌ๋ ค์ ธ์๋ Pod์๋ง ํธ๋ํฝ์ ์ ๋ฌํ ์ ์์!
# 3.Load Balancer
Load Balancer ํ์ ์ Service๋ ์์์ ๋ค๋ฃฌ NodePort์ ์ฑ๊ฒฉ์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์๋ค.
# โน์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ
- ๊ฐ๊ฐ์ Node์ ํธ๋ํฝ์ ๋ถ์ฐ์์ผ์ฃผ๋ ์ญํ ์ ํจ
# โน์ฃผ์ํ ์
- Load Balancer์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ๋ถ ์ ์ IP์ฃผ์๋ ๊ฐ๋ณ์ ์ผ๋ก Kubernetes๋ฅผ ์ค์นํ์๋ ์๊ธฐ์ง ์์
- ๋ณ๋๋ก ์ธ๋ถ ์ ์ IP๋ฅผ ํ ๋นํด์ค์ผํจ(ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋์ด์์ด์ผ ํจ)
- ๋ง์ฝ GCP, AWS, Azure, OpenStack์ Kubernetes ํ๋ซํผ์ ์ฌ์ฉํ๋ฉด ์์ฒด์ ์ผ๋ก ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋์ด์์
- ๋ฐ๋ผ์ Load Balancer ํ์ ์ผ๋ก Service๋ฅผ ๋ง๋ค๋ฉด ์์์ ์ธ๋ถ์์ ์ ์ํ ์ ์๋ IP๋ฅผ ๋ง๋ค์ด์ค!
โฒ Service - Load Balancer ํ์
yaml ํ์ผ์ ํ์ธํด๋ณด๋ฉด
โฒ Load Balancer ํ์ yaml ํ์ผ
ํฌ๊ฒ ๋ค๋ฅธ์ ์ด ์์ด ํ์
์ type: LoadBalancer
๋ก ์ค์ ํ๋ฉด ๋๋ค.
Service๋ ์ด์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
# 4.์ธ์ ์ด๋ค Service๋ฅผ ์ฌ์ฉํ ๊น?
Service ์ฌ์ฉ๋ฒ์ ์์๋๋ฐ ๊ฐ๊ฐ์ Service ํ์ ์ ์ด๋ ์ํฉ์ ์ฌ์ฉํด์ผ ๋ ๊น?
# โน1. ClusterIP
- ClusterIP๋ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์์
- Cluster ๋ด๋ถ์์๋ง ์ฌ์ฉํ๋ IP
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ IP์ ์ ๊ทผํ ์ ์๋ ๋์์ Cluster ์ธ๊ฐ๋ ์ฌ์ฉ์ (์ด์์)
# ์ฃผ๋ ์์ : Kubernetes ๋ด๋ถ ๋์ฌ๋ณด๋ ๊ด๋ฆฌ
๊ฐ Pod์ ์๋น์ค์ํ ๋๋ฒ๊น
# โน2. NodePort
- ๋ฌผ๋ฆฌ์ ์ธ Host์ IP๋ฅผ ํตํด Pod์ ์ ๊ทผํ ์ ์์!
- ๋๋ถ๋ถ์ Host IP๋ ๋ณด์์ ์ผ๋ก ๋ด๋ถ๋ง์์๋ง ์ ๊ทผํ ์ ์๊ฒ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑ
- ๋ฐ๋ผ์ Node Port๋ ํด๋ฌ์คํฐ ๋ฐ์ ์์ง๋ง ๋ด๋ถ๋ง ์์์ ์ ๊ทผํด์ผํ ๋ ์ฐ์
- ์ผ์์ ์ธ ์ธ๋ถ ์ฐ๋์ฉ์ผ๋ก๋ ์ฌ์ฉํ ์ ์์
๋ด๋ถํ๊ฒฝ์์ ๊ฐ๋ฐ์ ํ๋ค๊ฐ ์ธ๋ถ์ ๊ฐ๋จํ ๋ฐ๋ชจ๋ฅผ ๋ณด์ฌ์ค ๋ ์ข ์ข ๋คํธ์ํฌ ์ค๊ณ๊ธฐ์ ํฌํธํฌ์๋ฉ์ ํด์ ์ธ๋ถ์์ ๋ด๋ถ์ ์ฐ๊ฒฐํด์ NodePort๋ฅผ ์ ๊น ๋ซ์ด๋๊ณ ์ฌ์ฉํ ์ ์์
# โน3. Load Balancer
# ์ค์ง์ ์ผ๋ก ์ธ๋ถ ์์คํ ์ ๋ ธ์ถํ ๋ ์ฌ์ฉํ๋ค.
๋ด๋ถ IP๊ฐ ๋ ธ์ถ๋์ง ์๊ณ ์ธ๋ถ IP์ ์์ ์ ์ผ๋ก ์๋น์ค๋ฅผ ๋ ธ์ถ์ํฌ ์ ์์