協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
配方:防止在特定節點上排程 Pod
概觀
與標準機器上的節點相比,具有 GPUs 等專用處理器的節點執行成本更高。若要保護這些節點免於不需要特殊硬體的工作負載,您可以使用 Kubernetes 污點。污點標記節點以拒絕沒有相符公差的 Pod,確保只排程相容的工作負載。如需詳細資訊,請參閱 Kubernetes 文件中的污點和容錯
Kubernetes 節點污點可以使用 AWS Management Console 或透過 Amazon EKS API 套用至新的和現有的受管節點群組。此配方說明如何使用 CLI 將污點套用至 Amazon EKS AWS 受管節點群組。如需使用 建立具有污點的節點群組的資訊 AWS Management Console,請參閱 為您的叢集建立受管節點群組。
先決條件
-
AWS CLI 已安裝並設定適當的許可。
步驟
步驟 1:建立具有污點的節點群組
使用 aws eks create-nodegroup
命令建立具有污點的新受管節點群組。此範例會套用具有索引鍵 dedicated
、值 gpuGroup
和效果 的污點NO_SCHEDULE
。
aws eks create-nodegroup \ --cli-input-json ' { "clusterName": "my-cluster", "nodegroupName": "node-taints-example", "subnets": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890", "subnet-021345abcdef67890" ], "nodeRole": "arn:aws: iam::111122223333:role/AmazonEKSNodeRole", "taints": [ { "key": "dedicated", "value": "gpuGroup", "effect": "NO_SCHEDULE" } ] }'
如需詳細資訊和範例,請參閱 Kubernetes 參考文件中的污點
步驟 2:更新現有節點群組上的污點
使用 aws eks update-nodegroup-config AWS CLI 命令來新增、移除或取代受管節點群組的污點。
aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name node-taints-example --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'
備註
-
污點可以在使用
UpdateNodegroupConfig
API 建立節點群組後更新。 -
污點金鑰必須以字母或數字開頭。可包含字母、數字、連字號 (
-
)、句點 (.
) 及底線 (_
)。長度上限為 63 個字元。 -
或者,污點金鑰可以使用 DNS 子網域字首和單一
/
開頭。如果其以 DNS 子網域字首開頭,則長度可為 253 個字元。 -
值是選用的,必須以字母或數字開頭。可包含字母、數字、連字號 (
-
)、句點 (.
) 及底線 (_
)。長度上限為 63 個字元。 -
直接使用 Kubernetes 或 時 AWS Management Console,污點效果必須是
NoSchedule
、PreferNoSchedule
或NoExecute
。不過,使用 AWS CLI 或 API 時,污點效果必須是NO_SCHEDULE
、PREFER_NO_SCHEDULE
或NO_EXECUTE
。 -
每個節點群組最多允許 50 個污點。
-
如果使用受管節點群組建立的污點是從節點手動移除,則 Amazon EKS 不會將污點新增至節點。即使在受管節點群組組態中指定了污點,也是如此。