前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 1.28 这个功能已 GA,主机故障时服务能快速恢复

K8S 1.28 这个功能已 GA,主机故障时服务能快速恢复

作者头像
我的小碗汤
发布2023-09-08 09:16:32
2730
发布2023-09-08 09:16:32
举报
文章被收录于专栏:我的小碗汤我的小碗汤

作者: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污点。

代码语言:javascript
复制
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 节流

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是节点非正常关闭?
  • 稳定版中有哪些新内容?
  • 下一步?
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档