쿠버네티스의 Self-Handling
쿠버네티스는 운영 수준의 컨테이너 오케스트레이션 플랫폼으로, 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 모니터링, 복구할 수 있는 기능들을 제공한다.
특히 Self-handling 기능에는 livenessProbe라는 것이 있다. livenessProbe는 컨테이너를 진단해서 정상적인지 검증하고, 그렇지 않다면 restart를 한다. 이전에는 개발자가 직접 모니터링을 해서 애플리케이션 상태를 확인하는데, 쿠버네티스는 이를 자동화해준다.

운영 수준의 컨테이너 오케스트레이션
K8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템입니다. 애플리케이션을 구성하는 컨테이너들의 쉬운 관리 및 발견을 위
kubernetes.io
CrashLoopBackOff
Spring Boot 애플리케이션 파드를 배포한 뒤 정상 작동을 확인했었다.
중간에 DB관련 파드를 삭제하였고, 이때 기존 파드는 어떻게 됐는지 확인해보자! (쿠버네티스가 자가 치유를 위해 노력하는지 확인해보자)

admin-prod-~ 중 하나가 CrashLoopBackOff 상태가 되었다.
이 상태는 컨테이너가 실행되자마자 죽고 계속 재시도하는 상황을 의미한다.
다시 말해서, 중간에 DB 연결 정보가 바뀌었음을 쿠버네티스가 감지하고, 계속해서 재시작을 시도하는 상태였다.
애플리케이션이 예외를 던지며 바로 종료되는 경우, 환경변수 등의 필수 설정이 누락된 경우, 외부 의존성(DB 등)이 끊긴 경우 연결이 실패하면서 CrashLoopBackOff 상태로 빠질 수 있다.
즉 Deployment의 역할은 항상 원하는 상태를 유지할 수 있도록 해주고, 이 상태에서 벗어나면 쿠버네티스가 컨테이너를 재시작해준다.
1. restartPolicy
restartPolicy는 컨테이너가 죽었을 때 재시작 여부에 대한 옵션이다.
Deployment, ReplicaSet 등에서 사용하는 기본 설정이다.
이 옵션이 어떻게 설정되어있는지 확인해보자.

Always가 기본값이고, 생략되어도 적용된다고 한다.
2. livenessProbe
설정된 주기마다 /health 엔드포인트를 호출해 상태를 점검하고, 실패가 반복되면 컨테이너를 자동으로 재시작한다.
여기에서 health check를 할 path와 port도 설정할 수 있다.
Spring Boot에서는 Spring Actuator를 사용해서 자동으로 헬스체크 엔드포인트를 만들 수 있다고 한다.
기존에는 직접 컨트롤러를 만들어줬었는데, 아래 토스 기술 블로그를 참고하여 이번에 적용해보려고 한다!
https://toss.tech/article/how-to-work-health-check-in-spring-boot-actuator
Spring Boot Actuator의 헬스체크 살펴보기
서버의 상태를 알려주는 헬스 체크에 대해 알고 계시나요? 단순히 200 OK만 내려주겠거니 하고 별로 신경을 안 쓰고 계셨나요? 해당 포스트에서는 Spring Boot Actuaor가 제공해주는 헬스 체크는 어떤
toss.tech
'Server' 카테고리의 다른 글
| Auto Scaling with NLB (Network Load Balancer) (0) | 2025.06.03 |
|---|---|
| [pfsense] Alias 설정하기 (0) | 2025.05.18 |
| Ubuntu에 웹서버를 만들고, 간단한 이미지와 설명 띄우기 (0) | 2025.03.31 |
| 맥북 M3칩에서 UTM으로 Ubuntu 24.04.2 dekstop 설치 (0) | 2025.03.26 |
| [Docker] 컨테이너 접속이 됐다가 안 됐다가... Docker 25.0.0 version 이슈 (0) | 2025.03.26 |
