Kubernetes 자가 치유

Kubernetes 자가 치유 (Kubernetes Self-Healing)

Kubernetes는 워크로드의 상태(health)와 가용성을 유지하는 데 도움을 주는 자가 치유(self-healing) 능력으로 설계됐어요. 실패한 컨테이너를 자동으로 교체하고, 노드가 사용 불가능해지면 워크로드를 다시 스케줄링하며, 시스템의 원하는 상태가 유지되도록 보장합니다.

출처: Kubernetes 공식 문서 — Kubernetes Self-Healing

자가 치유 능력 (Self-Healing capabilities)

  • 컨테이너 수준 재시작: Pod 안의 컨테이너가 실패하면 Kubernetes는 restartPolicy에 따라 재시작해요.

  • 레플리카 교체: Deployment나 StatefulSet 안의 Pod가 실패하면 Kubernetes는 지정된 레플리카 수를 유지하기 위해 교체 Pod를 생성해요. DaemonSet의 일부인 Pod가 실패하면 컨트롤 플레인은 같은 노드에서 실행될 교체 Pod를 생성합니다.

  • 영구 스토리지 복구: 노드가 PV(PersistentVolume)가 연결된 Pod를 실행 중인데 그 노드가 실패하면 Kubernetes는 그 볼륨을 다른 노드의 새 Pod에 다시 연결할 수 있어요.

  • Service용 로드 밸런싱: Service 뒤의 Pod가 실패하면 Kubernetes는 자동으로 그 Pod를 Service의 엔드포인트에서 제거해서 정상 Pod로만 트래픽을 라우팅해요.

  • kubelet: 컨테이너가 실행 중인지 확인하고 실패한 컨테이너를 재시작해요.

  • Deployment(ReplicaSet 경유), ReplicaSet, StatefulSet, DaemonSet 컨트롤러: 원하는 Pod 레플리카 수를 유지해요.

  • PersistentVolume 컨트롤러: 상태 있는(stateful) 워크로드의 볼륨 연결/분리를 관리해요.

고려사항 (Considerations)

  • 스토리지 실패: 영구 볼륨을 사용할 수 없게 되면 복구 단계가 필요할 수 있어요.
  • 애플리케이션 오류: Kubernetes는 컨테이너를 재시작할 수 있지만, 근본적인 애플리케이션 문제는 별도로 해결해야 해요.

다음으로 볼 것 (What's next)

  • Pod에 대해 더 읽어보세요.
  • Kubernetes 컨트롤러에 대해 배워보세요.
  • PersistentVolume을 살펴보세요.
  • 노드 오토스케일링에 대해 읽어보세요. 노드 오토스케일링은 클러스터에서 노드가 실패할 때 자동 치유도 제공해요.

더 알아보기 (Learn more)