未将EKS和标签k8s.io/cluster-autoscaler/node-template/label分配给工作节点

时间:2018-07-23 15:03:02

标签: amazon-eks

我正在使用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上看到这样的标签:

tag

所以,我的问题是我在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" ] 我错过了什么?

谢谢您的帮助

1 个答案:

答案 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再改变一下,这些可能不再起作用。

希望有帮助!