EKS Pod 헬스체크 & 라이프사이클 관리
10분 읽기
📌 기준 환경: EKS 1.33+, Kubernetes 1.30+, AWS Load Balancer Controller v2.7+
1. 개요
Pod의 헬스체크와 종료 처리는 서비스 가용성의 서로 다른 부분을 담당합니다.
- 롤링 업데이트: Readiness 검사와 종료 처리의 연계는 요청 유실을 줄이는 데 도움이 됩니다. 결과는 애플리케이션의 동작과 트래픽 전환 시점에 따라 달라집니다.
- 장애 감지: Readiness 검사는 Pod에 트래픽을 보낼지 결정하고, Liveness 검사는 컨테이너 재시작을 유발할 수 있습니다.
- 시작 보호: Startup Probe는 시작이 느린 애플리케이션이 초기화를 마칠 때까지 Liveness 검사가 시작되지 않도록 합니다.
- 처리 중인 요청: 종료 핸들러는 설정한 종료 유예 시간 안에서 기존 요청을 마칠 수 있도록 처리합니다.
본 문서는 Kubernetes Probe의 동작 원리부터 언어별 Graceful Shutdown 구현, Init Container 활용, 컨테이너 이미지 최적화까지 Pod 라이프사이클 전체를 다룹니다.
관련 문서 참조
- Probe 디버깅: EKS 장애 진단 및 대응 가이드의 "Probe 디버깅 및 Best Practices" 섹션
- 고가용성 설계: EKS 고가용성 아키텍처 가이드의 "Graceful Shutdown", "PDB", "Pod Readiness Gates" 섹션
목적별 읽기 경로
- 헬스체크 설정: Probe 기초 → 워크로드별 패턴 → 안티패턴
- 배포 중 요청 유실 점검: 종료 시퀀스 → SIGTERM 처리 → Connection Draining
- 노드 교체 대응: Karpenter와 Node Drain → Fargate 또는 Auto Mode
- 시작 시간 개선: Init Container → Lifecycle Hooks → 컨테이너 이미지
라이프사이클 흐름
초기화, 헬스체크, 요청 처리, 종료 처리를 나누어 확인합니다. 상세 조건과 설정 예제는 각 문서에 있습니다.
글씨가 작으면 확대해서 확인할 수 있습니다.
다이어그램
전체 주제
Probe
- Probe 유형과 설정 기초: Probe 유형, 메커니즘, 타이밍을 함께 확인합니다.
- 워크로드별 Probe 패턴: REST, gRPC, 배치, JVM, AI 워크로드별 예제를 확인합니다.
- Probe 안티패턴: 불필요한 재시작과 잘못된 헬스체크 구성을 점검합니다.
- ALB/NLB와 Probe 통합: 로드밸런서 헬스체크와 Pod Readiness Gate를 연결합니다.
- EKS 기능과 Probe 통합: EKS 기능별 Probe 통합 예제를 확인합니다.
종료와 노드 수명 주기
- Pod 종료 시퀀스: 종료 요청부터 컨테이너 종료까지의 흐름을 확인합니다.
- 언어별 SIGTERM 처리: 애플리케이션의 종료 처리 예제를 확인합니다.
- Connection Draining: 진행 중인 요청과 연결을 종료하는 패턴을 확인합니다.
- Karpenter와 Node Drain: 노드 교체 및 축소 과정에서 Pod 종료를 점검합니다.
- Node Readiness Controller: 노드의 인프라 준비 상태를 관리하는 구성을 확인합니다.
- Fargate Pod 라이프사이클: Fargate 환경의 시작, 헬스체크, 종료 구성을 확인합니다.
시작·배포·최적화
- Init Container 패턴: 초기화 작업과 Sidecar 구성을 비교합니다.
- Pod Lifecycle Hooks: PostStart와 PreStop의 실행 흐름과 예제를 확인합니다.
- 컨테이너 이미지와 시작 시간: 이미지 빌드, 프리풀, 시작 시간 비교를 확인합니다.
- 배포 체크리스트와 참고 자료: 배포 전 점검 항목과 전체 참고 자료를 확인합니다.
- EKS Auto Mode 체크리스트: Auto Mode 환경의 Probe와 종료 구성을 점검합니다.
- AI 기반 Probe 최적화: 관측 데이터와 AI를 활용하는 Probe 최적화 예제를 확인합니다.
이전 섹션 링크로 찾기
기존에 공유한 섹션 링크는 해당 내용이 있는 문서로 연결됩니다.
- Kubernetes Probe 심층 가이드
- 세 가지 Probe 유형과 동작 원리
- Startup Probe: 느린 시작 앱 보호
- Liveness Probe: 데드락 감지
- Readiness Probe: 트래픽 수신 제어
- Probe 메커니즘
- httpGet 예시
- tcpSocket 예시
- exec 예시
- grpc 예시 (Kubernetes 1.27+)
- Probe 타이밍 설계
- 타이밍 설계 공식
- 워크로드별 권장 타이밍
- 워크로드별 Probe 패턴
- 패턴 1: 웹 서비스 (REST API)
- 패턴 2: gRPC 서비스
- 패턴 3: 워커/배치 처리
- 패턴 4: 느린 시작 앱 (Spring Boot, JVM)
- 패턴 5: 사이드카 패턴 (Istio Proxy + 앱)
- Native Sidecar Containers (K8s 1.28+ GA)
- Windows 컨테이너 Probe 고려사항
- Windows vs Linux Probe 동작 차이
- Windows 워크로드 Probe 설정 예시
- Windows 워크로드 Probe 타임아웃 주의사항
- CloudWatch Container Insights for Windows (2025-08)
- 혼합 클러스터 (Linux + Windows) 통합 모니터링 전략
- Probe 안티패턴과 함정
- ❌ 안티패턴 1: Liveness Probe에 외부 의존성 포함
- ❌ 안티패턴 2: Startup Probe 없이 높은 initialDelaySeconds
- ❌ 안티패턴 3: Liveness와 Readiness에 같은 엔드포인트
- ❌ 안티패턴 4: 너무 공격적인 failureThreshold
- ❌ 안티패턴 5: 과도하게 긴 timeoutSeconds
- ALB/NLB 헬스체크와 Probe 통합
- ALB Target Group 헬스체크 vs Readiness Probe
- 헬스체크 타이밍 동기화 전략
- Pod Readiness Gates (무중단 배포 보장)
- Gateway API 헬스체크 통합 (ALB Controller v2.14+)
- Gateway API vs Ingress 헬스체크 비교
- Gateway API 아키텍처와 헬스체크
- L7 헬스체크: HTTPRoute/GRPCRoute with ALB
- L4 헬스체크: TCPRoute/UDPRoute with NLB
- Gateway API Pod Readiness Gates
- Ingress에서 Gateway API로 마이그레이션 시 헬스체크 전환 체크리스트
- 2025-2026 EKS 신규 기능과 Probe 통합
- Container Network Observability로 Probe 연결성 검증
- CloudWatch Observability Operator + Control Plane 메트릭
- Provisioned Control Plane에서 Probe 성능 보장
- GuardDuty Extended Threat Detection 연계
- Graceful Shutdown 완벽 가이드
- Pod 종료 시퀀스 상세
- 언어별 SIGTERM 처리 패턴
- Node.js (Express)
- Java/Spring Boot
- Go
- Python (Flask)
- Connection Draining 패턴
- HTTP Keep-Alive 연결 처리
- WebSocket 연결 정리
- gRPC Graceful Shutdown
- 데이터베이스 연결 풀 정리
- Karpenter/Node Drain과의 상호작용
- Karpenter Disruption과 Graceful Shutdown
- ARC + Karpenter 통합 AZ 대피 패턴
- Spot 인스턴스 2분 경고 처리
- Node Readiness Controller — 노드 수준 Readiness 관리
- 개요
- 핵심 기능
- Continuous 모드 - 지속 모니터링
- Bootstrap-only 모드 - 초기화 전용
- Dry-run 모드 - 안전한 검증
- nodeSelector - 타겟 노드 선택
- YAML 예시
- CNI 부트스트랩 - Bootstrap-only 모드
- GPU 노드 Continuous 모니터링
- EBS CSI 드라이버 준비 확인
- Dry-run 모드 - 테스트 규칙
- EKS 적용 시나리오
- VPC CNI 초기화 대기
- GPU 노드 NVIDIA 드라이버 준비
- Node Problem Detector 통합
- 워크플로우 다이어그램
- Pod Readiness와의 관계
- 설치 및 설정
- Node Readiness Controller 설치
- 설치 확인
- 노드 상태 확인
- 디버깅 및 트러블슈팅
- Taint가 제거되지 않는 경우
- Dry-run 모드로 규칙 테스트
- 참조 자료
- Fargate Pod 라이프사이클 특수 고려사항
- Fargate vs EC2 vs Auto Mode 아키텍처 비교
- Fargate Pod OS 패치 자동 Eviction
- Fargate Pod 시작 시간 특성
- Fargate DaemonSet 미지원으로 인한 사이드카 패턴
- Fargate Graceful Shutdown 타이밍 권장사항
- Fargate vs EC2 vs Auto Mode 비교표: Probe 관점
- Init Container 모범 사례
- Init Container 동작 원리
- Init Container 사용 사례
- 사례 1: 데이터베이스 마이그레이션
- 사례 2: 설정 파일 생성 (ConfigMap 변환)
- 사례 3: 종속 서비스 대기
- 사례 4: 볼륨 권한 설정
- Init Container vs Sidecar Container (Kubernetes 1.29+)
- Pod Lifecycle Hooks
- PostStart Hook
- PreStop Hook
- Hook 실행 메커니즘
- exec Hook 예시
- httpGet Hook 예시
- 컨테이너 이미지 최적화와 시작 시간
- 멀티스테이지 빌드
- Go 애플리케이션
- Node.js 애플리케이션
- Java/Spring Boot 애플리케이션
- 이미지 프리풀 전략
- Karpenter 이미지 프리풀
- DaemonSet으로 이미지 프리풀
- distroless와 scratch 이미지
- distroless 예시
- 시작 시간 벤치마크
- 종합 체크리스트 & 참고 자료
- 프로덕션 배포 전 체크리스트
- Pod 헬스체크
- Graceful Shutdown
- 리소스 및 이미지
- 고가용성
- 관련 문서
- 외부 참조
- Kubernetes 공식 문서
- AWS 공식 문서
- Red Hat OpenShift 문서
- 추가 참고 자료
- EKS Auto Mode 환경 체크리스트
- EKS Auto Mode란?
- Auto Mode 특성이 Probe에 미치는 영향
- Auto Mode 환경 Probe 체크리스트
- Auto Mode vs 수동 관리 시 Probe 설정 차이
- Auto Mode 환경의 OS 패치 자동 eviction 대응
- Auto Mode 활성화 확인
- AI/Agentic 기반 Probe 최적화
- CNS421 세션 핵심 - Agentic AI for EKS Operations
- Kiro + EKS MCP를 활용한 Probe 자동 최적화
- Amazon Q Developer를 활용한 Probe 이슈 디버깅
- Tribal Knowledge 기반 Probe 패턴 학습
- Probe 최적화 통합 대시보드