[我跟随Alex Ellis出色的tutorial,该人使用kubeadm
在Raspberry Pis上旋转了一个K8s集群。对我不清楚,当我希望对Pis重新通电时,最佳实践是什么。
我怀疑sudo systemctl reboot
会导致问题。我不希望每次从kubeadm reset
开始都删除并重新创建集群。
有没有一种方法可以关闭并重新启动计算机而不删除群集?
谢谢!
这个问题已经很老了,但我想其他人最终可能会偶然发现它,所以我想我会提供一个快速的答案,因为事实上,此操作周围有最佳实践。
首先要确保您具有highly available cluster。这至少包含3个主节点和3个工作节点。为什么是3?这样一来,他们就可以随时为最终一致性形成法定人数。
现在您有了HA Kubernetes集群,您将必须遍历每个应用程序清单,并确保已指定资源请求和限制。这样一来,您可以确保如果没有所需的资源,则永远不会在Pod上调度Pod。此外,如果Pod出现错误,导致其消耗大量异常资源,则该限制将阻止它关闭您的集群。
现在已经不碍您了,您可以开始重新启动集群的过程。您要做的第一件事是重新启动主服务器。因此,对(至少)三个主服务器之一运行kubectl drain $MASTER
。 API服务器现在将拒绝任何计划尝试,并立即开始驱逐任何计划的Pod并将其工作负载迁移到其他主服务器的过程。
使用kubectl describe node $MASTER
监视节点,直到所有吊舱都已卸下。现在,您可以安全地连接到它并重新启动它。恢复后,您现在可以运行kubectl uncordon $MASTER
,API Server将再次开始为其调度Pod。再次使用kubectl describe $NODE
,直到确认所有吊舱都已就绪。
对所有母版重复此过程。重新启动主服务器后,您可以对所有三个(或更多)工作节点安全地重复此过程。如果您正确执行此操作,则可以确保所有应用程序都将保持100%的可用性,前提是它们每个服务使用多个Pod并配置了正确的Deployment Strategy。