Node Declared Features
More information about this feature
To use this feature, you (or a cluster administrator) will need to enable the NodeDeclaredFeatures feature gate for all relevant components in your cluster.
See Enable Or Disable Feature Gates for more information.
Kubernetesノードは Declared Features を使用して、新規機能やフィーチャーゲート制御された特定の機能が利用可能かどうかを報告します。
コントロールプレーンコンポーネントは、この情報を利用してより適切な判断を行います。
kube-schedulerは、NodeDeclaredFeaturesプラグインを介して、Podが必要とする機能を明示的にサポートするノードにのみPodを配置します。
さらに、NodeDeclaredFeatureValidatorアドミッションコントローラーは、Pod更新時にノードが必要な機能を宣言しているかを検証します。
このメカニズムにより、バージョンスキューを管理でき、クラスターの安定性が向上します。 特に、クラスターのアップグレード時や、すべてのノードで同じ機能が有効になっていない可能性がある混合バージョン環境で有効です。 これは、新しいノードレベルの機能を導入するKubernetes機能開発者向けのもので、バックグラウンドで動作します。 Podをデプロイするアプリケーション開発者は、このフレームワークと直接やり取りする必要はありません。
動作の仕組み
- Kubeletによる機能報告: 起動時に、各ノード上のkubeletは、現在有効になっている管理対象のKubernetes機能を検出し、Nodeオブジェクトの
.status.declaredFeaturesフィールドで報告します。 このフィールドには、アクティブに開発中の機能のみが含まれます。 - スケジューラーによるフィルタリング: デフォルトのkube-schedulerは
NodeDeclaredFeaturesプラグインを使用します。 このプラグインは:PreFilterステージで、PodSpecをチェックして、Podが必要とするノード機能のセットを推測します。Filterステージで、ノードの.status.declaredFeaturesにリストされている機能が、Podに対して推測された要件を満たすかどうかをチェックします。 必要な機能を持たないノードにはPodはスケジュールされません。 カスタムスケジューラーも.status.declaredFeaturesフィールドを利用して、同様の制約を適用できます。
- アドミッションコントロール:
nodedeclaredfeaturevalidatorアドミッションコントローラーは、バインド先のノードで宣言されていない機能を必要とするPodを拒否でき、Pod更新時の問題を防ぎます。
Node Declared Featuresの有効化
Node Declared Featuresを使用するには、kube-apiserver、kube-scheduler、およびkubeletコンポーネントでNodeDeclaredFeaturesフィーチャーゲートを有効にする必要があります。
次の項目
- 詳細については、KEPを参照してください: KEP-5328: Node Declared Features
NodeDeclaredFeatureValidatorアドミッションコントローラーについて読む。