Kubernetesメトリック・サーバ

Kubernetesメトリック・サーバー・クラスタ・アドオンを有効にすると、次のキー/値のペアを引数として渡すことができます

Kubernetesメトリック・サーバーをクラスタ・アドオンとして使用するには、cert-managerもデプロイする必要があります(スタンドアロン製品として、またはクラスタ・アドオンとして)。スタンドアロン製品としてcert-managerをデプロイする場合は、skipAddonDependenciesCheck構成引数をtrueに設定します。

ほとんどのクラスタ・アドオンに共通の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
affinity affinity

アフィニティ・スケジューリング・ルールのグループ。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
可能な等価:
  • ノード機能の検出、master.affinityの使用
  • NVIDIA Network Operator、operator.affinityを使用
  • CSIドライバSMB、contoller.affinityを使用
  • AMD GPUオペレータ、controllerManager.affinityを使用
オプション null null
nodeSelectors ノード・セレクター

ノード・セレクタおよびノード・ラベルを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

ポッドをノードで実行するには、ポッドのノード・セレクタのキー/値がノードのラベルと同じである必要があります。

nodeSelectorsを、ポッドのノード・セレクタとワーカー・ノードのラベルの両方に一致するキー/値ペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
  • CSIドライバ SMB
可能な等価:
  • ノード機能の検出、worker.nodeSelectorの使用
  • NVIDIA Network Operator、operator.nodeSelectorsを使用
  • AMD GPU演算子。selectorまたはcontrollerManager.nodeSelectorを使用します
オプション null {"foo":"bar", "foo2": "bar2"}

ポッドは、foo=barまたはfoo2=bar2ラベルを持つノードでのみ実行されます。

numOfReplicas numOfReplicas アドオン配備の複製の数。
未使用者:
  • AMD GPUプラグイン
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • CoreDNS。nodesPerReplicaを使用します。
  • ノード機能の検出、master.replicaCountの使用
  • AMD GPUオペレータ、controllerManager.replicasを使用
必須 1

クラスタごとにアドオン・デプロイメントのレプリカを1つ作成します。

2

クラスタごとにアドオン・デプロイメントの2つのレプリカを作成します。

rollingUpdate rollingUpdate

maxSurgeおよびmaxUnavailableによるローリング更新の望ましい動作を制御します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • NVIDIA GPU Operator、daemonsets.rollingUpdate.maxUnavailableを使用
  • AMD GPU演算子。devicePluginmetricsExportertestRunner configManagerまたはdraDriverupgradePolicyを使用します。
オプション null null
tolerations 許容範囲

テイントおよび許容範囲を使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

taintがあるノード上でポッドを実行するには、ポッドに対応する許容範囲が必要です。

tolerationsを、ポッドの許容範囲とワーカー・ノードのテイントの両方に一致するキー/値のペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

可能な等価:
  • ノード機能の検出。master.tolerationsまたはworker.tolerations、あるいはその両方を使用します。
  • NVIDIA GPU Operator、daemonsets.tolerationsを使用
  • NVIDIA Network Operator、operator.tolerationsを使用
  • CSIドライバSMB、controller.tolerationsを使用
  • AMD GPUオペレータ。 devicePluginmetricsExportertestRunnerconfigManagerdraDriverまたはcontrollerManagerで許容値を使用します。
オプション null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

この許容範囲を持つポッドのみが、tolerationKeyFoo=tolerationValBar:noScheduleテイントを持つワーカー・ノードで実行できます。

topologySpreadConstraints topologySpreadConstraints

指定されたトポロジ間で一致するポッドを分散する方法。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
  • AMD GPU演算子
オプション null null
このクラスタ・アドオンに固有の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
metrics-server.ContainerResources メトリック- サーバー・コンテナ・リソース

アドオン・コンテナが要求するリソース数量を指定し、アドオン・コンテナが超過できないリソース使用量制限を設定できます。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

オプション null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

100ミリコアのCPUと100メビバイトのメモリーをリクエストするアドオン・コンテナを作成します。アドオンコンテナを500MバイトのCPUおよび200Mバイトのメモリーに制限します。

skipAddonDependenciesCheck skipAddonDependenciesCheck 他の必要なアドオンがデプロイされているかどうか(cert-managerアドオンなど)。 オプション null true
大規模なクラスタに関する考慮事項

次の表に、大規模クラスタでこのクラスタ・アドオンを構成する際の考慮事項を示します。

引数名 ロールWRTノード数 説明 クラスタ・サイズが増加するにつれて リスク 推奨事項
metrics-server.ContainerResources あり

