我跟随Alex Ellis的优秀tutorial使用kubeadm
来启动Raspberry Pis上的K8s群集。我不清楚当我希望对Pis进行动力循环时最佳做法是什么。
我怀疑sudo systemctl reboot
会导致问题。每次从kubeadm reset
开始,我都不想删除和重新创建群集。
有没有办法可以在不删除群集的情况下关闭和重启机器?
谢谢!
答案 0 :(得分:0)
这个问题已经很老了,但我想其他人最终可能会偶然发现它,所以我想我提供一个快速的答案,因为事实上,此操作有最佳实践。
首先要确保您拥有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。