Metrics Server は、Kubernetes の組み込み自動スケーリング パイプライン用のコンテナ リソース メトリックのスケーラブルで効率的なソースです。
Metrics Server は Kubelet からリソース メトリクスを収集し、それを Metrics API を通じて Kubernetes apiserver で公開し、水平ポッド オートスケーラーと垂直ポッド オートスケーラーで使用できるようにします。メトリクス API にはkubectl top
からもアクセスできるため、自動スケーリング パイプラインのデバッグが容易になります。
注意
Metrics Server は自動スケーリングのみを目的としています。たとえば、監視ソリューションにメトリクスを転送したり、監視ソリューションのメトリクスのソースとして使用しないでください。このような場合は、Kubelet /metrics/resource
エンドポイントから直接メトリクスを収集してください。
メトリクス サーバーは以下を提供します。
メトリック サーバーは次の目的で使用できます。
次の場合は Metrics Server を使用しないでください。
サポートされていないユースケースについては、Prometheus などの完全な監視ソリューションを確認してください。
Metrics Server には、クラスターとネットワーク構成に関する特定の要件があります。これらの要件は、すべてのクラスター配布のデフォルトではありません。 Metrics Server を使用する前に、クラスターのディストリビューションが次の要件をサポートしていることを確認してください。
--kubelet-insecure-tls
Metrics Server に渡して証明書の検証を無効にします)hostNetwork
が有効な場合はノード IP およびカスタム ポート) に到達する必要があります。コントロール プレーンからノードへの通信について詳しくは、こちらをご覧ください。.status.addresses
のアドレスと.status.daemonEndpoints.kubeletEndpoint.port
フィールドのポート (デフォルトは 10250)。 Metrics Server はkubelet-preferred-address-types
コマンド ライン フラグ (マニフェスト内のデフォルトのInternalIP,ExternalIP,Hostname
) によって提供されるリストに基づいて、最初のノード アドレスを選択します。 Metrics Server は、YAML マニフェストから直接、または公式 Helm チャート経由でインストールできます。最新の Metrics Server リリースをComponents.yamlマニフェストからインストールするには、次のコマンドを実行します。
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
以前のリリースのインストール手順は、Metrics Server リリースに記載されています。
メトリクスサーバー | メトリクス API グループ/バージョン | サポートされている Kubernetes バージョン |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1.8~1.21 |
*v1.16 より前の Kubernetes バージョンでは、 --authorization-always-allow-paths=/livez,/readyz
コマンド ライン フラグを渡す必要があります
Metrics Server は、YAML マニフェストから直接、またはreplicas
値を1
より大きい値に設定することによって公式 Helm チャート経由で高可用性モードでインストールできます。最新の Metrics Server リリースを高可用性モードでhigh-availability.yamlマニフェストからインストールするには、次のコマンドを実行します。
Kubernetes v1.21 以降の場合:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
Kubernetes v1.19 ~ 1.21 の場合:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
注記
この構成では、Metrics Server をスケジュールできる少なくとも 2 つのノードを持つクラスターが必要です。
また、この可用性の高い構成の効率を最大化するには、Metrics Server に送信されるリクエストが 2 つのインスタンス間で負荷分散されるように、 --enable-aggregator-routing=true
CLI フラグを kube-apiserver に追加することをお勧めします。
Helm チャートは、このリポジトリ内の追加コンポーネントとして維持され、 gh-pages
ブランチに基づくチャート リポジトリにリリースされます。チャートの新しいバージョンは、Metrics Server のリリースごとにリリースされますが、必要に応じて個別にリリースすることもできます。 master
ブランチ上のチャートは、最後にリリースされてからの変更が含まれている可能性があるため、直接参照しないでください。チャート コードを表示するには、チャート リリース タグを使用します。
Metrics Server は、非 root として特権ポートにバインドするためにCAP_NET_BIND_SERVICE
機能を必要とします。 PSS またはその他のメカニズムを使用してポッド機能を制限する環境で Metrics Server を実行している場合は、Metrics Server がこの機能の使用を許可されていることを確認してください。これは、 --secure-port
フラグを使用して Metrics Server がバインドするポートを非特権ポートに変更する場合にも当てはまります。
v0.5.0 以降の Metrics Server には、最大 100 ノードまでのほとんどのクラスター構成で良好なパフォーマンスを保証するデフォルトのリソース リクエストが付属しています。
Metrics Server のリソース使用量は複数の独立したディメンションに依存し、スケーラビリティ エンベロープを作成します。デフォルトの Metrics Server 構成は、以下にリストされているしきい値を超えないクラスターで機能する必要があります。
量 | 名前空間のしきい値 | クラスターのしきい値 |
---|---|---|
#ノード | 該当なし | 100 |
ノードあたりのポッド数 | 70 | 70 |
#HPA を使用したデプロイメント | 100 | 100 |
リソースは、クラスター内のノードの数に基づいて比例的に調整できます。 100 ノードを超えるクラスターの場合は、追加で以下を割り当てます。
同じアプローチを使用してリソース リクエストを減らすこともできますが、ノードあたりの最大ポッド数などの他のスケーラビリティの側面に影響を与える可能性がある境界があります。
クラスターのセットアップによっては、Metrics Server コンテナーに渡されるフラグを変更する必要がある場合もあります。最も役立つフラグ:
--kubelet-preferred-address-types
- 特定のノードに接続するためのアドレスを決定するときに使用されるノード アドレス タイプの優先順位 (デフォルトは [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
- Kubelet によって提供される証明書の CA を検証しません。テスト目的のみ。--requestheader-client-ca-file
- 受信リクエストのクライアント証明書を検証するためのルート証明書バンドルを指定します。--node-selector
ラベルに基づいて指定されたノードからメトリクスを収集することを完了できます以下を実行すると、Metrics Server 構成フラグの完全なリストを取得できます。
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Metrics Server は、「Kubernetes 監視アーキテクチャ」で説明されているコア メトリクス パイプラインのコンポーネントです。
詳細については、以下を参照してください。
問題を投稿する前に、まずよくある質問と既知の問題を確認してください。
コミュニティ ページで Kubernetes コミュニティに参加する方法を学びましょう。
このプロジェクトの管理者には次の場所から連絡できます。
このプロジェクトは SIG Instrumentation によって保守されています
Kubernetes コミュニティへの参加は、Kubernetes 行動規範によって管理されます。