쿠버네티스 자가 치유
쿠버네티스 자가 치유 (Kubernetes Self-Healing)
쿠버네티스는 워크로드의 상태와 가용성을 유지하는 데 도움이 되는 자가 치유(self-healing) 능력으로 설계됐어요. 실패한 컨테이너를 자동으로 교체하고, 노드가 사용 불가능해지면 워크로드를 재스케줄링하며, 시스템의 원하는 상태(desired state)가 유지되도록 보장해요.
출처: 문서
본문
자가 치유 능력 (Self-Healing capabilities)
- 컨테이너 수준 재시작: 파드 안의 컨테이너가 실패하면 쿠버네티스는
restartPolicy에 따라 이를 재시작해요. - 레플리카 교체: Deployment나 StatefulSet의 파드가 실패하면 쿠버네티스는 지정된 레플리카 수를 유지하기 위해 교체 파드를 만들어요. DaemonSet의 일부인 파드가 실패하면 제어 플레인은 같은 노드에서 실행할 교체 파드를 만들어요.
- 영구 저장소 복구: 노드가 PersistentVolume(PV)이 연결된 파드를 실행 중인데 그 노드가 실패하면, 쿠버네티스는 다른 노드의 새 파드에 볼륨을 다시 연결할 수 있어요.
- Service의 로드 밸런싱: Service 뒤의 파드가 실패하면 쿠버네티스는 이를 Service의 엔드포인트에서 자동으로 제거해 정상 파드로만 트래픽을 라우팅해요.
쿠버네티스 자가 치유를 제공하는 핵심 구성 요소는 다음과 같아요.
- kubelet: 컨테이너가 실행 중인지 확인하고 실패한 컨테이너를 재시작해요.
- Deployment(ReplicaSet을 통해), ReplicaSet, StatefulSet, DaemonSet 컨트롤러: 원하는 파드 레플리카 수를 유지해요.
- PersistentVolume 컨트롤러: 상태 유지 워크로드를 위한 볼륨 연결·해제를 관리해요.
고려 사항 (Considerations)
- 저장소 실패: 영구 볼륨이 사용 불가능해지면 복구 단계가 필요할 수 있어요.
- 애플리케이션 오류: 쿠버네티스는 컨테이너를 재시작할 수 있지만, 근본적인 애플리케이션 문제는 별도로 해결해야 해요.
더 알아보기 (Learn more)
- 파드(Pods)에 대해 더 읽어 보세요.
- 쿠버네티스 컨트롤러에 대해 배워 보세요.
- PersistentVolume을 살펴보세요.
- 노드 오토스케일링에 대해 읽어 보세요. 노드 오토스케일링도 클러스터의 노드가 실패할 때 자동 치유를 제공해요.