Liveness Probe란?
- pod가 계속 실행할 수 있음을 보장
- pod의 spec에 정의
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx:1.14
name: nginx
livenessProbe: //추가
httpGet:
path: /
port: 80
ports:
- containerPort: 80
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
LivenessProbe 매커니즘
- httpGet probe : 지정한 IP주소, port, path에 HTTP GET 요청을 보내 해당 container가 응답하는지를 확인
반환코드가 200이 아닌 값이 나오면 오류로 인식하고 container를 다시 시작
livenessProbe:
httpGet:
path: /
port: 80
- tcpSocket probe : 지정된 포트에 TCP 연결을 시도
연결되지 않으면 container를 다시 시작
livenessProbe:
tcpSocket:
port: 22
- exec probe : exec 명령을 전달하고 명령의 종료코드가 0이 아니면 container를 다시 시작
livenessProbe:
exec:
command:
- ls
- /data/file
LivenessProbe 매개 변수
- periodSeconds : health check 반복 실행 시간(초)
- initialDelaySeconds : pod 실행 후 delay할 시간(초)
- timeoutSeconds : health check후 응답을 기다리는 시간(초)
- sucessThreshold : 응답 성공 기준 연속횟수
- failureThreshold : 응답 실패 기준 연속횟수
[ Hands-on ]
- 동작되는 pod내의 container에 /tmp/healthy 파일이 있는지 5초마다 확인
- pod 실행 후 10초 후부터 검사
- 성공횟수는 1회, 실패횟수는 연속 2회로 구성
apiVersion: v1
kind: Pod
metadata:
name: liveness-exam
spec:
containers:
- image: busybox
name: busybox-container
args:
- /bin/bash
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- ls
- /tmp/healthy
successThreshold: 1
failureThreshold: 2
initialDelaySeconds: 10
periodSeconds: 5
참고 :
[따배쿠] 5-2. 쿠버네티스 Pod - livenessProbe를 이용해서 Self-healing Pod 만들기
'INFRA > DevOps' 카테고리의 다른 글
[K8s] Pod에 Resource 할당(cpu/memory requests, limits) & K8s Pod 환경변수 설정과 실행 패턴 (0) | 2022.09.21 |
---|---|
[K8s] Init container & Infra container (0) | 2022.09.14 |
[K8s] Container 정리와 Single / Multi Container Pod 생성 (0) | 2022.08.29 |
[K8s] kubernetes namespace, yaml template (0) | 2022.08.25 |
Secret (0) | 2022.08.22 |
댓글