防止在特定节点上调度 Pods - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

防止在特定节点上调度 Pods

Amazon EKS 支持通过托管节点组配置 Kubernetes 污点。污点和容差能力协同工作,以确保不会将 Pods 安排在不适当的节点上。可以为一个节点应用一个或多个 Pod。这标志着节点不应该接受任何不容忍污点的 Pods。对 Pods 应用容忍度,并允许(但不要求)将 Pods 安排到具有匹配污点的节点上。有关更多信息,请参阅 Kubernetes 文档中的污点和容忍度

可以使用Amazon Web Services Management Console或通过 Amazon EKS API,将 Kubernetes 节点污点应用于新的和现有的托管节点组。

  • 有关使用 Amazon Web Services Management Console 创建带有污点的节点组的信息,请参见 为集群创建托管式节点组

  • 以下是使用 Amazon CLI 创建带有污点的节点组的示例:

    aws eks create-nodegroup \ --cli-input-json ' { "clusterName": "my-cluster", "nodegroupName": "node-taints-example", "subnets": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890", "subnet-021345abcdef67890" ], "nodeRole": "arn:aws-cn:iam::111122223333:role/AmazonEKSNodeRole", "taints": [ { "key": "dedicated", "value": "gpuGroup", "effect": "NO_SCHEDULE" } ] }'

有关更多信息和用法示例,请参阅 Kubernetes 参考文档中的污点

注意
  • 创建节点组后,可以使用 UpdateNodegroupConfig API 更新污点。

  • 污点键必须以字母或数字开头。可以包含字母、数字、连字符(-)、句点( `.). It can be up to 63 characters long.

  • 污点键也可以以 DNS 子域前缀和单个 / 开头。如果它以 DNS 子域前缀开头,则长度可以为 253 个字符。

  • 值是可选的,必须以字母或数字开头。名称只能包含字母、数字和连字符( `-). It can be up to 63 characters long.

  • 直接使用 Kubernetes 或 Amazon Web Services Management Console 时,污点效果必须为 NoSchedulePreferNoScheduleNoExecute。但是,使用 Amazon CLI 或 API 时,污点效果必须是 NO_SCHEDULEPREFER_NO_SCHEDULENO_EXECUTE

  • 每个节点组最多允许 50 个污点。

  • 如果从节点中手动删除使用托管节点组创建的污点,则 Amazon EKS 不会将污点重新添加回该节点。即使在托管节点组配置中指定了污点,也是如此。

您可以使用 aws eks update-nodegroup-config Amazon CLI 命令为托管节点组添加、删除或替换污点。