how to recover from master failure with kubeadm

时间:2018-03-25 20:39:19

标签: kubernetes kubeadm

I set up a Kubernetes cluster with a single master node and two worker nodes using kubeadm, and I am trying to figure out how to recover from node failure.

When a worker node fails, recovery is straightforward: I create a new worker node from scratch, run kubeadm join, and everything's fine.

However, I cannot figure out how to recover from master node failure (without interrupting the deployments running on the worker nodes). Do I need to backup and restore the original certificates or can I just run kubeadm init to create a new master from scratch? How do I join the existing worker nodes?

3 个答案:

答案 0 :(得分:2)

我最终编写了一个Kubernetes CronJob备份etcd数据。如果您有兴趣:我写了一篇关于它的博客文章:https://labs.consol.de/kubernetes/2018/05/25/kubeadm-backup.html

除此之外,您可能希望备份所有PubID Author 169759 ZJ 174843 RA 174843 DJ 174843 JP 174843 GS 174843 Tv 171051 MC 171051 JR 171051 CW 171719 PB 171719 MD 171719 FO 169759 FO 173847 RA 173847 DJ 以避免必须续订的机密(令牌)问题。

例如,kube-proxy使用密钥存储令牌,如果仅备份etcd证书,则此令牌将变为无效。

答案 1 :(得分:1)

kubeadm init肯定不会开箱即用,因为它会创建一个新的集群,凭据,IP空间等。

至少,恢复主节点需要备份您的etcd数据。这通常位于/ var / lib / etcd目录中。

您还需要群集中的kubeadm配置 kubeadm config view应该输出这个。 (向上v1.8)

恢复主节点的一步一步确实不是那么干净,这就是他们引入HA - 高可用性的原因。这是一种更安全的冗余和正常运行时间保持方式。特别是因为从etcd恢复任何东西都可能是一种真正的痛苦(以我的拙见和经验)。

如果我可以从您的问题中略微偏离主题,如果您仍然开始使用Kubernetes并且没有对kubeadm进行过深入投资,我建议您考虑使用kops创建群集。它已经支持HA了,我发现kops对kubeadm和kube-aws(coreos集群构建器)更强大,更容易使用。  https://kubernetes.io/docs/getting-started-guides/kops/

答案 2 :(得分:1)

根据你提到的Master的备份,实际上如果你的意思是备份程序(比如传统/遗留备份工具/技术)在官方文档中没有直接提到(据我所知),但是你可以通过一些选项/解决方法采取预防措施: