为防止Cluster Auto Scaler
终止某些节点,我需要用以下注释它们:
cluster-autoscaler.kubernetes.io/scale-down-disabled=true;
在USERDATA
脚本中有没有办法做到这一点?
为了标记节点,可以通过以下方式进行标记:
--kubelet-extra-args \
"--node-labels=
谢谢
答案 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'
我希望能给你一个很好的例子。