Kubernetes master availability and CoreOS updates

1,029 views
Skip to first unread message

Jimmy Cuadra

unread,
Feb 27, 2015, 8:13:49 AM2/27/15
to coreo...@googlegroups.com
Hello,

CoreOS has been recommending Kubernetes as a tool to use for container orchestration. Kubernetes has a master/slave architecture with only one master node, and according to their roadmap, high availability masters will not be a focus of development until after 1.0. While this seems like a strange choice to me, my real question is how this lack of high availability will be affected by CoreOS's update system. It's a philosophy of CoreOS that you shouldn't assume that any single node will ever be healthy and should plan your services accordingly. How, then, does a Kubernetes-based system respond when the Kubernetes master node goes down for a CoreOS update?

Thanks,
Jimmy

Oliver Soell

unread,
Feb 27, 2015, 11:30:14 AM2/27/15
to coreo...@googlegroups.com
We schedule the kube master components with fleet, and then register the kube master with an ELB in AWS so there's always a stable dns name for it. The kubelet and kube-proxy components can point to the ELB for the apiserver. If you don't have an api-driven load-balancer at your disposal you could do some tricks to bind a roaming IP to your kube master or something similar.

Another related issue: kubernetes doesn't yet have the concept of taking a machine out for maintenance (gracefully moving all the deployed pods to another node) which some might consider a pre-requisite for using locksmithd to update your CoreOS nodes. It'll happen eventually :)
-o

Jimmy Cuadra

unread,
Mar 1, 2015, 7:09:14 AM3/1/15
to coreo...@googlegroups.com
Unless I misunderstood, adding an ELB in front of a single Kubernetes master doesn't provide failover/increased availability. What I'm wondering is what happens to the entire Kubernetes cluster when the master goes down, since Kubernetes doesn't seem to support a multi-master setup. On a more traditional Linux distribution you could naively just hope that your master node doesn't crash, but in CoreOS it's guaranteed that the node will be down sometimes for a system update, so you really do need to plan for it.

Oliver Soell

unread,
Mar 7, 2015, 11:36:59 AM3/7/15
to coreo...@googlegroups.com
Fleet will move the master units over to a new host when the master node does down, and since it's behind an ELB, the kubelet and kube-proxy processes can find the new master.

When the master is down, k8s will coast. No pods get stopped, but the management that the master processes provide will be absent:

cheers,
-o

Vaidas Jablonskis

unread,
Jun 4, 2015, 9:49:30 AM6/4/15
to coreo...@googlegroups.com
Hi Jimmy,

I had the same issue. Some environments where I deploy Kubernetes don't have ELBs or other fancy services. I wrote a little service which basically follows kubernetes API server and creates a proxy on each CoreOS node, so your API is always available on:
localhost:8081


Thanks,
Vaidas
Reply all
Reply to author
Forward
0 new messages