Linux企業運維——Kubernetes(十六)容器資源監控
文章目錄
-
- Linux企業運維——Kubernetes(十六)容器資源監控
- 一、Metrics-Server
-
- 1.1、Metrics-Server簡介
- 1.2、Metrics-Server部署
- 二、Dashboard
-
- 2.1、Dashboard部署
- 2.2、Dashboard可視化控制
一、Metrics-Server
1.1、Metrics-Server簡介
Metrics-Server是叢集核心監控資料的聚合器,用來替換之前的heapster。
容器相關的Metrics 主要來自于 kubelet 内置的 cAdvisor 服務,有了Metrics-Server之後,使用者就可以通過标準的Kubernetes API 來通路到這些監控資料。
- Metrics API 隻可以查詢目前的度量資料,并不儲存曆史資料。
- Metrics API URI 為 /apis/metrics.k8s.io/,在 k8s.io/metrics 維護。
-
必須部署metrics-server 才能使用該 API,metrics-server 通過調用 KubeletSummary API
擷取資料。
-
Metrics Server 并不是 kube-apiserver 的一部分,而是通過Aggregator
這種插件機制,在獨立部署的情況下同 kube-apiserver 一起統一對外服務的。
- kube-aggregator 其實就是一個根據 URL 選擇具體的 API 後端的代理伺服器。
1.2、Metrics-Server部署
Metrics-Server部署:修改端口、分發證書、設定節點解析
真實主機将metrics-server.tar發送給server1
server1加載鏡像,并将metrics-server上傳至倉庫
真實主機将components.yaml發送給server2
server2建立metrics-server目錄并在該目錄下編輯components.yaml
修改鏡像路徑
将安全端口和容器端口修改為4443
應用配置
檢視kube-system命名空間的pod資訊,可以看到metrics-server處于運作狀态但并未就緒
server2、3、4都對/var/lib/kubelet//config.yaml配置檔案進行編輯,将serverTLSBootstrap參數修改為true,啟動證書授權,儲存退出
server2、3、4重新開機kubelet服務
檢視所有證書簽名請求,三個證書簽名請求都處于Pending狀态,對三個請求進行授權後,再檢視發現狀态變為已接受,已釋出
如果出現
no such host
錯誤提示,這是因為沒有内網的DNS伺服器,是以metrics-server無法解析節點名字。可以通過
kubectl edit configmap coredns -n kube-system
指令修改coredns的configmap,講各個節點的主機名加入到hosts中,這樣所有Pod都可以從CoreDNS中解析各個節點的名字。
修改完成後metrics-server正常運作
檢視詳細資訊可以看到後端位址和端口
通過
kubectl top node
可以監控到所有節點的資源使用情況
二、Dashboard
Dashboard可以給使用者提供一個可視化的 Web 界面來檢視目前叢集的各種資訊。使用者可以用 Kubernetes Dashboard 部署容器化的應用、監控應用的狀态、執行故障排查任務以及管理 Kubernetes 各種資源。
2.1、Dashboard部署
server2清理前面實驗的所有容器和配置
建立kubernetesui項目來管理鏡像
真實主機将dashboard.tar發送給server1
server1加載鏡像并将鏡像上傳至剛建立的kubernetesui倉庫
server2建立dashboard目錄,下載下傳recommended.yaml配置檔案
編輯recommended.yaml配置檔案,修改鏡像路徑
應用配置,可以看到建立了新的命名空間和服務等
新建立的命名空間是kubernetes-dashboard
檢視kubernetes-dashboard命名空間下的容器和服務是否正常運作
psp安全政策一定要禁掉,否則兩個控制器起不來
使用
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard
指令修改服務配置,修改ClusterIP為LoadBalancer使外部可以通路
修改完成後檢視其外部通路位址為172.25.19.11,檢視metallb-system命名空間,4個pod正在運作
真實主機用浏覽器通路dashboard服務位址,需要token認證
在server2中檢視kubernetes-dashboard命名空間的secrets,檢視token
檢視詳細資訊,将token複制下來
在浏覽器通路時将token粘貼進去
認證成功後進入界面,不過有紅色報錯資訊,因為預設dashboard對叢集沒有操作權限,需要授權
通過檢視dashboard的clusterrole詳細資訊可以看到隻有讀權限
修改rbac.yaml配置檔案,在全局角色綁定中将cluster-admin的權限賦予kubernetes-dashboard,使其具有讀寫權限
應用配置
現在重新測試通路,可以看到正常運作
2.2、Dashboard可視化控制
(這裡如果命名空間有資源配額、限制等設定,通過dashboard建立容器可能拉不起來)
在default命名空間下添加新的資源
按照要求填入參數來建立pod,測試功能是否正常
可以看到我們建立的pod正常運作并且被監控
進入server2指令行也可以檢視到剛建立的pod,檢視其ip并測試通路
在Deployments菜單中,可以進行編輯
将鏡像的v1版本更新成v2,點選更新
server2通過指令行再次測試通路,可以看到版本成功修改成了v2
在Deployments菜單中還可以進行資源縮放
将副本數由1更改為3
檢視pod資訊,可以看到現在有3個pod正在運作