设置 "desired size: 0" 是否会阻止 cluster-autoscaler 扩展托管节点组?

Does setting "desired size: 0" prevent cluster-autoscaler from scaling up a managed node group?

我有一个 aws 托管节点组,当我将所需大小和最小大小都设置为 0 时出现意外行为。我希望托管节点组不会有任何节点开始,但是一旦我尝试要使用带有标签 eks.amazonaws.com/nodegroup: my-node-group-name 的 nodeSelector 调度 pod,集群自动缩放器会将托管节点组的所需大小设置为 1,然后将启动一个节点。

但是,集群自动缩放程序日志表明挂起的 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 的预期行为?

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

为了使 cluster-autoscaler 从 0 开始扩展节点组,它会根据节点组规范构建一个伪节点,在本例中为 aws autoscaling 组。为了让 cluster-autoscaler 知道在该伪节点上放置什么标签以检查它是否允许调度 pod,您需要 add a specific tag to the nodegroup.

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