協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
配方:阻止在特定節點上排程 Pod
概觀
相較於標準機器上的節點,搭載專用處理器的節點執行成本可能更高昂,例如 GPU。您可以利用 Kubernetes 污點,來保護這些節點免於處理無須特殊硬體的工作負載。污點可標記節點,以拒絕沒有相符公差的 Pod,從而確保僅排程相容的工作負載。如需詳細資訊,請參閱 Kubernetes 文件中的污點和容差
Kubernetes 節點污點可以使用 AWS 管理主控台 或透過 Amazon EKS API 套用至新的和現有的受管節點群組。此配方說明如何使用 CLI 將污點套用至 Amazon EKS AWS 受管節點群組。如需使用 建立具有污點的節點群組的資訊 AWS 管理主控台,請參閱 建立叢集的受管節點群組。
先決條件
-
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}]'
備註
-
污點可以在使用
UpdateNodegroupConfigAPI 建立節點群組後更新。 -
污點金鑰必須以字母或數字開頭。可包含字母、數字、連字號 (
-)、句點 (.) 及底線 (_)。長度上限為 63 個字元。 -
或者,污點金鑰可以使用 DNS 子網域字首和單一
/開頭。如果其以 DNS 子網域字首開頭,則長度可為 253 個字元。 -
值是選用的,必須以字母或數字開頭。可包含字母、數字、連字號 (
-)、句點 (.) 及底線 (_)。長度上限為 63 個字元。 -
直接使用 Kubernetes 或 AWS 管理主控台時,污點效果必須為
NoSchedule、PreferNoSchedule或NoExecute。不過,使用 AWS CLI 或 API 時,污點效果必須是NO_SCHEDULE、PREFER_NO_SCHEDULE或NO_EXECUTE。 -
每個節點群組最多允許 50 個污點。
-
如果從節點手動移除使用受管節點群組建立的污點,則 Amazon EKS 不會將污點重新加入節點。即使在受管節點群組組態中指定了污點,也是如此。