我遵循了 Alex Ellis 的优秀教程,该教程用于kubeadm
在 Raspberry Pis 上启动 K8s 集群。当我希望重新启动 Pis 时,我不清楚最佳做法是什么。
我怀疑sudo systemctl reboot
会导致问题。我不希望每次从kubeadm reset
.
有没有一种方法可以在不删除集群的情况下关闭并重新启动机器?
谢谢!
这个问题已经很老了,但我想其他人最终可能会偶然发现它,所以我想我会提供一个快速的答案,因为事实上,围绕这个操作有一个最佳实践。
您要确保的第一件事是您拥有一个高度可用的集群。这包括至少 3 个主节点和 3 个工作节点。为什么是3?这样一来,在任何给定时间,他们始终可以形成最终一致性的法定人数。
现在您已经有了一个 HA Kubernetes 集群,您将必须检查每一个应用程序清单,并确保您已指定资源请求和限制。这样您就可以确保永远不会在没有所需资源的情况下将 pod 调度到 pod 上。此外,如果 pod 存在导致其消耗高度异常资源的错误,则限制将阻止它关闭您的集群。
现在已经解决了,您可以开始重新启动集群的过程。你要做的第一件事是重启你的主人。因此,kubectl drain $MASTER
与您的(至少)三个大师之一竞争。API 服务器现在将拒绝任何调度尝试,并立即开始驱逐任何调度的 pod 并将它们的工作负载迁移到您的其他 master 的过程。
用于kubectl describe node $MASTER
监控节点,直到所有 pod 都被删除。现在您可以安全地连接到它并重新启动它。一旦它恢复,您现在可以运行kubectl uncordon $MASTER
,API Server 将再次开始为它调度 Pod。再次使用kubectl describe $NODE
,直到您确认所有 pod 都已就绪。
对所有的主人重复这个过程。重新启动主节点后,您可以安全地对所有三个(或更多)工作节点重复此过程。如果您正确执行此操作,您可以确保所有应用程序将保持 100% 的可用性,前提是它们为每个服务使用多个 pod 并配置了正确的部署策略。