如何在EKS托管节点组中删除节点,如果Kubelet崩溃或停止报告?

9
我正在使用AWS EKS和托管节点组。在过去的几周中,有两次出现了一个节点上的Kubelet崩溃或停止向控制平面报告的情况。
在这种情况下,我期望自动扩展组将识别此节点为不健康,并替换它。然而,实际情况并非如此。我通过创建一个节点并手动停止Kubelet来重现了此问题,请参见下面的图像:

enter image description here

我的第一个想法是创建一个事件总线警报,触发一个lambda来处理这个问题,但我在事件总线的服务列表中找不到EKS服务,所以……

有人知道一个工具或配置可以帮助解决这个问题吗? 明确一下,我正在寻找以下内容:

  1. 检测kubelet未连接到控制平面
  2. 删除集群中的节点
  3. 终止EC2

谢谢!


你有解决方案吗? - thinkingmonster
1
我认为AutoScaling组并不知道节点出现故障,因为它只关心节点指标,控制平面是拥有这些信息的,应该与其他组件如集群自动缩放器进行交流以创建/销毁节点。 针对您的情况,我有一些建议:
  • 首先启用自动缩放以确保应用程序的可用性,然后开始SSH到错误节点进行调试
  • 检查您的网络、VPC、CIDR
  • 检查您的集群是否有第三方CNI,例如Cillium...或配置缺失之类的问题
  • 检查角色和权限
- Brody
你可以实现上述机制,但这仍然是一种临时的方法来解决我们甚至不知道原因的问题。如果可以,请在此处记录日志,以便社区可以提供帮助。让我们知道你的发现,这将是一个很好的诊断工作。 - Brody
我们已经开始使用Karppenter进行自动扩展,虽然配置有点棘手,但一旦配置好了就能很好地工作。 - yammering
1个回答

1
我建议查看node-problem-detector或Cloudflare的博客。在EKS路线图上有一个问题,用于自动化节点健康检查。如果这对您很重要,我会为该问题投票支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接