故障或实例关闭后如何恢复主节点?

时间:2019-06-11 13:10:14

标签: kubernetes

我正在使用Kubernetes运行API服务。因此它的设置类似于3个aws实例(一个主节点,两个工作节点)。我正在考虑一种情况,当具有主节点的实例关闭或崩溃时,无论发生什么情况,我应如何还原主节点?

当我使用docker-swarm时,它会自动重新启动,然后附加到worker(或附加到她的worker)上,并且工作正常!

我再次尝试kubeadm init,但显示错误

error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
    [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists
    [ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists
    [ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists
    [ERROR Swap]: running with swap on is not supported. Please disable swap
    [ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty

我该如何解决?

3 个答案:

答案 0 :(得分:0)

对于高可用性kubernetes集群,您至少需要三个master节点。请阅读doc

答案 1 :(得分:0)

如果只有一个主服务器,则需要在运行kubeadm init之前备份手动证书和etcd。

我建议阅读一篇非常不错的文章Backup and Restore a Kubernetes Master with Kubeadm,该文章告诉您需要备份哪些文件以及如何在新的主数据库上还原它们。

他们使用Kubernetes CronJob每隔etcd的3分钟进行一次快照

  

我们将创建Kubernetes CronJob来定期运行该命令。无需在主机系统上安装etcdctl或在主机系统上配置cron作业。

您将不得不记住自己备份证书,但是您只需要备份一次,并且可以在欺骗kubeadm init时完成。

您还可以查看Options for Highly Available Topology

答案 2 :(得分:0)

您可以在kubernetes集群的顶部使用Rancher。使用rke时,您只需在数分钟内部署群集,然后使用etcd快照功能。

Backups and Disaster Recovery

通常来说,您应该注意etcd节点。这是存储集群数据的地方。万一发生灾难,您将始终还原etcd节点。