检测耗尽节点的健康检查

时间:2021-07-16 16:37:40

标签: kubernetes load-balancing

我们在 L4 负载均衡器后面有一个 Kubernetes 集群,但是当我们需要更新/重启节点时,我们没有对负载均衡器的编程访问来添加/删除节点(LB 由我们托管服务提供商的支持团队管理) ).

负载均衡器确实支持健康检查,但当前的设置是调用每个节点上的端口 80 来确定节点是否健康。即使节点耗尽,这也会成功,因此我们别无选择,只能重新启动节点并等待 10 秒让 LB 注意到并在 kubeapi 死亡时将其从集合中取出。

我想要一个像每个节点的 pod 之类的东西,我们可以用它来确定节点是否处于活动状态,大概是使用节点端口设置的。问题是我找不到如何做到这一点。如果我使用 daemonset,我认为 pod 不会在排空期间被驱逐,因此无法正常工作,如果我使用正常部署,则无法保证健康节点将拥有 pod 实例并且看起来不健康.即使使用反关联设置,我认为也不能保证所有健康节点都有一个正在运行的 Pod 需要检查。

有谁知道一种使用 TCP 或 HTTP 调用节点来检测它是否耗尽的方法?

1 个答案:

答案 0 :(得分:1)

您正在寻找的解决方案似乎在 this documentation 中有完整描述:

<块引用>

Node Problem Detector 是一个守护进程,用于监控和报告节点的健康状况。您可以将节点问题检测器作为 DaemonSet 或独立守护程序运行。节点问题检测器从各种守护进程收集有关节点问题的信息,并将这些情况以 NodeConditionEvent 的形式报告给 API 服务器。

您可以根据其 condition 创建节点监控。

您还需要了解limitations

<块引用>
  • 节点问题检测器仅支持基于文件的内核日志。不支持 journald 等日志工具。
  • Node Problem Detector 使用内核日志格式报告内核问题。要了解如何扩展内核日志格式,请参阅 Add support for another log format