EKS 节点组 Terraform - 为特定节点添加标签
EKS Node Group Terraform - Add label to specific node
我正在通过 Terraform 使用托管节点配置 EKS。没问题,一切正常。
我的问题是我想向我的一个节点添加一个标签,以用作我的一个部署中的节点选择器。我有一个由 EBS 持久卷支持的应用程序,它显然只能在单个 AZ 中使用,所以我希望我的 pod 在那里安排。
我可以很容易地添加标签:
kubectl label nodes <my node> <key>=<value>
实际上这很好,直到您执行类似将节点组更新到下一个版本的操作。标签不会持续存在,这是有道理的,因为它们不受亚马逊管理。
有没有办法通过 terraform 或其他方式来设置这些标签并使它们持久存在。我注意到 Terraform 的 EKS 提供程序有一个标签选项,但它似乎会将标签添加到节点组中的所有节点,而这不是我想要的。我环顾四周,但找不到任何东西。
您可以使用 Terraform 轻松实现:
resource "aws_eks_node_group" "example" {
...
labels = {
label_key = "label_value"
}
}
您可能不需要为特定节点添加标签来解决您的问题。亚马逊作为云提供商向托管节点组中的每个节点添加了一些 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 documentation,节点和持久卷都应具有由云提供商填充的此标签。
希望这对您有所帮助。如果您还有问题,请告诉我。
添加第二个节点组(带有所需的节点信息)并标记该节点组。
我正在通过 Terraform 使用托管节点配置 EKS。没问题,一切正常。
我的问题是我想向我的一个节点添加一个标签,以用作我的一个部署中的节点选择器。我有一个由 EBS 持久卷支持的应用程序,它显然只能在单个 AZ 中使用,所以我希望我的 pod 在那里安排。
我可以很容易地添加标签:
kubectl label nodes <my node> <key>=<value>
实际上这很好,直到您执行类似将节点组更新到下一个版本的操作。标签不会持续存在,这是有道理的,因为它们不受亚马逊管理。
有没有办法通过 terraform 或其他方式来设置这些标签并使它们持久存在。我注意到 Terraform 的 EKS 提供程序有一个标签选项,但它似乎会将标签添加到节点组中的所有节点,而这不是我想要的。我环顾四周,但找不到任何东西。
您可以使用 Terraform 轻松实现:
resource "aws_eks_node_group" "example" {
...
labels = {
label_key = "label_value"
}
}
您可能不需要为特定节点添加标签来解决您的问题。亚马逊作为云提供商向托管节点组中的每个节点添加了一些 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 documentation,节点和持久卷都应具有由云提供商填充的此标签。
希望这对您有所帮助。如果您还有问题,请告诉我。
添加第二个节点组(带有所需的节点信息)并标记该节点组。