Kubernetes 的基礎工具 (=゚ω゚)ノ
Kubernetes 作為一個強大的容器管理系統,內建了許多高可用性的設計機制,以確保部署在其中的系統能夠穩定、可靠地提供服務。這些機制包括自動擴縮、負載均衡、自我修復等功能,大幅度提高了系統的可靠性和彈性。然而,對於絕大多數的使用者來說,依賴這些內建機制還是不夠安心。如果無法直接看到具體的指標,總會覺得心裡有點虛,對吧 ( ̄∇ ̄)
使用雲平台提供的 Kubernetes 服務時,通常不太需要擔心這個問題。因為大多數雲服務的供應商都會預設提供全面的監控解決方案,讓使用者可以輕鬆地查看 Cluster 運行當下的各項指標和資訊。但是,如果選擇自行架設 Kubernetes 環境,如何有效地監控和收集關鍵指標就成為了不可忽視的挑戰。
在討論工具之前,先認識負責提供運作資料的組件:Metrics Server 。
Metrics Server 是一個 Cluster 內的組件,專門用於收集 Cluster 中所有 Node 和 Pod 的資源使用量(如 CPU 和 Memory)。這些資料通常用於自動化的資源擴展,如水平 Pod 自動擴展(HPA)。
kubelet
收集資源使用資訊,並將這些資訊整合後提供給 kube-apiserver。VPA:VerticalPodAutoscaler,用以實現 Pod 的垂直擴張。
它不是 Kubernetes 的預設組件,需要自行手動安裝。
Metrics Server 也是執行在
Control Plane
中嗎?不是喔~
它和一般 Pod 一樣運作在普通的 Node 上(除非手動指定)。當環境中有多個 Control Plane 和多個 Worker Node,它可能會運行在任何一個 Node 上。
不過,它通常會被歸在kube-system
命名空間中。
Metrics Server 並不是預設安裝的組件,需要手動安裝。
(託管在供應商平台上 Kubernetes,通常會自動配置完整的監控方案,其實也不太需要自行建置...)
要確定目前環境是否可用,可以執行以下指令:
kubectl get apiservice v1beta1.metrics.k8s.io
在 minikube
中,雖然有預先安裝但並不是啟用狀態,可以用以下指令啟用:
minikube addons enable metrics-server
如果是其他環境,可以用以下指令執行安裝最新版本:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
附上GIT專案路徑:metrics-server
安裝完成後,就可以執行指令確認 Cluster 目前的資源使用情況:
# 查看 node
kubectl top node
# 查看 pod
kubectl top pod
如果想確認 Metrics Server 運行在哪個 Pod 上,可以執行這個指令:
kubectl get pods -n kube-system -o wide | grep metrics-server
Metrics Server 常用於:
不但是輕量且高效的工具,應用起來也非常簡單,是 Kubernetes 中監控應用中不可或缺的基礎元件。