728x90
✍ Posted by Immersive Builder Seong
Liveness Probes
쿠블릿(kubelet)은 컨테이너를 언제 재시작할지 알기 위해 Liveness Probes를 사용합니다. Liveness Probes는 쿠버네티스에서 컨테이너가 정상적으로 실행 중인지를 확인하는 메커니즘입니다.
예를 들어 컨테이너는 살아 있지만 어플리케이션이 정상 동작하지 않는 상황을 가정해봅시다. 코드의 버그로 인해 어플리케이션이 무한루프에 빠진 상황이라면 어떨까요? 기본적으로 쿠버네티스는 컨테이너가 실행 중이면 어플리케이션이 실행 중인 것으로 간주합니다. 따라서 우리는 사용자가 서비스를 제공받을 수 있도록 새로운 컨테이너를 재시작할 필요가 있습니다. 이 때, 컨테이너를 재시작하기 위해 정의한 내용이 바로 Liveness Probes 입니다.
Liveness Probes는 컨테이너 내부의 어플리케이션이 실제로 동작 중인지 여부를 주기적으로 체크합니다. 만약 헬스체크가 실패한다면 기존 컨테이너를 삭제하고 새로운 컨테이너를 생성하게 됩니다.
아래는 Liveness Probes를 적용한 예시입니다.
apiVersion: 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
failureThreshold: 3
추가 옵션에 대한 설명은 아래와 같습니다.
옵션 | 설명 |
initialDelaySeconds | 어플리케이션 초기 설정으로 인한 지연 시간 (단위: 초) |
periodSeconds | Probe를 실행하는 주기 (단위: 초) |
failure Threshold | Readiness Probes가 실패할 경우 재시도 횟수 (디폴트: 3) |
또한, LivenessProbes 옵션으로 사용 가능한 형식은 httpGet, tcpSocket, gRPC, exec command 등이 있습니다.
- httpGet
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
- tcpSocket
livenessProbe:
tcpSocket:
port: 8080
- gRPC
livenessProbe:
grpc:
port: 2379
- exec command
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
[출처]
728x90
'K8s > Core Concept' 카테고리의 다른 글
[K8s] Jobs & CronJobs (0) | 2024.11.26 |
---|---|
[K8s] Readiness Probes 란? (0) | 2024.11.23 |
[K8s] 소프트웨어 배포 전략(Software Deployment Strategies) (0) | 2024.11.19 |
[K8s] CoreDNS 란? (0) | 2024.11.16 |
[K8s] Helm 이란? (1) | 2024.11.14 |