このページでは、カスタムの toleration とラベルを適用して、GKE 接続クラスタで Google 所有のシステム コンポーネントをカスタマイズする方法について説明します。これらのコンポーネントをカスタマイズすると、環境内でこれらのコンポーネントが動作する場所と方法をより正確に管理できます。
概要
クラスタを Google Cloudに接続すると、デフォルトでは、Google 所有のシステム コンポーネントに tolerations などのカスタマイズ可能なフィールドは含まれません。その結果、使用可能なノードに Pod がスケジュールされないなどの問題が発生し、クラスタの全体的な接続と機能に影響する可能性があります。また、組織と運用の目的でカスタムラベルを適用するなど、特定のノードにコンポーネントを配置して管理する制御が必要になることもあります。
システム コンポーネントをカスタマイズすると、これらの問題が解決され、クラスタでこれらのコンポーネントの動作をより細かく柔軟に制御できます。Google 所有のシステム コンポーネントにカスタムの toleration とラベルを適用できます。
toleration を使用すると、Google のコンポーネントを特定の Kubernetes taint を持つノードにスケジュールできます。これにより、ワークロードの分離を強制したり、専用のノードプールを使用したりできます。カスタム toleration は、変更できない taint が原因でコンポーネントを適切に配置できない問題を直接解決します。
ラベルを使用すると、Google のシステム コンポーネントを独自の運用基準に従って柔軟に分類、識別できます。カスタムラベルを使用すると、既存のモニタリング、ロギング、ポリシー適用ツールとの統合を強化できます。
制限事項
次の制限事項があります。
- カスタムの toleration とラベルを追加できるのは、クラスタを登録するときのみです。
- クラスタに追加できるカスタムの toleration とラベルはそれぞれ最大 10 個までです。
次のラベルは使用できません。
name
component
app
k8s.io
またはkubernetes.io
を含むラベル(これらは Kubernetes の予約済みラベルに属しているため)google
を含むラベルgke.io
を含むラベル
カスタム toleration を追加する
Google 所有のシステム コンポーネント Pod には、常に次の toleration が含まれます。
- key: components.gke.io/gke-managed-components
operator: Exists
カスタム toleration を指定するには、gcloud container attached clusters register
コマンドに --system-component-tolerations
フラグを追加します。
gcloud container attached clusters register CLUSTER_NAME \
--location=GOOGLE_CLOUD_REGION \
...
--system-component-tolerations=COMPONENT_TOLERATION \
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前。
- GOOGLE_CLOUD_REGION: クラスタを管理する Google Cloud リージョン。
COMPONENT_TOLERATION: 追加する toleration のカンマ区切りリスト。キー、値、演算子、効果を次の形式で指定できます。
Equal
演算子の場合:key=value:operator:effect
形式を使用します(例:workload=hpc:Equal:NoSchedule
。この設定は、taint のキーと値がworkload=hpc
と完全に一致する場合にのみ Pod が taint を許容することを意味します)。Exists
演算子の場合:key:operator:effect
形式を使用します(例:workload:Exists:NoSchedule
。この設定は、workload
キーを持つ taint を値に関係なく Pod がノードで許容することを意味します)。- 任意のノードでスケジュールする場合:
:operator:effect
形式を使用します(例::Exists:NoSchedule
。この設定は、効果がNoSchedule
の taint を Pod がノードで許容することを意味します。taint のキーや値は無視されます)。
使用できる演算子と効果の一覧については、Kubernetes ドキュメントの taint と toleration をご覧ください。
カスタムラベルを追加する
カスタムラベルを指定するには、gcloud container attached clusters register
コマンドに --system-component-labels
フラグを追加します。
gcloud container attached clusters register CLUSTER_NAME \
--location=GOOGLE_CLOUD_REGION \
...
--system-component-labels=COMPONENT_LABEL \
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前。
- GOOGLE_CLOUD_REGION: クラスタを管理する Google Cloud リージョン。
- COMPONENT_LABEL: 追加する 1 つ以上のラベルのカンマ区切りリスト。ラベルと値は
key=value
の形式で指定します(例:env=production,region=us-east-1
)。すべてのラベルにキーが必要ですが、そのキーに関連付けられた値は空にできます(例:backend=""
)。
次のステップ
- Kubernetes ドキュメントで taint と toleration について学習する。
- EKS クラスタを接続する方法を学習する。