メトリック・サーバー・ポッドのCPUおよびメモリー・リクエストおよび制限を定義します。

  • メトリック・サーバーはすべてのノードからメトリックを収集するため、スクレイプ操作は直線的に増加します。
  • メトリックの収集および処理のCPU使用率が増加します。
  • 集計メトリックを保持するためのメモリー使用量が増加します。
  • メトリックが使用可能になるまでに時間がかかる場合があります。

リソースのサイズが小さい場合:

  • メトリック・サーバー・ポッドは、メモリー制限を超えているため終了する可能性があります。
  • CPUスロットルは、スクレイプが遅い、または欠落する可能性があります。
  • メトリックAPIは、古いデータを提供したり、使用できなくなったりすることがあります。
  • Horizontal Pod Autoscalerの決定は遅延または不正確である可能性があります。
  • ノード数に比例して、CPUおよびメモリー・リソースを増やします。
  • CPUを増やして、スクレイピングとメトリック処理をサポートします。
  • メトリック集計をサポートするためにメモリーを増やします。
  • 5,000ノードを超えるクラスタの負荷テストを使用して、リソース・サイズを検証します。
numOfReplicas なし

メトリック・サーバー・ポッドの数を制御します。

各レプリカでは、すべてのノードが廃棄されます。メトリック・サーバーは、スクレイピング・ワークロードをレプリカ間で分割しないため、追加のレプリカによって、追加の処理容量ではなく高可用性が提供されます。

  • 追加のレプリカによって、重複するスクレイプトラフィックが生成されます。
  • レプリカの数を増やすと、スクレイピングのスループットが向上しません。
  • 高可用性を実現するには、2つまたは3つのレプリカを使用します。
  • パフォーマンスを向上させるためにレプリカの数を増やさないでください。
affinity / nodeSelectors / tolerations なし

メトリック・サーバー・ポッドの配置を制御します。

Metrics Serverは、コントロール・プレーン・クリティカルなコンポーネントです。その配置は、サービスの安定性とリソース・メトリックの可用性に影響します。

これらの引数が適切に構成されていない場合:

  • ポッドは、不安定なノードまたはリソース制約のあるノードで実行される可能性があります。
  • ポッドが再起動する可能性があります。
  • パフォーマンスが低下する可能性があります。
  • メトリックの可用性では、断続的なギャップが発生する可能性があります。
  • チャーンが少なく十分なリソースがある安定したノードでメトリック・サーバーを実行します。
  • 専用インフラストラクチャまたはシステム・ノード・プールを優先します。
  • ターゲット・ノードの汚染時に許容範囲を構成します。
rollingUpdate なし

メトリック・サーバーのデプロイメント更新戦略を制御します。

メトリック・サーバーのダウンタイムにより、メトリックAPIが使用できなくなり、Horizontal Pod Autoscalerが正しく動作しなくなり、 kubectl top コマンドが失敗します。

この引数が適切に構成されていない場合:

  • すべてのレプリカが同時に再起動される場合があります。
  • メトリック・パイプラインが一時的に使用できなくなる可能性があります。
  • maxUnavailable は慎重に構成してください。
  • 更新中に少なくとも1つのメトリック・サーバー・レプリカがアクティブなままであることを確認します。
  • 段階的なロールアウト戦略を使用します。
topologySpreadConstraints なし

メトリック・サーバー・ポッドをノード、可用性ドメインおよびその他の障害ドメインに分散する方法を制御します。

  • すべてのレプリカが同じノードまたは同じ可用性ドメインで実行されないようにします。
  • ノード障害および可用性ドメイン障害に対する回復力を向上させます。
  • 少量のスケジューリング複雑さを加えます。

トポロジ分散制約が構成されていない場合:

  • すべてのレプリカが同じノードまたは同じ可用性ドメインで実行される場合があります。
  • 1回の障害によって、完全なメトリックが停止する可能性があります。
  • 可能な場合は、複数の可用性ドメインにレプリカを分散します。
  • 異なるノードでレプリカを実行します。
  • 高可用性を実現するために均等配分を維持します。
skipAddonDependenciesCheck なし

アドオンのインストール中に依存関係の検証をスキップするかどうかを制御します。

この引数は、直接的なパフォーマンスやスケーラビリティに影響を与えませんが、デプロイメントの信頼性に影響を与えます。OKEでは、メトリック・サーバーは証明書マネージャなどのコンポーネントに依存します。

依存関係の検証がスキップされた場合:

  • このアドオンは依存関係なくインストールされる場合があります。
  • メトリック・パイプラインが機能しない可能性があります。
  • 実行時の障害が発生する可能性があります。
  • 大きなクラスタでは、トラブルシューティングがより困難になる場合があります。
  • 依存性の検証を有効のままにします。
  • 制御環境またはテスト環境、あるいはすべての依存関係が手動で検証された場合にのみ、検証をスキップします。