在 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 取得資源監控資料。
整體流程可以整理成以下三個步驟:
- 執行
minikube addons enable metrics-server啟用 addon - 使用
kubectl get pods -n kube-system | grep metrics-server確認 Pod 是否正常執行 - 使用
kubectl top nodes與kubectl top pods -A驗證資源指標是否可用
完成後,就能在 Minikube 環境中更方便地觀察 Node 與 Pod 的資源使用狀況。