Kubernetes上安裝Metrics-Server
操作場景
metrics-server 可實現 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通過此 API 可以查詢 Pod 與 Node 的部分監控指標,Pod 的監控指標用於 HPA、VPA 與** kubectl top pods** 命令,而 Node 指標目前只用於 kubectl top nodes 命令。容器服務 某些k8s發行版 自帶 Resource Metrics API 的實現,指向 hpa-metrics-server,且目前提供 Pod 的監控指標。
將 metrics-server 安裝到集群后,可以通過 **kubectl top nodes **獲取節點的監控概覽,以替換 Resource Metrics API 的實現。容器服務控制檯建立的 HPA 不會用到 Resource Metrics,僅使用 Custom Metrics,因此安裝 metrics-server 不會影響在 Kubernetes 控制檯建立的 HPA。本文將介紹如何在 Kubernetes 上安裝 metrics-server。
操作步驟
下載 yaml 部署檔案
執行以下命令,下載 metrics-server 官方的部署 yaml:
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml
修改 metrics-server 啟動引數
metrics-server 會請求每臺節點的 kubelet 介面來獲取監控資料,介面通過 HTTPS 暴露,但 Kubernetes 節點的 kubelet 使用的是自簽證書,若 metrics-server 直接請求 kubelet 介面,將產生證書校驗失敗的錯誤,因此需要在 components.yaml 檔案中加上 --kubelet-insecure-tls 啟動引數。
且由於 metrics-server 官方映象倉庫儲存在 k8s.gcr.io ,國內可能無法直接拉取,您可以自行同步到 CCR 或使用已同步的映象 ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.5.0。
components.yaml 檔案修改示例如下:
containers: - args: - --cert-dir=/tmp - --secure-port=443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s - --kubelet-insecure-tls # 加上該啟動引數 image: ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.5.0 # 國內叢集,請替換成這個映象
部署 metrics-server
修改 components.yaml 之後,執行以下命令,通過 kubectl 一鍵部署到叢集:
kubectl apply -f components.yaml
檢查執行狀態
- 執行以下命令,檢查 metrics-server 是否正常啟動。示例如下:
$ kubectl get pod -n kube-system | grep metrics-server
metrics-server-f976cb7d-8hssz 1/1 Running 0 1m
- 執行以下命令,檢查配置檔案。示例如下:
$ kubectl get --raw /apis/metrics.k8s.io/v1beta1 | jq
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "metrics.k8s.io/v1beta1",
"resources": [
{
"name": "nodes",
"singularName": "",
"namespaced": false,
"kind": "NodeMetrics",
"verbs": [
"get",
"list"
]
},
{
"name": "pods",
"singularName": "",
"namespaced": true,
"kind": "PodMetrics",
"verbs": [
"get",
"list"
]
}
]
}
- 執行以下命令,檢查節點佔用效能情況。示例如下:
$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
test1 1382m 35% 2943Mi 44%
test2 397m 10% 3316Mi 49%
test3 81m 8% 464Mi 77%