CertGrid CertGrid
Hands-on Lab·Certified Kubernetes Administrator

Highly Available Control Planes and etcd Quorum

A three-node control plane built from scratch: keepalived and haproxy in front, stacked etcd behind, and a controlPlaneEndpoint that has to exist before the first init. Then the two failures worth rehearsing, a VIP moving and quorum lost.

Cluster Architecture and Configuration Guide 21 of 103 Advanced

Written against the versions above. Stacked etcd, the default kubeadm HA topology. An external etcd cluster is the other option and changes the join procedure but not the quorum arithmetic.

All three nodes are control planes. 192.168.0.250 is a keepalived VIP, verified free before use; haproxy fronts port 8443 so it does not collide with the API servers' own 6443.
Server NameIP AddressOSRolesCPURAMHDD
CKA2001192.168.0.181Ubuntu 26.04 LTSControl Plane Node2 Core4 GB50 GB
CKA2001-NODE01192.168.0.182Ubuntu 26.04 LTSControl Plane Node2 Core4 GB50 GB
CKA2001-NODE02192.168.0.183Ubuntu 26.04 LTSControl Plane Node2 Core4 GB50 GB

Before you start

  1. Three, not two, and why

  2. The endpoint has to exist before the first init

  3. init with --control-plane-endpoint and --upload-certs

  4. Joining the other two

  5. What three control planes actually look like

  6. The VIP moves, and kubectl does not notice

  7. Losing one member, and the health-check window

  8. Losing two: quorum gone, and it reports Forbidden

Official sources