我正在通过Terraform为受管节点配置EKS。那里没有问题,一切正常。
我的问题是我想在我的一个节点中添加一个标签,以在我的一个部署中用作nodeSelector。我有一个由EBS永久卷支持的应用程序,该卷显然仅在单个AZ中可用,因此我希望我的Pod安排在那儿。
我可以很容易地添加标签:
kubectl label nodes <my node> <key>=<value>
实际上这很好,直到您执行诸如将节点组更新到下一个版本之类的操作为止。标签不会持续存在,这很有意义,因为它们不是由Amazon管理的。
有没有办法通过地形或其他方法设置这些标签并使它们持久化。我注意到,用于Terraform的EKS提供程序具有标签选项,但似乎会将标签添加到节点组中的所有节点,这不是我想要的。我环顾四周,但找不到任何东西。
您可能不需要为特定节点添加标签来解决您的问题。亚马逊作为云提供商,向受管节点组中的每个节点添加了一些Kubernetes标签。例:
labels:
failure-domain.beta.kubernetes.io/region: us-east-1
failure-domain.beta.kubernetes.io/zone: us-east-1a
kubernetes.io/hostname: ip-10-10-10-10.ec2.internal...
kubernetes.io/os: linux
topology.ebs.csi.aws.com/zone: us-east-1a
topology.kubernetes.io/region: us-east-1
topology.kubernetes.io/zone: us-east-1a
可用的确切标签取决于您所运行的Kubernetes的版本。尝试运行kubectl get nodes -o json | jq '.items[].metadata.labels'
以查看在集群中每个节点上设置的标签。
我建议使用topology.kubernetes.io/zone
来匹配包含您的EBS卷的可用区域。根据Kubernetes文档,节点和永久卷都应由云提供商填充此标签。
希望这可以帮助。让我知道您是否还有问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句