EKS-如何注释USERDATA中的某些节点?

时间:2019-07-11 15:00:04

标签: kubernetes annotations nodes eks

为防止Cluster Auto Scaler终止某些节点,我需要用以下注释它们:

cluster-autoscaler.kubernetes.io/scale-down-disabled=true;

USERDATA脚本中有没有办法做到这一点? 为了标记节点,可以通过以下方式进行标记:

    --kubelet-extra-args \
        "--node-labels=

谢谢

3 个答案:

答案 0 :(得分:1)

您可以通过使用bootstrap.sh调用上的--kubelet-extra-args选项来添加节点标签,污点等,如您所料。有关示例,请参阅AWS博客文章:Improvements for Amazon EKS Worker Node Provisioning

使用类似于以下内容的USERDATA脚本:

      UserData: !Base64
        "Fn::Sub": |
          #!/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}

以上是CloudFormation模板的片段。当然,如果您愿意,可以通过增强安全性等来使脚本更加复杂。

有关完整的CloudFormation模板,请从AWS下载示例:

curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-11-15/amazon-eks-nodegroup.yaml

答案 1 :(得分:0)

否,不可能。

引导脚本支持的参数列表:

--use-max-pods Sets --max-pods for the kubelet when true. (default: true)
--b64-cluster-ca The base64 encoded cluster CA content. Only valid when used with --apiserver-endpoint. Bypasses calling \"aws eks describe-cluster\"
--apiserver-endpoint The EKS cluster API Server endpoint. Only valid when used with --b64-cluster-ca. Bypasses calling \"aws eks describe-cluster\"
--kubelet-extra-args Extra arguments to add to the kubelet. Useful for adding labels or taints.
--enable-docker-bridge Restores the docker default bridge network. (default: false)
--aws-api-retry-attempts Number of retry attempts for AWS API call (DescribeCluster) (default: 3)
--docker-config-json The contents of the /etc/docker/daemon.json file. Useful if you want a custom config differing from the default one in the AMI

答案 2 :(得分:0)

这是绝对可能的。这是我的示例用户数据的一部分,如果要同时运行OnDemand和Spot实例,则特别有用。在我的示例中,我要添加生命周期节点标签,该标签会根据类型而变化。见下文:

--use-max-pods 'true' \
--kubelet-extra-args ' --node-labels=lifecycle=OnDemand \
--system-reserved cpu=250m,memory=0.2Gi,ephemeral-storage=1Gi \
--kube-reserved cpu=250m,memory=1Gi,ephemeral-storage=1Gi \
--eviction-hard memory.available<0.2Gi,nodefs.available<10% \
--event-qps 0'

我希望能给你一个很好的例子。