如何使用 kubeadm 从 master 故障中恢复
how to recover from master failure with kubeadm
我使用 kubeadm
设置了一个具有单个主节点和两个工作节点的 Kubernetes 集群,我正在尝试弄清楚如何从节点故障中恢复。
当一个工作节点发生故障时,恢复很简单:我从头开始创建一个新的工作节点,运行 kubeadm join
,一切都很好。
但是,我不知道如何从主节点故障中恢复(不中断工作节点上的部署 运行ning)。我是否需要备份和恢复原始证书,或者我可以 运行 kubeadm init
从头开始创建一个新的主证书?如何加入现有工作节点?
kubeadm init
肯定不会开箱即用,因为这将完全创建一个新集群、凭据、ip space 等
至少,恢复主节点需要备份 etcd 数据。这通常位于 /var/lib/etcd 目录中。
您还需要集群中的 kubeadm 配置
kubeadm config view
应该输出这个。 (v1.8 以上)
恢复主节点的 step-by-step 确实不是那么干净,这就是他们引入 HA - 高可用性的原因。这是一种更安全的维护冗余和正常运行时间的方法。特别是因为从 etcd 恢复任何东西都非常痛苦(以我的拙见和经验)。
如果我可能会偏离你的问题的主题,如果你仍在开始使用 Kubernetes 并且没有深入投资 kubeadm,我建议你考虑使用 kops 创建你的集群。它已经支持 HA,我发现 kops 对于 kubeadm 和 kube-aws(coreos 集群构建器)来说更健壮且更易于使用。
https://kubernetes.io/docs/getting-started-guides/kops/
根据你提到的 Master 的备份,实际上如果你的意思是备份程序(比如 traditional/legacy 备份 tools/techs)在官方文档中没有直接提到(据我所知),但是你可以采取一些预防措施 Options/Workarounds :
设置 HA Master(仅适用于 GCE)
Set up High-Availability Kubernetes Masters
设置 HA etcd 集群/主负载均衡器
Setting-up-an-ha-etcd-cluster
Set up master Load Balancer
Operating etcd clusters for Kubernetes
OS 文件系统 Snapshot/backup
我最终写了一个 Kubernetes CronJob backing up the etcd data. If you are interested: I wrote a blog post about it: https://labs.consol.de/kubernetes/2018/05/25/kubeadm-backup.html
除此之外,您可能希望备份所有 /etc/kubernetes/pki
以避免必须更新机密(令牌)的问题。
比如kube-proxy使用secret存储token,如果只备份了etcd证书,这个token就失效了
我使用 kubeadm
设置了一个具有单个主节点和两个工作节点的 Kubernetes 集群,我正在尝试弄清楚如何从节点故障中恢复。
当一个工作节点发生故障时,恢复很简单:我从头开始创建一个新的工作节点,运行 kubeadm join
,一切都很好。
但是,我不知道如何从主节点故障中恢复(不中断工作节点上的部署 运行ning)。我是否需要备份和恢复原始证书,或者我可以 运行 kubeadm init
从头开始创建一个新的主证书?如何加入现有工作节点?
kubeadm init
肯定不会开箱即用,因为这将完全创建一个新集群、凭据、ip space 等
至少,恢复主节点需要备份 etcd 数据。这通常位于 /var/lib/etcd 目录中。
您还需要集群中的 kubeadm 配置
kubeadm config view
应该输出这个。 (v1.8 以上)
恢复主节点的 step-by-step 确实不是那么干净,这就是他们引入 HA - 高可用性的原因。这是一种更安全的维护冗余和正常运行时间的方法。特别是因为从 etcd 恢复任何东西都非常痛苦(以我的拙见和经验)。
如果我可能会偏离你的问题的主题,如果你仍在开始使用 Kubernetes 并且没有深入投资 kubeadm,我建议你考虑使用 kops 创建你的集群。它已经支持 HA,我发现 kops 对于 kubeadm 和 kube-aws(coreos 集群构建器)来说更健壮且更易于使用。 https://kubernetes.io/docs/getting-started-guides/kops/
根据你提到的 Master 的备份,实际上如果你的意思是备份程序(比如 traditional/legacy 备份 tools/techs)在官方文档中没有直接提到(据我所知),但是你可以采取一些预防措施 Options/Workarounds :
设置 HA Master(仅适用于 GCE)
Set up High-Availability Kubernetes Masters设置 HA etcd 集群/主负载均衡器
Setting-up-an-ha-etcd-cluster
Set up master Load Balancer
Operating etcd clusters for KubernetesOS 文件系统 Snapshot/backup
我最终写了一个 Kubernetes CronJob backing up the etcd data. If you are interested: I wrote a blog post about it: https://labs.consol.de/kubernetes/2018/05/25/kubeadm-backup.html
除此之外,您可能希望备份所有 /etc/kubernetes/pki
以避免必须更新机密(令牌)的问题。
比如kube-proxy使用secret存储token,如果只备份了etcd证书,这个token就失效了