我正在使用EKS集群,我想对其使用cluster-autoscaler。
集群自动缩放器版本:1.2.2
EKS kubernetes版本:1.10
因此,我有一个全新的EKS集群(具有现有节点),我想使用CloudFormation脚本添加新的工作程序节点(如here所述)。
此脚本将3个新的t2.small EC2提供了一个自动缩放组。因为我想使用nodeSelector,所以已经按照说明here标记了ASG:
如果使用的是NodeSelector,则需要使用节点模板密钥“ k8s.io/cluster-autoscaler/node-template/label/”标记ASG
在我的AWS控制台中,我在ASG上看到这样的标签:
所以,我的问题是我在kubernetes中看到了新闻节点,但是标签 k8s.io/cluster-autoscaler/node-template/label/project 尚未分配给这些标签节点。我希望看到一个标签 project = asg2 。
...。我不知道我错过了什么。
我看到的唯一节点标签是:
beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=t2.small
beta.kubernetes.io/os=linux
failure-domain.beta.kubernetes.io/region=us-east-1
failure-domain.beta.kubernetes.io/zone=us-east-1c
kubernetes.io/hostname=ip-xxx-xxx-xxx-xxx.ec2.internal
这是我对cluster-autoscaler pod的启动命令:
"command": [
"./cluster-autoscaler",
"--v=4",
"--stderrthreshold=info",
"--cloud-provider=aws",
"--skip-nodes-with-local-storage=false",
"--nodes=1:3:at-eks-worker-nodes-asg2-NodeGroup-1QOBK4RZ42IZI"
]
我错过了什么?
谢谢您的帮助
答案 0 :(得分:0)
如果您使用的是来自AWS的最新云形式,则其中的user_data部分看起来像
#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}
/opt/aws/bin/cfn-signal --exit-code $? \
--stack ${AWS::StackName} \
--resource NodeGroup \
--region ${AWS::Region}
您可以配合使用。您只需要等待节点在集群中注册,然后可以添加所需的任何标签。请记住,ec2中的$(hostname)是kubernetes中节点的名称。例如:
#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}
until kubectl --kubeconfig=/var/lib/kubelet/kubeconfig get nodes $(hostname) > /dev/null 2>&1
do
sleep 1
done
kubectl --kubeconfig=/var/lib/kubelet/kubeconfig label nodes $(hostname) thisis=mylabel
/opt/aws/bin/cfn-signal --exit-code $? \
--stack ${AWS::StackName} \
--resource NodeGroup \
--region ${AWS::Region}
如果您使用的是较早的云形成模板,则可能的答案是here
当然,如果AWS再改变一下,这些可能不再起作用。
希望有帮助!