TL; DR
- ์ปจํ ์ด๋์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํ ๋์ ๊ฐ์์ฑ์ ๋ฌ์ฑํ๋ ค๋ฉด ๋ก๊ทธ์ ๊ธฐ๋ณธ ์งํ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
- ๋ ๋น ๋ฅธ ๋ณต๊ตฌ์ ํฅ์๋ ํ๋ ฅ์ฑ์ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ HOP(High Observability ์์น)๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์์ค์์ NOP์๋ ์ ์ ํ ๋ก๊น , ๊ธด๋ฐํ ๋ชจ๋ํฐ๋ง, ์จ์ ์ฑ ๊ฒ์ฌ ๋ฐ ์ฑ๋ฅ/์ ํ ์ถ์ ์ด ํ์ํฉ๋๋ค.
- NOR์ ์์๋ก ๊ฒ์ฌ ์ฌ์ฉ ์ค๋น ํ๋ก๋ธ ะธ ํ์ฑ ํ๋ก๋ธ ์ฟ ๋ฒ๋ค ํฐ์ค.
์ํ ํ์ธ ํ ํ๋ฆฟ์ด๋ ๋ฌด์์ ๋๊น?
๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌํ๊ณ ๊ฐ์ฉ์ฑ์ด ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ ๋ ๋ด๊ฒฐํจ์ฑ๊ณผ ๊ฐ์ ์ธก๋ฉด์ ๊ณ ๋ คํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฅ์ ๋ก๋ถํฐ ์ ์ํ๊ฒ ๋ณต๊ตฌ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๊ฒฐํจ์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ๋ณ๋์ ์ปจํ ์ด๋์ ๋ฐฐ์น๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ฌ์คํฐ๋ฅผ ์ค๊ณํ ๋ k8s์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฉ์ฑ์ ๋์ด๋ ค๋ฉด ํน์ ํจํด์ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ๊ทธ์ค์๋ ์ํ ํ์ธ ํ ํ๋ฆฟ์ด ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์์ k8s์ ํต์ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ์ด๋ Pod๊ฐ ์คํ ์ค์ธ์ง ์ฌ๋ถ๋ฟ ์๋๋ผ ์์ฒญ์ ์์ ํ๊ณ ์๋ตํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด์ด๊ธฐ๋ ํฉ๋๋ค. Kubernetes๊ฐ ํฌ๋ ์ํ์ ๋ํด ๋ ๋ง์ด ์์๋ก ํธ๋ํฝ ๋ผ์ฐํ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ํด ๋ ํ๋ช ํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ ์์น์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์์ ์์ฒญ์ ์๋ตํ ์ ์์ต๋๋ค.
๋์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ ์์น(HOP)
๋์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ์ ์์น์ ๋ค์ ์ค ํ๋์
๋๋ค.
์ ์ค๊ณ๋ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ค I/O ์คํธ๋ฆผ STDERR ๋ฐ STDOUT์ ์ฌ์ฉํ์ฌ ์ฃผ์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ค์์ ์ค์ ๋ชจ๋ํฐ๋ง ์์คํ (์: Prometheus) ๋ฐ ๋ก๊ทธ ์์ง ์์คํ (ELK ์ํํธ์จ์ด ์ ํ๊ตฐ)์ ๋ก๊ทธ๋ฅผ ์ ๋ฌํ๋ filebeat, logstash ๋๋ fluentd์ ๊ฐ์ ๋ณด์กฐ ์๋น์ค์ ๋๋ค. ์๋ ๋ค์ด์ด๊ทธ๋จ์ ์ํ ํ ์คํธ ํจํด ๋ฐ ๋์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ ์์น์ ๋ฐ๋ผ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค.
Kubernetes์์ ์ํ ํ์ธ ํจํด์ ์ด๋ป๊ฒ ์ ์ฉํ๋์?
๊ธฐ๋ณธ์ ์ผ๋ก k8s๋ ์ปจํธ๋กค๋ฌ(
์ด ์์์๋ k8s๊ฐ ๊ธฐ๋ฅ ์ ๊ฒ. ์ด๋ฌํ ์ ํ์ ํ์ธ์์ kubelet์ ์ปจํ
์ด๋์ ํ๋ก์ธ์ค ์ํ๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ค์ง๋์์์ ์ดํดํ๋ฉด ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ๋จ์ํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ์์ํ์ฌ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ ์๊ณ ์ค๋ฅ ๋ฐ์ ์ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๋๋ก ์ค๊ณ๋ ๊ฒฝ์ฐ NOP ๋ฐ ์ํ ํ
์คํธ ํจํด์ ๋ฐ๋ฅด๋ ค๋ฉด ํ๋ก์ธ์ค ์ํ ํ์ธ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ ์ผํ ์ ๊ฐ์ค๋ฌ์ด ์ ์ ๋ค์ ์์ํด๋ ๋ชจ๋ ์ค๋ฅ๊ฐ ์ ๊ฑฐ๋์ง๋ ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ด ๊ฒฝ์ฐ k8s๋ ํฌ๋ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ 2๊ฐ์ง ๋ ๊น์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
ํ์ฑ ํ๋ก๋ธ
๋์ ํ์ฑ ํ๋ก๋ธ kubelet์ 3๊ฐ์ง ์ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค. ์ฆ, ํฌ๋๊ฐ ์คํ ์ค์ธ์ง ์ฌ๋ถ๋ฟ ์๋๋ผ ์์ฒญ์ ์์ ํ๊ณ ์ ์ ํ๊ฒ ์๋ตํ ์ค๋น๊ฐ ๋์๋์ง๋ ํ์ธํฉ๋๋ค.
- Pod์ ๋ํ HTTP ์์ฒญ์ ์ค์ ํฉ๋๋ค. ์๋ต์๋ 200~399 ๋ฒ์์ HTTP ์๋ต ์ฝ๋๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฝ๋ 5xx ๋ฐ 4xx๋ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์์๋ ๋ถ๊ตฌํ๊ณ ํฌ๋์ ๋ฌธ์ ๊ฐ ์์์ ๋ํ๋ ๋๋ค.
- HTTP๊ฐ ์๋ ์๋น์ค(์: Postfix ๋ฉ์ผ ์๋ฒ)๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๋๋ฅผ ํ ์คํธํ๋ ค๋ฉด TCP ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํฉ๋๋ค.
- Pod์ ๋ํ ์์์ ๋ช ๋ น์ (๋ด๋ถ์ ์ผ๋ก) ์คํํฉ๋๋ค. ๋ช ๋ น ์๋ฃ ์ฝ๋๊ฐ 0์ด๋ฉด ํ์ธ์ด ์ฑ๊ณตํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์์ ๋๋ค. ๋ค์ Pod ์ ์์๋ HTTP ์์ฒญ ์ 500 ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ NodeJS ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์์ ํ ๋ ์ปจํ ์ด๋๊ฐ ๋ค์ ์์๋๋์ง ํ์ธํ๊ธฐ ์ํด livenessProbe ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: node500
spec:
containers:
- image: magalix/node500
name: node500
ports:
- containerPort: 3000
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 5
์ด๋ ๋ค๋ฅธ ํฌ๋ ์ ์์ ๋ค๋ฅด์ง ์์ง๋ง ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค. .spec.containers.livenessProbe
. ๋ชจ์ httpGet
HTTP GET ์์ฒญ์ด ์ ์ก๋๋ ๊ฒฝ๋ก๋ฅผ ์๋ฝํฉ๋๋ค(์ด ์์์๋ /
, ๊ทธ๋ฌ๋ ์ ํฌ ์๋๋ฆฌ์ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์์ ์ ์์ต๋๋ค. /api/v1/status
). ๋ ๋ค๋ฅธ livenessProbe๋ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํฉ๋๋ค. initialDelaySeconds
, ์ด๋ ์ง์ ๋ ์๊ฐ(์ด) ๋์ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ์ธ ์์
์ ์ง์ํฉ๋๋ค. ์ปจํ
์ด๋๋ฅผ ์์ํ๋ ๋ฐ ์๊ฐ์ด ํ์ํ๊ณ ๋ค์ ์์ํ๋ฉด ํ๋์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ฐ์ด ํ์ํฉ๋๋ค.
์ด ์ค์ ์ ํด๋ฌ์คํฐ์ ์ ์ฉํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
kubectl apply -f pod.yaml
๋ช ์ด ํ์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Pod์ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
kubectl describe pods node500
์ถ๋ ฅ์ด ๋๋๋ฉด ๋ค์์ ์ฐพ์ผ์ญ์์ค.
๋ณด์๋ค์ํผ livenessProbe๋ HTTP GET ์์ฒญ์ ์์ํ๊ณ , ์ปจํ ์ด๋๋ ์ค๋ฅ 500์ ์์ฑํ์ผ๋ฉฐ(์ด๊ฒ์ด ํ๋ก๊ทธ๋๋ฐ๋ ๋ด์ฉ์) kubelet์ด ์ด๋ฅผ ๋ค์ ์์ํ์ต๋๋ค.
NideJS ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ํ๋ก๊ทธ๋๋ฐ๋์๋์ง ๊ถ๊ธํ๋ค๋ฉด ์ฌ์ฉ๋ app.js ๋ฐ Dockerfile์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฑ.js
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(500, { "Content-type": "text/plain" });
res.end("We have run into an errorn");
});
server.listen(3000, function() {
console.log('Server is running at 3000')
})
๋์ปค ํ์ผ
FROM node
COPY app.js /
EXPOSE 3000
ENTRYPOINT [ "node","/app.js" ]
๋ค์ ์ฌํญ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. livenessProbe๋ ์ปจํ ์ด๋๊ฐ ์คํจํ ๊ฒฝ์ฐ์๋ง ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ๋ค์ ์์ํด๋ ์ปจํ ์ด๋ ์คํ์ ๋ฐฉํดํ๋ ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์ง ์์ผ๋ฉด kubelet์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์กฐ์น๋ฅผ ์ทจํ ์ ์์ต๋๋ค.
์ค๋น ํ๋ก๋ธ
readinessProbe๋ ๋ฌธ์ ํด๊ฒฐ ์์ ์ ์ ์ธํ๊ณ livenessProbes(GET ์์ฒญ, TCP ํต์ ๋ฐ ๋ช ๋ น ์คํ)์ ์ ์ฌํ๊ฒ ์๋ํฉ๋๋ค. ์ค๋ฅ๊ฐ ๊ฐ์ง๋ ์ปจํ ์ด๋๋ ๋ค์ ์์๋์ง ์์ง๋ง ๋ค์ด์ค๋ ํธ๋ํฝ์์ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. ์ปจํ ์ด๋ ์ค ํ๋๊ฐ ๋ง์ ๊ณ์ฐ์ ์ํํ๊ฑฐ๋ ๋ถํ๊ฐ ๋์ ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง๋ค๊ณ ์์ํด ๋ณด์ธ์. livenessProbe์ ๊ฒฝ์ฐ ์๋ต ๊ฐ์ฉ์ฑ ํ์ธ์ด ํธ๋ฆฌ๊ฑฐ๋๊ณ (timeoutSeconds ํ์ธ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด) ๊ทธ ํ kubelet์ด ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ์์๋๋ฉด ์ปจํ ์ด๋๋ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์์ ์ ์ํํ๊ธฐ ์์ํ๊ณ ๋ค์ ์์๋ฉ๋๋ค. ์ด๋ ์๋ต ์๋๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งค์ฐ ์ค์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ก์ ์๋ ์๋์ฐจ๊ฐ ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋๋ฐ ์๋ต์ด ์ง์ฐ๋์ด ์๋์ฐจ๊ฐ ์ฌ๊ณ ๋ฅผ ๋นํ๊ฒ ๋ฉ๋๋ค.
GET ์์ฒญ ์๋ต ์๊ฐ์ 5์ด ์ดํ๋ก ์ค์ ํ๋ redinessProbe ์ ์๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ XNUMX์ด ํ์ GET ์์ฒญ์ ์๋ตํฉ๋๋ค. pod.yaml ํ์ผ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: nodedelayed
spec:
containers:
- image: afakharany/node_delayed
name: nodedelayed
ports:
- containerPort: 3000
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 3000
timeoutSeconds: 2
kubectl์ ์ฌ์ฉํ์ฌ ํฌ๋๋ฅผ ๋ฐฐํฌํด ๋ณด๊ฒ ์ต๋๋ค.
kubectl apply -f pod.yaml
๋ช ์ด ์ ๋ ๊ธฐ๋ค๋ ธ๋ค๊ฐ readinessProbe๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
kubectl describe pods nodedelayed
์ถ๋ ฅ์ด ๋๋๋ฉด ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ๋น์ทํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ณด์๋ค์ํผ kubectl์ ํ์ธ ์๊ฐ์ด 2์ด๋ฅผ ์ด๊ณผํ๋ฉด Pod๋ฅผ ๋ค์ ์์ํ์ง ์์์ต๋๋ค. ๋์ ๊ทธ๋ ์์ฒญ์ ์ทจ์ํ์ต๋๋ค. ์์ ํต์ ์ ์๋ ์ค์ธ ๋ค๋ฅธ ํฌ๋๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
์ด์ ํฌ๋๊ฐ ์คํ๋ก๋๋์์ผ๋ฏ๋ก kubectl์ ์์ฒญ์ ๋ค์ ํฌ๋๋ก ๋ผ์ฐํ ํฉ๋๋ค. GET ์์ฒญ์ ๋ํ ์๋ต์ ๋ ์ด์ ์ง์ฐ๋์ง ์์ต๋๋ค.
๋น๊ต๋ฅผ ์ํด ์์ ๋ app.js ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var http = require('http');
var server = http.createServer(function(req, res) {
const sleep = (milliseconds) => {
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
sleep(5000).then(() => {
res.writeHead(200, { "Content-type": "text/plain" });
res.end("Hellon");
})
});
server.listen(3000, function() {
console.log('Server is running at 3000')
})
TL; DR
ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฑ์ฅํ๊ธฐ ์ ์๋ ๋ก๊ทธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํ์ธํ๋ ์ฃผ์ ์๋จ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ์กฐ์น๋ฅผ ์ทจํ ๋ฐฉ๋ฒ์ด ์์์ต๋๋ค. ๋ก๊ทธ๋ ์ค๋๋ ์๋ ์ฌ์ ํ ์ ์ฉํ๋ฉฐ ๊ธด๊ธ ์ํฉ์ ๋ถ์ํ๊ณ ์์ฌ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ํด ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ๋ก๊ทธ ์์ง ์์คํ
์ผ๋ก ์ ์กํด์ผ ํฉ๋๋ค. [์๋ฅผ ๋ค์ด monit์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ด ์ด ๋ชจ๋ ์์
์ ์ํํ ์ ์์ง๋ง k8s๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ฌ ์ฌ์์ก์ต๋๋ค. :) โ ํธ์ง์ ์ฃผ. ]
์ค๋๋ ์๋ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ์์ ์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ด์ ๋ธ๋๋ฐ์ค์ผ ํ์๊ฐ ์์ต๋๋ค. ์๋์, ๋ชจ๋ํฐ๋ง ์์คํ ์ด ํ๋ก์ธ์ค ์ํ์ ๋ํ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ณ ์์งํ์ฌ ํ์ํ ๊ฒฝ์ฐ ์ฆ์ ๋์ํ ์ ์๋๋ก ํ๋ ์๋ํฌ์ธํธ๋ฅผ ํ์ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ HOP(High Observability ์์น)๋ฅผ ๋ฐ๋ฅด๋ ์ฑ๋ฅ ํ ์คํธ ๋์์ธ ํจํด์ด๋ผ๊ณ ํฉ๋๋ค.
Kubernetes๋ ๊ธฐ๋ณธ์ ์ผ๋ก readinessProbe์ livenessProbe๋ผ๋ ๋ ๊ฐ์ง ์ ํ์ ์ํ ํ์ธ์ ์ ๊ณตํฉ๋๋ค. ๋ ๋ค ๋์ผํ ์ ํ์ ๊ฒ์ฌ(HTTP GET ์์ฒญ, TCP ํต์ ๋ฐ ๋ช ๋ น ์คํ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํฌ๋์ ๋ฌธ์ ์ ๋์ํ์ฌ ๋ด๋ฆฌ๋ ๊ฒฐ์ ์ด ๋ค๋ฆ ๋๋ค. livenessProbe๋ ์ค๋ฅ๊ฐ ๋ค์ ๋ฐ์ํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ๊ณ , readinessProbe๋ ๋ฌธ์ ์ ์์ธ์ด ํด๊ฒฐ๋ ๋๊น์ง ์์ ํธ๋ํฝ์์ ํฌ๋๋ฅผ ๊ฒฉ๋ฆฌํฉ๋๋ค.
์ ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ์๋ ๋ ๊ฐ์ง ์ ํ์ ๊ฒ์ฌ๊ฐ ๋ชจ๋ ํฌํจ๋์ด์ผ ํ๋ฉฐ, ํนํ ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ถฉ๋ถํ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ํ ๋ชจ๋ํฐ๋ง ์์คํ (Prometheus)์ ์ค์ํ ์ํ ์งํ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ํ์ํ API ์๋ํฌ์ธํธ๋ ํ์๋์ด์ผ ํฉ๋๋ค.
์ถ์ฒ : habr.com