Metrics Server 是 Kubernetes 內建自動縮放管道的可擴展、高效的容器資源指標來源。
Metrics Server 從 Kubelet 收集資源指標,並透過 Metrics API 將它們公開在 Kubernetes apiserver 中,供 Horizontal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。 Metrics API 還可以透過kubectl top
訪問,從而更輕鬆地調試自動縮放管道。
警告
Metrics Server 僅用於自動縮放目的。例如,請勿將其用於將指標轉發到監控解決方案,或作為監控解決方案指標的來源。在這種情況下,請直接從 Kubelet /metrics/resource
端點收集指標。
指標伺服器提供:
您可以將 Metrics Server 用於:
當您需要以下功能時,請勿使用 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 圖表安裝。若要從Components.yaml清單安裝最新的 Metrics Server 版本,請執行下列命令。
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 清單或透過官方 Helm 圖表以高可用性模式安裝,方法是將replicas
值設為大於1
。若要從high-availability.yaml清單以高可用性模式安裝最新的 Metrics Server 版本,請執行以下命令。
在 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
筆記
此配置需要有一個至少有 2 個可以在其上調度 Metrics Server 的節點的叢集。
此外,為了最大限度地提高此高可用配置的效率,建議將--enable-aggregator-routing=true
CLI 標誌新增至 kube-apiserver,以便傳送至 Metrics Server 的請求在兩個執行個體之間實現負載平衡。
Helm 圖表會作為此儲存庫中的附加元件進行維護,並發佈到gh-pages
分支上支援的圖表儲存庫中。每個 Metrics Server 版本都會發布新版本的圖表,如果有需要也可以單獨發布。不應直接引用master
分支上的圖表,因為它可能包含自上次發布以來的修改,要查看圖表程式碼,請使用圖表發布標籤。
Metrics Server 需要CAP_NET_BIND_SERVICE
功能才能以非 root 身分綁定到特權連接埠。如果您在使用 PSS 或其他機制限制 Pod 功能的環境中執行 Metrics Server,請確保允許 Metrics Server 使用此功能。即使您使用--secure-port
標誌來變更 Metrics Server 綁定到非特權連接埠的端口,這也適用。
從 v0.5.0 開始,Metrics Server 附帶了預設資源請求,可以確保大多數最多 100 個節點的叢集配置具有良好的效能:
Metrics Server 資源使用取決於多個獨立維度,從而建立可擴展性範圍。預設 Metrics Server 配置應在不超過下列任何閾值的叢集中執行:
數量 | 命名空間閾值 | 集群閾值 |
---|---|---|
#節點 | 不適用 | 100 |
#每個節點的 Pods | 70 | 70 |
#使用 HPA 進行部署 | 100 | 100 |
資源可以根據叢集中的節點數量按比例調整。對於超過100個節點的集群,額外分配:
您可以使用相同的方法來降低資源請求,但是存在一個邊界,這可能會影響其他可擴展性維度,例如每個節點的最大 Pod 數量。
根據您的叢集設置,您可能還需要變更傳遞到 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 行為準則約束。