LivenessProbe왜 필요한지?
어플리케이션을 운영하는 과정에서 어플리케이션의 상태를 지속적으로 모니터링하고,
어플리케이션의 비정상 동작을 빠르게 감지하여 안정적인 서비스를 제공하는 것은 매우 중요합니다.
어플리케이션이 장애 상태에 빠지면 서비스 중단 및 고객 불만을 초래할 수 있기 때문에,
이러한 문제를 사전에 예방하고 빠르게 대응하기 위해
Kubernetes의 LivenessProbe와 Spring Boot Actuator를 사용합니다.
특징
- 어플리케이션의 생존 여부를 체크하는데 사용됩니다.
- 주기적으로 어플리케이션의 상태를 확인하고, 응답이 오지 않거나 오류가 발생한 경우 해당 POD를 재시작합니다.
- 어플리케이션이 예상되는 문제 또는 무한 루프, 데드락 등으로 인해 정상적으로 동작하지 않을 때 장애를 빠르게 탐지하여 회복하는 데 사용됩니다.
- 예를 들어, 웹 서버가 HTTP 요청을 처리하지 못하고 응답하지 않는 경우 LivenessProbe가 이를 감지하여 해당 POD를 재시작합니다.
템플릿 예제
yamlCopy code
# Kubernetes LivenessProbe 설정 예제
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app-container
image: my-app-image
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
명령 실행 예제
bashCopy code
# Kubernetes POD 생성
kubectl create -f my-app-pod.yaml
# POD 상태 확인
kubectl get pods
# Spring Boot Actuator HealthCheck EndPoint 호출
curl <http://my-app-host:8080/health>
이 블로그 글에서는 Kubernetes의 LivenessProbe와 Spring Boot Actuator를 활용하여 어플리케이션의 상태를 지속적으로 감지하고 모니터링하는 방법에 대해 상세히 설명하였습니다. 이를 통해 어플리케이션의 안정적인 운영을 도와주며, 서비스의 가용성과 신뢰성을 향상시킬 수 있습니다.
ReadinessProbe 왜 필요한지?
Kubernetes를 사용하여 여러 개의 POD로 분산되어 동작하는 어플리케이션을 관리할 때,
어플리케이션이 요청을 처리할 준비가 되었는지를 체크하는 것이 중요합니다.
ReadinessProbe를 사용하여 어플리케이션이 요청을 처리할 준비가 되지 않은 상태라면
해당 POD로의 트래픽을 배제하여 사용자 요청에 대한 서비스 지연을 최소화합니다.
이를 통해 어플리케이션의 안정성과 가용성을 강화할 수 있습니다.
특징
- 어플리케이션이 요청을 처리할 준비가 되었는지를 체크하는데 사용됩니다.
- 주로 어플리케이션이 시작되었지만 초기화가 완료되지 않았거나, 트래픽을 처리하기에 아직 부적합한 경우 해당 POD로의 트래픽을 차단합니다.
- ReadinessProbe는 어플리케이션이 요청을 처리할 준비가 될 때까지 다른 POD로 트래픽을 라우팅하여 사용자 요청에 대한 지연을 최소화하고 안정적인 서비스를 제공합니다.
- 예를 들어, 어플리케이션이 데이터베이스 초기화를 수행하고 있으며 이 과정이 완료되기 전까지는 트래픽을 받아들일 준비가 되지 않을 수 있습니다. 이런 경우 ReadinessProbe를 사용하여 트래픽을 차단하여 초기화가 완료될 때까지 사용자의 요청을 처리하지 않도록 합니다.
템플릿 예제
yamlCopy code
# Kubernetes ReadinessProbe 설정 예제
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app-container
image: my-app-image
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 5
명령 실행 예제
bashCopy code
# Kubernetes POD 생성
kubectl create -f my-app-pod.yaml
# POD 상태 확인
kubectl get pods
# ReadinessProbe 상태 확인
kubectl describe pod my-app-pod
이 블로그 글에서는 Kubernetes의 ReadinessProbe를 활용하여
어플리케이션의 요청 처리 준비 상태를 지속적으로 모니터링하는 방법에 대해 설명하였습니다.
ReadinessProbe를 적절하게 설정함으로써 어플리케이션의 안정성을 강화하고
사용자에게 더 나은 서비스 경험을 제공할 수 있습니다.
'DevOps > k8s' 카테고리의 다른 글
[K8s] JSONPATH 활용하여 원하는 데이터 확인하기 (0) | 2023.11.16 |
---|---|
[CKA] Namespace 내에 Service Account 생성 → Role 생성→ RoleBinding (0) | 2023.11.16 |
[CKA] ETCD 백업 및 복구 테스트 (0) | 2023.11.08 |
[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅 (0) | 2023.07.27 |
[K8s] Kubernetes(K8s)의 기본 개념과 용어: POD, 서비스, kubelet (2) | 2023.07.27 |