设置“所需大小:0”是否会阻止集群自动缩放程序扩展托管节点组?

EMC*_*EMC 4 autoscaling amazon-eks aws-auto-scaling

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

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

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

    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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

EMC*_*EMC 7

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

为了使 cluster-autoscaler 从 0 开始扩展节点组,它会根据节点组规范构造一个伪节点,在本例中为 aws autoscaling 组。为了让 cluster-autoscaler 了解要在该伪节点上放置哪些标签以检查它是否允许调度 pod,您需要向 nodegroup 添加特定标签

遗憾的是,aws 不会为您将此标签添加到自动缩放组,也不会将标签从托管节点组传播到自动缩放组。实现此目的的唯一方法是在受管节点组创建自动缩放组后,自行将标签添加到自动缩放组中。该问题已在此处跟踪。