exec-liveness.yaml : ์คํ์ ํตํ ๋ผ์ด๋ธ๋์ค
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-commandapiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: registry.k8s.io/busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
- /tmp/healthy๋ผ๋ ํ์ผ์ ๋ง๋ค๊ณ 30์ด ์๋ค๊ฐ ํ์ผ์ ์ญ์ ํ๋ ๋์
- livenessProbe: ์ด์์๋์ง ์ ๊ฒ์ ํด์ฃผ๋ ์ญํ
- cat /tmp/healthy๋ฅผ ์คํ
- ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ์ปค๋งจ๋ ์คํ ์ฑ๊ณต์ 0 return (์ปจํ ์ด๋ ์ ์ง)
- ์คํจ์ ๊ทธ์ธ ๊ฐ return(์ปจํ ์ด๋ ์ฌ์์)
- initailDelaySeconds: ์ ์ ์คํ ํ ์์ํ๊ธฐ๊น์ง ์๊ฐ(์ด)
- periodSeconds: ์ ๊ฒ ์ฃผ๊ธฐ ์๊ฐ(์ด)
http-liveness.yaml : HTTP GET์์ฒญ์ ํตํ ๋ผ์ด๋ธ๋์ค
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-requestapiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-http spec: containers: - name: liveness image: registry.k8s.io/liveness args: - /server livenessProbe: httpGet: path: /healthz port: 8080 httpHeaders: - name: Custom-Header value: Awesome initialDelaySeconds: 3 periodSeconds: 3
- httpGet: get๋ฉ์๋๋ก /healthz๋ผ๋ uri๋ก ์์ฒญ์ ์๋ต์ด 200์ผ๋ก ์ค๋ฉด ์ด์์๋ค๋ ๊ฒ์ ํ์ธ (200~399)
tcp-liveness-readiness.yaml
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-tcp-liveness-probeapiVersion: v1 kind: Pod metadata: name: goproxy labels: app: goproxy spec: containers: - name: goproxy image: registry.k8s.io/goproxy:0.1 ports: - containerPort: 8080 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 15 periodSeconds: 10 livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 15 periodSeconds: 10
- readiness : TCP ์ฐ๊ฒฐ ํ์ธ์ ํตํด์ ์ด์์๋ ๊ฒ์ ํ์ธ
- readiness ํ๋ก๋ธ๊ฐ ์ปจํ ์ด๋ ์์ 15์ด ํ์ kubelet์ ์ ์ก
- goproxy ์ปจํ ์ด๋์ 8080ํฌํธ์ ์ฐ๊ฒฐ๋จ
- probe ์ฑ๊ณต ์, pod๋ ์ค๋น์ํ๋ก marked ๋จ (์๋น์ค๋ฅผ ์์ํด๋ ๋๋ ์ํ)
ports: - name: liveness-port containerPort: 8080 hostPort: 8080 livenessProbe: httpGet: path: /healthz port: liveness-port failureThreshold: 1 periodSeconds: 10 startupProbe: httpGet: path: /healthz port: liveness-port failureThreshold: 30 periodSeconds: 10
- ์์ํ ๋๊น์ง ์คํ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ํ ์ ์๋ ์๊ฐ์ ๊ฐ์ง
- maximum minutes : 30 * 10 = 300s = 5min
- Startupํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ๋ฉด, livenss probe๊ฐ container deadlocks์ ๋น ๋ฅธ ์๋ต์ ๋ณด๋.
- ๋ง์ผ startup probe๊ฐ ์ ๋ ์ฑ๊ณต๋์ง ์์ผ๋ฉด, ์ปจํ ์ด๋๋ 300์ด ํ์ killed ๋๊ณ pod์ restartPolicy์ ๋ฐ๋ผ ์ข ์๋จ.
- Startup ํ๋ก๋ธ ์คํ ๋์์๋ livenssํ๋ก๋ธ ์คํ ๋์ง ์๊ณ ์์.
(StartUp ํ๋ก๋ธ์ ์ฑ๊ณตํ์ธ ํ ์ฌ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ธํ liveness ๋ฅผ ํตํด ์ปจํ ์ด๋ ์คํ ์ํ๋ฅผ ํ์ธ)
kubectl create -f <Probe์์ฑํ์ผ.yaml>
ex) kubectl create -f exec-liveness.yaml
kubectl describe pod <pod ์ด๋ฆ>