配方:阻止在特定節點上排程 Pod - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

配方:阻止在特定節點上排程 Pod

概觀

相較於標準機器上的節點,搭載專用處理器的節點執行成本可能更高昂,例如 GPU。您可以利用 Kubernetes 污點,來保護這些節點免於處理無須特殊硬體的工作負載。污點可標記節點,以拒絕沒有相符公差的 Pod,從而確保僅排程相容的工作負載。如需詳細資訊,請參閱 Kubernetes 文件中的污點和容差

Kubernetes 節點污點可使用 AWS 管理主控台 或透過 Amazon EKS API 套用至新的和現有的受管理節點群組。此配方顯示了如何藉助 AWS CLI,將污點套用至 Amazon EKS 受管節點群組。若要了解使用 AWS 管理主控台 建立具有污點之節點群組的資訊,請參閱 建立叢集的受管節點群組

先決條件

步驟

步驟 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 管理主控台 時,污點效果必須為 NoSchedulePreferNoScheduleNoExecute。不過,使用 AWS CLI 或 API 時,污點效果必須為 NO_SCHEDULEPREFER_NO_SCHEDULENO_EXECUTE

  • 每個節點群組最多允許 50 個污點。

  • 如果從節點手動移除使用受管節點群組建立的污點,則 Amazon EKS 不會將污點重新加入節點。即使在受管節點群組組態中指定了污點,也是如此。