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