在 Minikube 安裝 metrics-server

在 Kubernetes 裡,如果想查看 Node 或 Pod 的 CPU、Memory 使用量,常見的做法是透過 kubectl top 指令,或是在 Kubernetes Dashboard 裡查看資源監控圖表。不過這些功能背後都需要 metrics-server 提供即時資源指標。

這篇文章會示範如何在 Minikube 環境中啟用 metrics-server,並確認它是否正常運作。

metrics-server 是什麼

metrics-server 是 Kubernetes 官方常用的叢集資源指標收集元件。它會從各個 Node 的 Kubelet 取得 CPU 與 Memory 使用量,並透過 Kubernetes Metrics API 提供給其他工具使用。

啟用 metrics-server 之後,常見的用途包含:

  • 使用 kubectl top nodes 查看 Node 資源使用量
  • 使用 kubectl top pods 查看 Pod 資源使用量
  • 在 Kubernetes Dashboard 顯示 CPU 與 Memory 監控圖表

前置準備

開始前,請先確認本機已經具備以下環境:

  • 已安裝 Minikube
  • 已安裝 kubectl
  • Minikube 叢集已啟動
  • kubectl 目前可以連線到 Minikube 叢集

如果 Minikube 尚未啟動,可以先執行:

1
minikube start

啟用 metrics-server addon

Minikube 已經內建 metrics-server addon,因此不需要手動撰寫 Deployment YAML。只要透過 minikube addons enable 指令即可啟用。

1
minikube addons enable metrics-server

執行完成後,終端機會顯示 metrics-server addon 已啟用。

確認 metrics-server Pod 狀態

metrics-server addon 啟用後,可以到 kube-system namespace 檢查 Pod 是否已經建立並正常執行。

1
kubectl get pods -n kube-system | grep metrics-server

如果看到 metrics-server Pod 狀態為 Running,表示元件已經啟動。

需要注意的是,透過 Minikube addon 安裝的 metrics-server 會部署在 kube-system namespace,而不是 metrics-server namespace。因此如果查詢 metrics-server namespace 沒有看到資源,並不代表安裝失敗。

使用 kubectl top 查看資源使用量

metrics-server 啟動後,Kubernetes 需要一小段時間收集資源指標。等待資料可用後,就可以使用 kubectl top 查看 Node 與 Pod 的 CPU、Memory 使用量。

先查看 Node 資源使用量:

1
kubectl top nodes

接著查看所有 namespace 底下 Pod 的資源使用量:

1
kubectl top pods -A

如果指令能正常顯示 CPU(cores)MEMORY(bytes),就代表 metrics-server 已經可以提供資源指標。

在 Kubernetes Dashboard 查看 Node 監控資訊

除了使用 CLI,也可以透過 Kubernetes Dashboard 查看 Node 的 CPU 與 Memory 使用量。當 metrics-server 正常運作後,Dashboard 的 Nodes 頁面會顯示 CPU Usage 與 Memory Usage 圖表。

如果 Dashboard 沒有立即顯示圖表,可以稍等一段時間再重新整理頁面,讓 metrics-server 完成初次資料收集。

小結

在 Minikube 中安裝 metrics-server 相當簡單,只需要啟用內建 addon,就能讓 kubectl top 與 Kubernetes Dashboard 取得資源監控資料。

整體流程可以整理成以下三個步驟:

  1. 執行 minikube addons enable metrics-server 啟用 addon
  2. 使用 kubectl get pods -n kube-system | grep metrics-server 確認 Pod 是否正常執行
  3. 使用 kubectl top nodeskubectl top pods -A 驗證資源指標是否可用

完成後,就能在 Minikube 環境中更方便地觀察 Node 與 Pod 的資源使用狀況。