2

我正在使用 EKS 集群,我想使用集群自动缩放器。

集群自动缩放器版本:1.2.2

EKS Kubernetes 版本:1.10

因此,我有一个全新的 EKS 集群(具有现有节点),并且我想使用 CloudFormation 脚本添加新的工作节点(如此所述)。

该脚本将 3 个新的 t2.small EC2 提供到一个自动缩放组中。因为我想使用 nodeSelector,所以我已经按照此处的说明标记了 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" ] 我错过了什么?

谢谢您的帮助

4

1 回答 1

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}

如果您使用的是较旧的云形成模板,可能的答案在这里

当然,如果 AWS 再次改变,这些可能不再有效。

希望有帮助!

于 2018-09-07T19:11:19.937 回答