作者:Xing Yang (VMware) 和 Ashutosh Kumar (Elastic) 原文:https://t.hk.uy/b3Yq 译者:进击云原生
Kubernetes 的非正常节点关闭功能现已在 Kubernetes v1.28 中正式发布(GA)。它在 Kubernetes v1.24 中作为 alpha[1]引入 ,并在 Kubernetes v1.26 中提升为 beta[2] 。如果原始节点意外关闭或最终处于不可恢复状态(例如硬件故障或操作系统无响应),此功能允许有状态工作负载在其他正常节点上重新启动。
什么是节点非正常关闭?
在 Kubernetes 集群中,节点可能会按计划正常关闭,也可能因断电或其他外部原因而意外关闭。如果节点在关闭之前未清空,则节点关闭可能会导致工作负载失败。节点关闭可以是正常关闭,也可以是非正常关闭。
节点 平滑关闭[3] 功能允许 Kubelet 在实际关闭之前检测节点关闭事件、正确终止 Pod 并释放资源。
当节点关闭,但 Kubelet 的节点关闭管理器未检测到时,这种场景即为节点非正常关闭。对于无状态应用程序来说,非正常节点关闭通常不是问题,但是对于有状态应用程序来说,这会导致不可预期的问题。如果 Pod 还在已关闭的节点上,并且未在正在运行的节点上重新启动,则有状态应用程序将无法正常运行。
在节点非正常关闭的情况下,您可以在节点上手动添加out-of-service
污点。
kubectl taint nodes <node-name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute
如果 pod 上没有匹配的容忍度,则此污点会触发节点上的 pod 被强制删除。attach 到关闭节点的持久卷将被分离,并且新的 Pod 将在正常的节点上成功创建。
注意:在设置
out-of-service
污点之前,必须验证节点是否已处于关闭或断电状态(而不是在重新启动过程中)。
一旦已停止服务的节点的所有工作负载 Pod 都移动到新的节点,并且关闭的节点已恢复,应该在受影响的节点恢复后删除该节点上的污点,保证后续的 Pod 可以安排在该节点上。
稳定版中有哪些新内容?
随着非正常节点关闭功能提升至稳定状态,则 kube-controller-manager
中的NodeOutOfServiceVolumeDetach
功能门将锁定为 true
,并且无法禁用。
Pod GC 控制器中的force_delete_pods_total
指标和force_delete_pod_errors_total
指标均得到增强,主要考虑到所有 Pod 被强制删除。指标中会添加一个原因,以指示 pod 是否因为它已终止、变为孤立状态、带有out-of-service
的污点终止、或终止且未调度。
attachdetach_controller_forced_detaches
附加分离控制器中的指标中还会添加一个“原因” ,以指示强制分离是由out-of-service
污点还是超时引起的。
下一步?
此功能要求用户手动向节点添加污点以触发工作负载故障转移,并在节点恢复后删除污点。未来,我们计划找到方法来自动检测和隔离关闭/失败的节点,并自动将工作负载故障转移到另一个节点。查看此功能其他文档[4] 。
参考资料
[1]
alpha: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/2268-non-graceful-shutdown
[2]
beta: https://kubernetes.io/blog/2022/12/16/kubernetes-1-26-non-graceful-node-shutdown-beta/
[3]
平滑关闭: https://kubernetes.io/blog/2021/04/21/graceful-node-shutdown-beta/
[4]
查看此功能其他文档: https://kubernetes.io/docs/concepts/architecture/nodes/#non-graceful-node-shutdown
推荐阅读
高效强大的可扩展自动化工具 Saltstack
微服务中的链路追踪:7 大工具的全方位对比与分析
Stable diffusion AI 绘图二次开发,代码现成,拿走即用
MacOS 上好用的 ChatGPT 客户端推荐
docker-compose 快速部署 ZK 保姆级教程
实验理解 K8S 滚动更新时如何实现零宕机
K3S 入门级实战教程,和 K8S 有何不同?
无需依赖 Docker 环境制作 Java 应用镜像
K8S v1.26:CPUManager 正式发布,生产可用!
动图理清 K8S OOM 和 CPU 节流