쿠버네티스 고가용성 토폴로지

김유경·2026년 1월 12일

들어가며

쿠버네티스를 공부하면서 워커 노드에 대한 내용은 비교적 자주 접했지만, 마스터 노드의 고가용성까지 깊게 고민해본 적은 많지 않았습니다. 최근 관련 지식의 부족함을 느끼게 되었고, 이를 계기로 쿠버네티스 Control Plane 고가용성 구성에 대해 정리해보고자 합니다.

🔗 https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/ha-topology/


Control Plane 고가용성 목표

Control Plane 고가용성의 목표는 마스터 노드 중 하나에 장애가 발생하더라도 클러스터 관리 기능이 중단되지 않도록 하는 것입니다. 이를 위해서는 etcd 구성 방식과 Control Plane 컴포넌트를 단일 노드에 배치할지, 여러 노드로 분산할지에 대한 설계가 중요합니다.

핵심 요소는 다음 두 가지입니다.

etcd 다중 노드 구성

etcd는 클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소입니다. Control Plane 컴포넌트는 etcd에 저장된 상태를 기준으로 동작하므로, etcd가 단일 장애 지점이 되지 않도록 여러 노드에 분산 구성해야 합니다.

Control Plane 컴포넌트 다중화

kube-apiserver, kube-controller-manager, kube-scheduler와 같은 Control Plane 컴포넌트는 여러 마스터 노드에 분산 배치합니다. 또한 API 서버 앞단에 로드밸런서를 두어 클라이언트 요청을 여러 마스터로 분산시킵니다.

이러한 구성을 통해 특정 마스터 노드에 장애가 발생하더라도, 나머지 마스터 노드가 클러스터 관리 기능을 지속적으로 수행할 수 있습니다.


고가용성 클러스터 토플로지

쿠버네티스 공식 문서에서는 Control Plane 고가용성을 위한 두 가지 토폴로지를 소개합니다.

  • etcd 노드와 컨트롤 플레인 노드를 함께 위치시키는 중첩된 컨트롤 플레인 노드 방식
  • etcd와 컨트롤 플레인이 분리된 노드에서 운영되는 외부 etcd 노드 방식

두 구조 모두 Control Plane 다중화와 etcd 다중화라는 기본 원칙은 동일합니다. 차이점은 etcd를 Control Plane 노드와 함께 배치할지, 아니면 완전히 분리된 노드로 운영할지에 있습니다.


중첩된 etcd 토플로지

중첩된 etcd 토폴로지는 etcd 클러스터를 Control Plane 노드 위에 함께 배치하는 구조입니다. 즉, Control Plane 컴포넌트와 etcd 멤버가 같은 노드에서 함께 실행됩니다.

구성 방식

중첩된 토폴로지에서는 각 Control Plane 노드가 kube-apiserver, kube-scheduler, kube-controller-manager와 함께 로컬 etcd 멤버를 함께 실행합니다.

kube-apiserver는 로드밸런서를 통해 워커 노드와 외부 클라이언트에 노출되며, 각 노드의 etcd 멤버는 자신이 속한 노드의 kube-apiserver와만 통신합니다. 컨트롤러 매니저와 스케줄러 역시 동일 노드 기준으로 동작합니다.

이로 인해 Control Plane과 etcd가 노드 단위로 결합된 구조를 가집니다.

장점

  • Control Plane과 etcd를 동일한 노드에 배치해 전체 토폴로지가 비교적 단순합니다.
  • 별도의 외부 etcd 클러스터가 필요 없어 구성과 운영이 상대적으로 간편합니다.

kubeadm을 사용할 경우, kubeadm initkubeadm join --control-plane 과정에서 Control Plane 노드를 추가하면 로컬 etcd 멤버도 자동으로 생성됩니다.

단점과 고려사항

  • Control Plane 노드 장애 시, 해당 노드에서 실행 중인 Control Plane 컴포넌트와 etcd 멤버가 모두 중단됩니다.
  • Control Plane과 etcd가 강하게 결합되어 있어 장애 발생 시 영향 범위가 커질 수 있습니다.

이러한 위험을 방지하기 위해, 중첩된 토폴로지에서는 최소 3개 이상의 Control Plane 노드 구성이 권장됩니다.

📍 참고

중첩된 etcd 토폴로지에서도 etcd는 노드마다 따로 동작하는 독립적인 DB가 아니라, 각 Control Plane 노드에 배치된 etcd 멤버들이 하나의 분산 etcd 클러스터를 구성하는 구조입니다.

각 노드의 etcd 멤버는 리더 또는 팔로워로 동작하며, Quorum을 통해 동일한 키-값 데이터를 유지합니다.

따라서 특정 노드가 장애로 인해 사라지더라도, 남은 멤버들이 Quorum을 유지하는 한 etcd 클러스터와 Kubernetes Control Plane은 계속 동작할 수 있습니다.


외부 etcd 토폴로지

외부 etcd 토폴로지는 etcd 클러스터를 Control Plane 노드와 분리해 별도의 서버 그룹으로 운영하는 구조입니다. Control Plane 컴포넌트는 클러스터 상태를 로컬에 저장하지 않고, 네트워크를 통해 외부에 위치한 etcd 클러스터와 통신합니다.

구성 방식

외부 etcd 토폴로지에서는 Control Plane 노드와 etcd 노드를 물리적 또는 논리적으로 분리해 구성합니다.

각 Control Plane 노드는 kube-apiserver, kube-scheduler, kube-controller-manager를 실행하며, kube-apiserver는 로드밸런서를 통해 워커 노드 및 외부 클라이언트에 노출됩니다.

etcd 멤버는 전용 노드에서만 실행되며, 모든 Control Plane 노드는 동일한 외부 etcd 클러스터에 네트워크를 통해 접근합니다. 이로 인해 Control Plane과 etcd는 명확히 분리된 계층으로 동작합니다.

장점

  • Control Plane과 etcd가 분리되어 장애 영향 범위가 명확히 분리됩니다.
  • etcd 클러스터를 독립적으로 확장 및 운영이 가능합니다.

단점과 고려사항

  • 중첩된 토폴로지에 비해 구성과 운영 복잡도 증가합니다.
  • Control Plane–etcd 간 네트워크 의존성이 커져 지연이나 네트워크 장애에 더 민감합니다.
  • 동일한 수준의 HA를 위해 최소 3대의 Control Plane 노드와 3대의 etcd 노드가 필요합니다.

0개의 댓글