<p>What I am trying to do:</p>

<p>I have setup kubernete cluster using documentation available on Kubernetes website (http_kubernetes.io/v1.1/docs/getting-started-guides/aws.html). Using kube-up.sh, i was able to bring kubernete cluster up with 1 master and 3 minions (as highlighted in blue rectangle in the diagram below). From the documentation as far as i know we can add minions as and when required, So from my point of view k8s master instance is single point of failure when it comes to high availability.</p>

<p><a href="http://i.stack.imgur.com/ZrtZI.png" rel="nofollow">Kubernetes Master HA on AWS</a></p>

<p>So I am trying to setup HA k8s master layer with the three master nodes as shown above in the diagram. For accomplishing this I am following kubernetes high availability cluster guide, http_kubernetes.io/v1.1/docs/admin/high-availability.html#establishing-a-redundant-reliable-data-storage-layer
What I have done:</p>

<p>Setup k8s cluster using kube-up.sh and provider aws (master1 and minion1, minion2, and minion3)
Setup two fresh master instance’s (master2 and master3)
I then started configuring etcd cluster on master1, master 2 and master 3 by following below mentioned link: 
http_kubernetes.io/v1.1/docs/admin/high-availability.html#establishing-a-redundant-reliable-data-storage-layer
    So in short i have copied etcd.yaml from the kubernetes website (http_kubernetes.io/v1.1/docs/admin/high-availability/etcd.yaml) and updated Node_IP, Node_Name and Discovery Token on all the three nodes as shown below. </p>

<blockquote>
  <p>NODE_NAME NODE_IP DISCOVERY_TOKEN</p>
  
  <p>Master1
  172.20.3.150 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed</p>
  
  <p>Master2
  172.20.3.200 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed</p>
  
  <p>Master3
  172.20.3.250 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed</p>
</blockquote>

<p>And on running etcdctl member list on all the three nodes, I am getting:</p>

<pre><code>$ docker exec &lt;container-id&gt; etcdctl member list
ce2a822cea30bfca: name=default peerURLs=http_localhost:2380,http_localhost:7001 clientURLs=http_127.0.0.1:4001
</code></pre>

<p>As per documentation we need to keep etcd.yaml in /etc/kubernete/manifest, this directory already contains etcd.manifest and etcd-event.manifest files. For testing I modified etcd.manifest file with etcd parameters.</p>

<p>After making above changes I forcefully terminated docker container, container was existing after few seconds and I was getting below mentioned error on running kubectl get nodes:
error: couldn't read version from server: Get httplocalhost:8080/api: dial tcp 127.0.0.1:8080: connection refused</p>

<p>So please kindly suggest how can I setup k8s master highly available setup on AWS.</p>

<p>To configure an HA master, you should follow the <a href="http://kubernetes.io/v1.1/docs/admin/high-availability.html" rel="nofollow">High Availability Kubernetes Cluster</a> document, in particular making sure you have replicated storage across failure domains and a load balancer in front of your replicated apiservers. </p>
