当我将所需大小和最小大小都设置为0时,我有一个aws托管节点组意外运行。我希望托管节点组一开始没有任何节点,但是一旦我尝试使用标签为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的预期行为?
发布于 2021-07-15 04:51:42
呃,事实证明这只是aws与集群自动伸缩器的不兼容,他们没有告诉你。您可以将托管节点组缩减为零,但如果没有解决方法,则无法将其重新缩放。
为了让cluster-autoscaler从0开始扩展节点组,它会根据节点组规范构建一个伪节点,在本例中为aws autoscaling组。为了让cluster-autoscaler知道在伪节点上放置什么标签以检查它是否允许调度pod,您需要执行add a specific tag to the nodegroup命令。
遗憾的是,aws不会将此标签添加到自动伸缩组,也不会将标签从托管节点组传播到自动伸缩组。要做到这一点,唯一的方法是在托管节点组创建自动伸缩组之后,自己将标记添加到自动伸缩组中。问题是tracked here。
https://stackoverflow.com/questions/68371171
复制相似问题