Cluster Autoscaler在ASG缩至0时崩溃:无法构建正确的模板节点

35次阅读
没有评论

问题描述

在使用Cluster Autoscaler(CAS)时遇到了一个问题。当Autoscaling Group(ASG)被缩放至0时,CAS的Pod版本1.17会停止工作,并进入一个循环,显示以下消息:

utils.go:126] Unable to build proper template node for my-nodegroup-NodeGroup-XXXXXX: ASG "eksctl-my-nodegroup-NodeGroup-XXXXXXX" uses the unknown EC2 instance type "c6i.8xlarge"
static_autoscaler.go:226] Failed to get node infos for groups: ASG "my-nodegroup-NodeGroup-XXXXXX" uses the unknown EC2 instance type "c6i.8xlarge"

即使另一个具有相同实例类型且副本数大于0的ASG也会出现相同的实例类型。

在CAS启动时,它会指示:

aws_cloud_provider.go:371] Successfully load 626 EC2 Instance Types: [...c6i.x8large,...]

我猜这应该允许CAS构建一个正确的模板。

用户曾经手动从CAS操作中删除了未使用的ASG,方法是删除ASG中的以下标签:

k8s.io/cluster-autoscaler/sports-models-dev-eks: owned
k8s.io/cluster-autoscaler/enabled: true

但是用户希望有一种不需要将ASG从CAS工作流中删除的解决方案。

解决方案

请注意以下操作可能因版本差异而有所不同,务必在进行操作前做好备份。

如何防止CAS在ASG缩至0时崩溃?

当ASG被缩放至0时,CAS可能会因为无法找到适当的实例类型模板而崩溃。为了防止这种情况发生,你可以考虑以下方法:

  1. 使用专用的实例类型: 确保CAS使用的实例类型在ASG被缩放至0时仍然可用。避免使用在缩放到0时被禁用或不可用的实例类型。

  2. 升级CAS版本: 检查是否有新的CAS版本可用。有时,已知的问题在较新的版本中可能已得到修复。

  3. 检查权限和配置: 确保CAS具有足够的权限和正确的配置,以便在ASG缩放至0时仍然能够获取所需的实例类型信息。

CAS的模板生成过程及为何加载EC2实例类型不足以让CAS继续工作?

CAS在处理ASG的缩放时,需要为新实例生成适当的模板。模板是一组实例配置参数,以便在需要时启动新实例。但是,当ASG缩放至0时,CAS可能无法为新实例生成正确的模板,因为它无法找到与所需实例类型相对应的模板。

在你的情况下,尽管CAS在启动时成功加载了EC2实例类型,包括”c6i.8xlarge”,但由于某种原因,CAS仍然无法构建适当的模板。这可能与CAS内部逻辑或依赖项有关。

CAS需要确保能够在ASG缩放至0时找到所需的实例类型模板,以便在需要时启动新实例。如果CAS无法找到适当的模板,就可能会出现崩溃的情况。

总结

当Cluster Autoscaler(CAS)的Autoscaling Group(ASG)被缩放至0时,CAS可能会崩溃,因为它无法构建适当的实例类型模板。为了防止这种情况发生,你可以考虑使用专用的实例类型、升级CAS版本以及确保CAS具有正确的权限和配置。CAS需要确保能够在需要时找到所需的实例类型模板,以便在ASG需要扩展时启动新实例。如果CAS无法构建适当的模板,就可能会出现崩溃情况。如果问题仍然存在,建议查阅CAS的文档或寻求社区支持以获取更多帮助。

正文完