쿠버네티스 자가 치유

쿠버네티스 자가 치유 (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)