<p>When I create a Kubernetes cluster and specify the <code>--master-zone us-west-2a,us-west2b-us-west2c</code> I end up with 3 masters (which is fine) but they are in different instance groups. </p>

<p>i.e. </p>

<pre><code>$ kops get ig 
Using cluster from kubectl context: kube2.mydomain.net

NAME            ROLE    MACHINETYPE MIN MAX ZONES
master-us-west-2a   Master  m4.large    1   1   us-west-2a
master-us-west-2b   Master  m4.large    1   1   us-west-2b
master-us-west-2c   Master  m4.large    1   1   us-west-2c
nodes           Node    m4.large    3   3   us-west-2a,us-west-2b,us-west-2c
</code></pre>

<p>I'm not sure this is correct, or is this a best practice? </p>

<p>I would think that all the masters should be in one instance group.</p>

<p>I'm assuming you mean multiple availability zones. This is the default behavior for redundancy. Cloud providers like AWS recommend spreading your control plane (and your workloads for that matter) among different availability zones.</p>

<p>If you want to create them in a single zone you can run something like this, for example:</p>

<pre><code>$ kops create cluster --zones=us-east-1c --master-count=3 k8s.example.com
</code></pre>

<p>Or </p>

<pre><code>$ kops create cluster --zones=us-east-1b,us-east-1c --master-zones=us-east-1c --master-count=3
</code></pre>

<p>More info <a href="https://github.com/kubernetes/kops/issues/732" rel="nofollow noreferrer">here</a>.</p>

<p>I believe the rationale behind having an instance group (that map to ASGs in AWS) is that if you specify multiple availability zones in an ASG there are no guarantees that the nodes will land in a way that there is one on each availability zone.</p>
