고가용성(HA) 토폴로지 옵션
고가용성(HA) 토폴로지 옵션 (Options for Highly Available Topology)
이 페이지는 고가용성(HA) 쿠버네티스 클러스터의 토폴로지를 구성하는 두 가지 옵션을 설명해요.
HA 클러스터는 다음과 같이 설정할 수 있어요.
- 스택된(stacked) 제어 플레인 노드: etcd 노드가 제어 플레인 노드와 함께 배치되는 방식.
- 외부 etcd 노드: etcd가 제어 플레인과 분리된 노드에서 실행되는 방식.
HA 클러스터를 설정하기 전에 각 토폴로지의 장단점을 신중히 고려해야 해요.
출처: 문서
본문
참고:
스택된 etcd 토폴로지 (Stacked etcd topology)
스택된 HA 클러스터는 etcd가 제공하는 분산 데이터 저장소 클러스터가, kubeadm이 관리하며 제어 플레인 구성 요소를 실행하는 노드들이 이루는 클러스터 위에 쌓인(stacked) 토폴로지예요.
각 제어 플레인 노드는 kube-apiserver, kube-scheduler, kube-controller-manager 인스턴스를 실행해요. kube-apiserver는 로드 밸런서를 사용해 워커 노드에 노출돼요.
각 제어 플레인 노드는 로컬 etcd 멤버를 만들고, 이 etcd 멤버는 이 노드의 kube-apiserver와만 통신해요. 로컬 kube-controller-manager와 kube-scheduler 인스턴스에도 똑같이 적용돼요.
이 토폴로지는 제어 플레인과 etcd 멤버를 같은 노드에 결합해요. 외부 etcd 노드가 있는 클러스터보다 설정이 더 간단하고, 복제를 관리하기도 더 쉽습니다.
하지만 스택된 클러스터는 결합(coupling) 실패의 위험이 있어요. 한 노드가 다운되면 etcd 멤버와 제어 플레인 인스턴스가 모두 손실되고, 중복성(redundancy)이 손상돼요. 제어 플레인 노드를 더 추가해 이 위험을 완화할 수 있어요.
따라서 HA 클러스터에는 최소한 세 개의 스택된 제어 플레인 노드를 실행해야 해요.
이것은 kubeadm의 기본 토폴로지예요. kubeadm init과 kubeadm join --control-plane을 사용할 때 제어 플레인 노드에 로컬 etcd 멤버가 자동으로 생성돼요.
외부 etcd 토폴로지 (External etcd topology)
외부 etcd가 있는 HA 클러스터는 etcd가 제공하는 분산 데이터 저장소 클러스터가 제어 플레인 구성 요소를 실행하는 노드들이 이루는 클러스터의 외부에 있는 토폴로지예요.
스택된 etcd 토폴로지처럼, 외부 etcd 토폴로지의 각 제어 플레인 노드는 kube-apiserver, kube-scheduler, kube-controller-manager 인스턴스를 실행해요. 그리고 kube-apiserver는 로드 밸런서를 사용해 워커 노드에 노출돼요. 하지만 etcd 멤버는 별도 호스트에서 실행되며, 각 etcd 호스트는 각 제어 플레인 노드의 kube-apiserver와 통신해요.
이 토폴로지는 제어 플레인과 etcd 멤버를 분리해요. 따라서 제어 플레인 인스턴스나 etcd 멤버를 잃어도 그 영향이 더 작고, 스택된 HA 토폴로지만큼 클러스터 중복성에 영향을 주지 않는 HA 구성을 제공해요.
하지만 이 토폴로지는 스택된 HA 토폴로지보다 두 배의 호스트가 필요해요. 이 토폴로지의 HA 클러스터에는 제어 플레인 노드용 호스트 최소 세 개와 etcd 노드용 호스트 최소 세 개가 필요해요.