设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?

Posted

技术标签:

【中文标题】设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?【英文标题】:Does setting "desired size: 0" prevent cluster-autoscaler from scaling up a managed node group?设置“期望大小:0”是否会阻止集群自动缩放器扩展托管节点组? 【发布时间】:2021-09-23 00:36:20 【问题描述】:

我有一个 aws 托管节点组,当我将所需大小和最小大小都设置为 0 时,该节点组运行异常。我希望托管节点组开始时不会有任何节点,但是一旦我尝试安排如果 pod 使用带有标签 eks.amazonaws.com/nodegroup: my-node-group-name 的 nodeSelector,则 cluster-autoscaler 会将托管节点组的所需大小设置为 1,然后启动一个节点。

但是,cluster-autoscaler 日志表明挂起的 pod 不会触发扩展,因为它不可调度:pod didn't trigger scale-up (it wouldn't fit if a new node is added)。但是,当我在托管节点组中手动将所需大小设置为 1 时,pod 已成功调度,因此我知道 nodeSelector 工作正常。

我认为这可能是标签问题,如 here: 所述,但我已将托管节点组上的标签设置为自动发现。

    spec:
      containers:
      - command:
        - ./cluster-autoscaler
        - --cloud-provider=aws
        - --namespace=kube-system
        - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster-name
        - --balance-similar-node-groups=true
        - --expander=least-waste
        - --logtostderr=true
        - --skip-nodes-with-local-storage=false
        - --skip-nodes-with-system-pods=false
        - --stderrthreshold=info
        - --v=4

我在自动缩放组上设置了相同的标签:

Key                                             Value                             Tag new instances
eks:cluster-name                                 my-cluster-name                   Yes
eks:nodegroup-name                               my-node-group-name                Yes
k8s.io/cluster-autoscaler/enabled                true                              Yes
k8s.io/cluster-autoscaler/my-cluster-name        owned                             Yes
kubernetes.io/cluster/my-cluster-name             owned                            Yes

我错过了什么吗?或者这是将所需大小设置为 0 的预期行为?

【问题讨论】:

【参考方案1】:

呃,事实证明这只是他们没有告诉您的与集群自动缩放器的 aws 不兼容。您可以将托管节点组缩小到零,但如果没有变通方法,则无法将其重新扩展。

为了让集群自动缩放器从 0 扩展节点组,它会根据节点组规范构造一个伪节点,在本例中为 aws 自动缩放组。为了让集群自动缩放器知道在该伪节点上放置什么标签以检查它是否允许调度 pod,您需要add a specific tag to the nodegroup。

遗憾的是,aws 不会为您将此标签添加到自动缩放组,也不会将标签从托管节点组传播到自动缩放组。完成这项工作的唯一方法是在托管节点组创建标记后自行将其添加到自动缩放组。该问题已被跟踪here。

【讨论】:

以上是关于设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?的主要内容,如果未能解决你的问题,请参考以下文章

使用集群自动缩放器时如何在不停机的情况下实现节点的优雅终止?

GKE 自动缩放无法缩放

我们可以在没有 Google 自动缩放器的情况下在 Google 云计算上扩展应用程序吗?

有状态集最佳实践的动态扩展

具有服务结构群集自动缩放的 VMSS

服务自动缩放描述可扩展目标未运行