๐Kubernetes์ Container Probe๋?
Kubernetes์์ Pod๋ฅผ ๋ฐฐํฌํ๋ฉด Pod์์ ์ ์ํ ์ปจํ ์ด๋๊ฐ ์คํ๋๋๋ฐ์. ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋์ด์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์ ์ ์๋ํ ๋ ๋น๋ก์ Pod๋ฅผ ํตํด ์ํ๋ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
Pod๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ํ๋ค๋ณด๋ฉด ๋์ ์ค์ด๋ ์ปจํ ์ด๋์ ์ํ๊ฐ ์ ์์ธ์ง ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธ์ด ํ์ํ ๋๊ฐ ์์ต๋๋ค. ํน์ ํด๋น ์ปจํ ์ด๋๊ฐ ์ธ๋ถ ํธ๋ํฝ์ ๋ฐ์ ์ค๋น๊ฐ ๋์๋์ง ์์์ผ ํ ๋๋ ์์ฃ .
์ด๋ ๊ฒ ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ง๋จํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก, Container Probe์ ๋๋ค.
๐ฉบContainer Probe์ ์ง๋จ ์ ํ๊ณผ Probe์ ์ข ๋ฅ
Kubernetes์ Container Probe๋ Manifest์ ์ปจํ ์ด๋ ๋ ๋ฒจ์์ ์ ์๋๋๋ฐ์. ์ ์๋ ์ง๋จ ์ค์ ์ ๋ฐ๋ผ kubelet์ด ํด๋น ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ง๋จ์ ์ํํฉ๋๋ค.
Probe๋ ์๋์ ๊ฐ์ด 4๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๋๋ก ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ง๋จํ ์ ์์ต๋๋ค.
- exec
- ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํํ ๋ช ๋ น์ด ์ง์
- ๋ช
๋ น์ด ์คํ ํ ์ํ ์ฝ๋๊ฐ
0
์ด๋ฉด ์ฑ๊ณต์ผ๋ก ์ง๋จ - exec๋ ์ํ๋ ๋๋ง๋ค ์ปจํ ์ด๋ ๋ด์ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ Node์ CPU ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ฃผ์๊ฐ ํ์
- grpc
- gRPC ์์ฒญ์ผ๋ก ์ง๋จํ๋ฉฐ, gRPC Health Check์ด ๋ฏธ๋ฆฌ ๊ตฌํ๋์ด ์์ด์ผ ํจ
- ์๋ต status๊ฐ
SERVING
์ด๋ฉด ์ฑ๊ณต์ผ๋ก ์ง๋จ
- httpGet
- ํน์ port ๋ฐ path๋ก Pod์ IP์ ๋ํด HTTP
GET
์์ฒญ์ผ๋ก ์ง๋จ - ์๋ต status code๊ฐ
200
์ด์400
๋ฏธ๋ง์ด๋ฉด ์ฑ๊ณต์ผ๋ก ์ง๋จ
- ํน์ port ๋ฐ path๋ก Pod์ IP์ ๋ํด HTTP
- tcpSocket
- ํน์ port๋ก Pod์ IP์ ๋ํด TCP ์์ฒญ์ผ๋ก ์ง๋จ
- ํด๋น port๊ฐ ์ด๋ ค ์์ผ๋ฉด ์ฑ๊ณต์ผ๋ก ์ง๋จ
์ด๋ ๊ฒ ์ํํ ์ง๋จ ๊ฒฐ๊ณผ๋ ์๋ 3๊ฐ์ง ์ค ํ๋๋ก ๋์ต๋๋ค.
- Success: ์ง๋จ ์ฑ๊ณต
- Failure: ์ง๋จ ์คํจ
- Unknown: ์ง๋จ ์คํจ, Faliure์ ๋ฌ๋ฆฌ kubelet์ด ์ถ๊ฐ ์ง๋จ ์คํ
kubelet์ด ์ํํ๋ Probe๋ ์๋์ ๊ฐ์ด 3๊ฐ์ง ์ ํ์ผ๋ก ๋๋๋๋ฐ์.
- Readiness Probe
- Liveness Probe
- Startup Probe
๊ฐ Probe์ ๋ํด ์๋์์ ๋ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
โจReadiness, Liveness, Startup Probe
Readiness Probe
Readiness Probe๋ ํธ๋ํฝ๊ณผ ๊ด๋ จ์ด ์๋๋ฐ์. Readiness Probe๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์ปจํ ์ด๋๋ก ํธ๋ํฝ์ด ๋ค์ด์ค๋ ์์ ์ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฆ, ์ปจํ ์ด๋์ ์ํ ์ง๋จ ๊ฒฐ๊ณผ๊ฐ ์ฑ๊ณต์ธ ์์ ๋ถํฐ ํด๋น ์ปจํ ์ด๋์ ํธ๋ํฝ์ด ๋ค์ด์ค๋ ๊ฒ์ ํ์ฉํ๊ณ ์ถ์ ๋ Readiness Probe๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์ฃ .
๊ฐ Probe๋ ์ปจํ ์ด๋ ๋ ๋ฒจ์์ ์ ์ํ๋ค๊ณ ํ๋๋ฐ์. ์๋ Pod Manifest ์์ ๋ก Probe๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์ ์์ ์์ Readiness Probe๋ฅผ ์ ์ํ๋ ๋ถ๋ถ๋ง ์ดํด๋ณด๋ฉด ํด๋น Probe์ ์๋ ๋ฐฉ์์ ์๋์ ๊ฐ์ต๋๋ค.
- ์ Readiness Probe๋ HTTP GET ์์ฒญ์ผ๋ก ์ง๋จ ์ํ (
httpGet
) - HTTP GET ์์ฒญ์ ๋ณด๋ด๋ Port์ ๊ฒฝ๋ก๋
8080
๋ฐ/healthz
- kubelet์ด ์ฒซ Probe ์ง๋จ์ ์ํ๋๋ ์์ ์ ์ปจํ
์ด๋ ์คํ ํ 15์ด ๋ค (
initialDelaySeconds
) - kubelet์ 10์ด ๊ฐ๊ฒฉ์ผ๋ก Probe ์ง๋จ ์ํ (
periodSeconds
)
์ ์์ ์์ ์ปจํ ์ด๋์ readinessProbe ํ๋๋ง ์ ์๋์์ง๋ง, ํ์์ ๋ฐ๋ผ ์ปจํ ์ด๋์ ๋ํด Probe๋ฅผ ์ข ๋ฅ๋ณ๋ก ๋ชจ๋ ์ ์ํ ์๋ ์์ต๋๋ค.
Liveness Probe
Liveness Probe๋ ๋์ ์ค์ธ ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ง๋จํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
Kubernetes์ ๋ฐฐํฌ๋ ์ปจํ
์ด๋์ ํ๋ก์ธ์ค์ ์ด์๊ฐ ์๊ธฐ๊ฑฐ๋ ํ๋ก์ธ์ค์ ์ํ๊ฐ Unhealthy์ธ ๊ฒฝ์ฐ, kubelet์ด ์ด๋ฅผ ๊ฐ์งํ์ฌ ์๋์ผ๋ก Pod์ restartPolicy
(์ฌ์์ ์ ์ฑ
)์ ๋ฐ๋ผ ์กฐ์น๋ฅผ ์ทจํ๊ธฐ ๋๋ฌธ์ Liveness Probe๊ฐ ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค.
ํ์ง๋ง Probe์ ์ปจํ ์ด๋ ์ํ ์ง๋จ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ข ๋ฃ ๋๋ ์ฌ์์์ด ํ์ํ ๊ฒฝ์ฐ๋ผ๋ฉด Liveness Probe๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์์ ์ฝ๋์์ ๋ดค๋ ๊ฒ์ฒ๋ผ, ๋ชจ๋ Probe๋ spec.containers
๋ ๋ฒจ์์ ์ ์ํ ์ ์๋๋ฐ์. ์ ์ฝ๋์ exec๋ฅผ ์ํํ๋ Liveness Probe๋ฅผ ์ถ๊ฐ๋ก ์ ์ํ๋ค๋ฉด ์๋์ ๊ฐ๊ฒ ์ต๋๋ค.
์ ์์ ์ฒ๋ผ Liveness Probe์ Readiness Probe๋ฅผ ๋์ผํ ์ปจํ ์ด๋์ ๋ํด ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ด ๊ฐ Probe์ ์ญํ ์ํ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
- Readiness Probe๋ก ํด๋น ์ปจํ ์ด๋๊ฐ ์ค๋น๋ ๋๊น์ง ๋ค์ด์ค๋ ํธ๋ํฝ ์ ์ด
- Liveness Probe๋ก ํด๋น ์ปจํ ์ด๋ ๋์ ์ค์ ์ง๋จ ์คํจ ์ ์๋์ผ๋ก ์ฌ์์
Startup Probe
๋ง์ง๋ง์ผ๋ก Startup Probe๋, ๊ทธ ์ด๋ฆ์ฒ๋ผ ์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์์ํ๋์ง ์ฌ๋ถ๋ฅผ ์ง๋จํฉ๋๋ค.
๊ฐ๋ํ๋ ๋ฐ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ปจํ
์ด๋์ ์ํ๋ฅผ ์ง๋จํด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด, Liveness Probe์ periodSeconds
๊ฐ์ ๊ธธ๊ฒ ์ค์ ํด์ ์ง๋จ ์ฃผ๊ธฐ๋ฅผ ๋ํ๊ธฐ๋ณด๋ค๋ Startup Probe๋ฅผ ์ ์ํด์ ์ปจํ
์ด๋์ ์์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์
ํ๋ ๊ฒ์ด ์ข์๋ฐ์.
๊ทธ๋์ผ Liveness Probe๋ก๋ ๋์ ์ค์ธ ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ ์ ํ ์ฃผ๊ธฐ๋ก ์ง๋จํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Startup Probe๋ ์๋์ ๊ฐ์ด ์ ์ํ ์ ์์ต๋๋ค.
์ ์์ ๋ฅผ ๋ณด๋ฉด failureThreshold
(์ต๋ ์คํจ ํ์ฉ ํ์) ๊ฐ์ด ์ค์ ๋์ด ์๋๋ฐ์.
ํด๋น Startup Probe๋ ์ต๋ 300์ด(30 * 10) ๋์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปจํ
์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํํ๋์ง๋ฅผ ์ง๋จํ๊ณ , 300์ด๊ฐ ์ง๋๋๋ก ์ง๋จ์ ์คํจํ๋ฉด Pod์ restartPolicy
(์ฌ์์ ์ ์ฑ
)์ ๋ฐ๋ผ ์ปจํ
์ด๋๋ฅผ ์ฌ์์ํ๊ฑฐ๋ ์ข
๋ฃํ๊ฒ ๋ฉ๋๋ค.
ํ ๊ฐ์ง ์ฐธ๊ณ ํ ์ ์, Startup Probe์ ์ง๋จ์ด ์ฑ๊ณตํ๊ธฐ ์ ๊น์ง Readiness Probe์ Liveness Probe๊ฐ ์คํ๋์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ๊ฐ Probe๋ ์ํ ์์ ๊ณผ ์ญํ ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ปจํ ์ด๋์ ์ฑ๊ฒฉ์ด๋ ์ด์ ์ ์ฑ ์ ๋ฐ๋ผ ์ ์ ํ ์กฐํฉ์ผ๋ก Probe๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋์ฑ ํจ๊ณผ์ ์ผ๋ก Pod๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ํ ์ ์์ต๋๋ค.