📔心得
之前都介紹docker監控container,這次來點不一樣的,直接裝在k8s裡面去監控pod的一些指標。
基本的指標像是cpu, mem, pod數量, node數量等等,都能透過kube-state-metrics完成,而如果想要監控一些流量的指標,像是tcp連線數,tw數等,則是需要另外在服務的pod裡另外寫node-exporter的container,組成side-car的形式,讓exporter將指標送往prometheus。
在撰寫的過程,遇到比較大的難題是prometheus的config檔撰寫,一開始打算使用docker-compose的方式起monitor服務,然後去call k8s cluster取得相關指標,但常常call不到服務,可能是因為minikube的關係,在本地也跑docker,最後改成直接安裝在k8s裡面,另外建立一個namespace放監控相關的服務,有機會在測試kind以及k3s。
demo用的deploy使用skaffold這本地開發k8s的神器,搭配kustomize可讓我依據所需測試的環境下去做自動佈署,有機會再另外介紹這工具。
之後預計會再新增prometheus adapter,讓我的prometheus metrics可以成為我hpa的擴縮判斷,因為基本的hpa指標只有cpu以及mem,如果可以依照網路流量變大,幫我擴展pod,當流量變小時幫我縮pod,讓我能自定義指標,相信使用k8s的效益會更大。
👨💻簡介
在minikube環境下安裝prometheus以及grafana監控 k8s
- demo-deploy:測試用deployment 使用skaffold搭配kustomize的方式下去佈署
- prometheus, kube-state-metrics:撈取服務相關指標
- grafana:監控UI
🎯setup
- start minikube
minikube start
2. deploy demo-deployment
cd demo-deploy && skaffold run -p prod
3. install monitor
sh ./install_monitor.sh
4. setting data source
http://192.168.x.x:xxx
- 選擇data source - add data source - prometheus
- url設定為http://prometheus:9090 - 點擊save
5. import grafana ui
- 點擊左上角回到首頁並選擇旁邊的dashboard - import
- 到grafana/dashboard/複製dashboard.json貼到grafana並點擊load - import