レシピ: 特定のノードでポッドがスケジュールされないようにする - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

レシピ: 特定のノードでポッドがスケジュールされないようにする

概要

GPU などの専門的なプロセッサを搭載したノードは、標準的なマシンのノードよりも実行コストが高くなる場合があります。特別なハードウェアを必要としないワークロードからこれらのノードを保護するには、Kubernetes テイントを使用できます。テイントはノードをマークして、許容範囲が一致しないポッドを避け、互換性のあるワークロードのみがスケジュールされるようにします。詳細については、Kubernetes ドキュメントの「テイントと容認」を参照してください。

AWS Management Consoleまたは Amazon EKS API を使用して、新規または既存のマネージド型ノードグループに Kubernetes ノードのテイントが適用されます。このレシピは、AWS CLI を使用して Amazon EKS マネージドノードグループにテイントを適用する方法を示しています。を使用してテイントが適用されたノードグループを作成するを使用してテイントが適用されたノードグループを作成するを使用してテイントが適用されたノードグループを作成する情報はAWS Management Consoleクラスターのマネージドノードグループを作成する、、、、、、、、

前提条件

ステップ

ステップ 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 文字です

  • オプションで、Taint キーは DNS サブドメインプレフィックスと単一の / で始めることができます。このキーを DNS サブドメインプレフィックスで始める場合は、最大 253 文字まで使用できます。

  • 値は省略可能で、文字または数字で始める必要があります。英字、数字、ハイフン (-)、ピリオド (.)、およびアンダースコア (_) を使用できます。最大 63 文字です

  • Kubernetes を直接使用するか、AWS Management Consoleを使用する場合、テイント効果は NoSchedulePreferNoSchedule、または NoExecute でなければなりません。ただし、AWS CLI または API を使用する場合、テイント効果は NO_SCHEDULEPREFER_NO_SCHEDULE、または NO_EXECUTE でなければなりません。

  • 1 つのノードグループには、最大 50 個のテイントを使用できます。

  • マネージドノードグループを使用して作成されたテイントをノードから手動で削除した場合、Amazon EKS はテイントをノードに戻しません。これは、管理対象ノードグループ設定でテイントが指定されている場合にも当てはまります。