The lesson walks through etcd, the store behind Kubernetes. Its defaults are a 100 ms heartbeat and a 1,000 ms election timeout, randomized per follower to between one and two times the base. While etcd has no leader, the Kubernetes API server cannot accept writes. A slow election freezes deployments and scheduling for the whole cluster.
Three practices follow from the lesson. First, persist votes to disk before sending them. If a node could forget its vote after a crash, it could vote twice in one term and break safety. Second, run 3, 5 or 7 members, never an even number. Four members survive one failure, the same as three, but cost more per election. Third, watch the leader change counter. Frequent changes mean a flaky network, a slow disk or a timeout set too tight.
Kubernetes controllers use a lighter form of election called a lease. Several replicas run, but only the one holding a Lease object does work. The holder renews it every few seconds. If renewals stop, a standby takes over with a conditional update, and the API server lets only one such update win. The client-go defaults are a 15 second lease, a 10 second renew deadline and a 2 second retry period.
A lease alone is not enough. A paused process can wake up still believing it holds the lease. The fix is a fencing token, a number that grows with each new holder and that every write must carry, so writes from a stale holder are rejected. The distributed locks page covers this in detail.