关于腾讯云:K8S节点异常怎么办TKE节点健康检查和自愈来帮忙

1次阅读

共计 2022 个字符,预计需要花费 6 分钟才能阅读完成。

节点衰弱检测

意义

在 K8S 集群运行的过程中,节点经常会因为运行时组件的问题、内核死锁、资源有余等各种各样的起因不可用。Kubelet 默认对节点的 PIDPressure、MemoryPressure、DiskPressure 等资源状态进行了监控,然而当 Kubelet 上报这些状态的时候,节点很可能曾经长时间处于不可用状态了,并且 Kubelet 可能曾经开始了驱赶 Pod 的操作。所以原生 K8S 对节点衰弱的检测机制在一些场景下是不欠缺的,咱们须要可能在节点呈现问题之前提前发现,并且须要更加粗疏化的指标来形容节点的衰弱状态并且采取相应的复原策略,实现智能运维,节俭开发和运维人员的累赘。

Node-Problem-Detector

NPD(Node-Problem-Detector) 是 Kubernetes 社区开源的集群节点的衰弱检测组件。NPD 提供了通过正则匹配系统日志或文件来发现节点异样的性能。用户能够通过本人的运维教训,配置可能产生异样问题日志的正则表达式,抉择不同的上报形式。NPD 会解析用户的配置文件,当有日志能匹配到用户配置的正则表达式时,能够通过 NodeCondition、Event 或 Promethues Metric 等形式将检测到的异样状态上报。除了日志匹配性能,NPD 还给承受用户本人编写的自定义检测插件,用户能够开发本人的脚本或可执行文件集成到 NPD 的插件中,让 NPD 定期执行检测程序。

TKE 中的节点衰弱检测

在 TKE 中通过扩大组件的模式集成了 NPD,并且对 NPD 的能力做了加强,称为 NodeProblemDetectorPuls(NPDPlus)扩大组件。用户能够对已有集群一键部署 NPDPlus 扩大组件,也能够在创立集群的时候抉择在创立集群的同时部署 NPDPlus。在腾讯云容器团队长期经营运维 K8S 集群的教训中,提取了一些能够通过特定模式发现节点异样的指标,并且把其中的一些指标集成在了 NPDPlus 中。例如在 NPDPlus 容器中检测 Kubelet 和 Docker 的 systemd 状态,以及检测主机的文件描述符和线程数压力等。具体指标如下所示:

TKE 应用 NPDPlus 的目标是可能提前发现节点可能不可用状态,而不是当节点曾经不衰弱后再上报状态。当用户在 TKE 集群中部署了 NPDPlus 后,应用命令 kubectl describe node 会发现多出了很多 Node Condition,如 FDPressure 示意该节点上曾经应用的文件描述符数量是否曾经达到机器容许最大值的 80%;ThreadPressure 示意节点上的线程数是否曾经达到机器容许的 90% 等等。用户能够监控这些 Condition,当异样状态呈现时,提前采取躲避策略。

同时,K8S 目前认为节点 NotReady 的机制依赖于 kube-controller-manager 的参数设定,当节点网络齐全不通的状况下 K8S 很难在秒级别发现节点的异样,这在一些场景下(如直播、在线会议等)是不能承受的。针对这种场景,NPDPlus 中继承了分布式节点衰弱检测性能,能够在秒级疾速地检测节点网络状态,以及是否能与其余节点互相通信,同时不依赖与 K8S master 组件的通信。此性能的实现原理和性能会在之后的文章中具体介绍。

节点自愈

采集节点的衰弱状态是为了可能在业务 Pod 不可用之前提前发现节点异样,从而运维或开发人员能够对 Docker、Kubelet 或节点进行修复。在 NPDPlus 中,为了加重运维人员的累赘,提供了依据采集到的节点状态从而进行不同自愈动作的能力。集群管理员能够依据节点不同的状态配置相应的自愈能力,如重启 Docker、重启 Kubelet 或重启 CVM 节点等。同时为了避免集群中的节点雪崩,在执行自愈动作之前做了严格的限流,避免节点大规模重启。同时为了避免集群中的节点雪崩,在执行自愈动作之前做了严格的限流。具体策略为:

  • 在同一时刻只容许集群中的一个节点进行自愈行为,并且两个自愈行为之间至多距离 1 分钟
  • 当有新节点增加到集群中时,会给节点 2 分钟的容忍工夫,避免因为节点刚刚增加到集群的不稳定性导致谬误自愈
  • 当节点触发重启 CVM 自愈动作后还处于异样状态时,则在 3 小时之内此节点不再执行任何自愈动作

NPDPlus 会将执行过的所有自愈动作记录在 Node 的 Event 中,不便集群管理员理解在 Node 上产生的事件。

使用指南

  1. 登录腾讯云容器服务控制台,点击想要创立 NPDPlus 的集群。
  2. 点击集群详情页左侧的组件治理,在组件治理中选中 NodeProblemDetectorPlus(节点异样检测 Plus)。
  3. 配置 NodeProblemDetectorPlus 参数,能够抉择依据特定节点的状态执行不同的自愈动作。
  4. 抉择确定,点击实现即可一键创立。
  5. 在集群的组建治理中查看到 NPDPlus 运行中阐明 NPDPlus 运行胜利:

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

正文完
 0