關於k8s集群監控

2021-09-27 03:01:02 字數 2949 閱讀 5596

集群監控系統相關介紹)

資訊蒐集:kube-state-metrics/prometheus/cadvisor

其中cadvisor是k8s原生的集群監控軟體

資訊展示:grafana..

.docker stats命令檢視記憶體使用情況

該命令從下面的路徑中的檔案進行記憶體資訊讀取

/sys/fs/cgroup/memory/docker/
其中./memory.stat中存放了一下資訊

這種資訊獲取方式時docker原生的,其缺點是:只能統計當前宿主機的所有容器,資料是實時的,沒有儲存,沒有報警,沒有視覺化。

預設時stats命令會每隔1秒鐘重新整理一次,如果只看當前狀態:docker stats --no-stream
cadvisor

為了解決docker stats的儲存和展示的相關問題,谷歌提出了開源專案cadvisor,cadvisor可以對節點機器上的資源及容器進行實時監控和效能資料採集,包括cpu使用情況記憶體使用情況網路吞吐量檔案系統使用情況

利用linux的cgroups獲取容器的資源使用資訊

在k8s中整合在kubelet裡作為預設啟動項,官方標配。

功能:(將prometheus中可以用promql查詢到的指標資料轉換成k8s對應的數,也就是將prometheus的metrics資料格式轉換成k8s api介面能識別的格式)

kube-state-mestrics可以實現的新功能:

排程了多少個replicas,當前可用的有幾個

各個pod的狀態(running/stopped/terminated)

pod重啟的次數

有多少個job在執行

kube-state-mestrics將k8s的執行狀況在記憶體中做了乙個快照,並獲取新的指標,但沒有能力匯出這些指標。

kube-state-mestrics可以作為metric-server的一種資料**

pormetheus對集群的監控就可以通過kube-state-metrics來實現

prometheus採集到的metrics並不能直接給k8s用,因為**兩者資料格式不相容**,因此需要kube-state-mestrics來將prometheus採集到的metrics資料格式轉化成k8s api介面能識別的格式,轉換以後,因為是自定義api,所以還需要用kubernetes aggregator在主api伺服器中註冊,以便直接通過/apis/來訪問。

core metrics(核心指標):從 kubelet、cadvisor 等獲取度量資料,再由metrics-server提供給 dashboard、hpa 控制器等使用。 核心指標只包含node和pod的cpu、記憶體等

custom metrics(自定義指標):由prometheus adapter提供api custom.metrics.k8s.io,由此可支援任意prometheus採集到的指標。

目前k8s中的自定義指標(custom metrics)一般由prometheus提供,再通過k8s-prometheus-adpater聚合到apiserver,來實現和核心指標(core metrics)同樣的效果

prometheus的一些元件:

prometheus server: 從exporter拉去和儲存監控資料,並提供一套靈活的查詢語言(promql)

exporters/jobs 負責收集目標物件的效能資料,並通過http介面供prometheus server獲取。

prometheus工作流程:

prometheus server獲取metrics,有三種方式或者說資料**

(①.從配置好的jobs/exporters中拉取metrics

(②. 接收來自pushgateway發過來的metrics,、

其中pushgateway使用的乙個例子:對於瞬時任務,可能prometheus server還沒來得pull,任務就已經結束,所以對於瞬時任務,客戶端推送的資料先push到pushgateway中快取一下,然後再由prometheus server使用pull方式獲取這些資料,可以這樣理解,使用push方式的資料推送,會被存在pushgateway中

(③. 從其他的prometheus server中拉取metrics)

prometheus server 在本地儲存收集到的metrics,並執行已定義好的alert.rules,記錄新的時間序列或者向alertmanager推送警報

alertmanager根據配置檔案,對接收到的的警報進行處理。

在圖形介面中視覺化採集的資料

關於prometheus中的模組介紹

retrieval: 負責定時去暴露的目標頁面上抓取取樣指標資料

storage:時負責將取樣資料寫到磁碟中

promql: 是prometheus提供的查詢語言模組。

prometheus server:負責採集監控資料,並且對外提供promql實現監控資料的查詢以及聚合分析

exporters:用於向prometheus server暴露資料採集的endpoint,prometheus輪訓這些exporter採集並且儲存資料;

K8s部署prometheus監控K8s細節

prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...

k8s 集群概念

kubernetes是google開源的容器集群管理系統,提 用部署 維護 擴充套件機制等功能,利用kubernetes能方便管理跨集群執行容器化的應用,簡稱 k8s k與s之間有8個字母 二 基本概念 pod 若干相關容器的組合,pod包含的容器執行在同一host上,這些容器使用相同的網路命令空間...

K8S 集群安裝

1 作業系統 centos 7.4 2 主機資訊 k8smaster主機 kb master 001 192.168 0.11 kb master 002 192.168 0.12 kb master 003 192.168 0.13 k8snode主機 kb node 001 192.168 0....