<p>A default Google Kubernetes Engine (GKE) cluster </p>

<pre><code>gcloud container clusters create [CLUSTER_NAME] \
--zone [COMPUTE_ZONE]
</code></pre>

<p>starts with 3 nodes. What's the idea behind that? Shouldn't 2 nodes in the same zone be sufficient for high availability?</p>

stefan.at.kotlin
<p>Kubernetes uses <a href="https://github.com/etcd-io/etcd" rel="nofollow noreferrer">etcd</a> for state. Etcd uses <a href="https://raft.github.io/" rel="nofollow noreferrer">Raft</a> for consensus to achieve high availability properties.</p>

<p>When using a consensus protocol like Raft, you need <em>majority</em> in voting. Using 3 nodes you need 2 of 3 nodes to respond for availability. Using 2 nodes, you can not get majority with only 1 of 2 nodes, so you need both 2 nodes to be available.</p>
