隨着kubernetes 集羣的增大,對於集羣數據選取恰當的形式進行展現有助於直觀反映集羣的狀態,方便發現集羣的短板,瞭解集羣的瓶頸。所以,筆者作了kube-liveboard這個項目用以實現以上目標,實現集羣狀態的可視化。node
從apiserver中能夠獲取全部的資源信息,社區目前有kube-state-metrics項目對各項資源進行分別的統計,並造成metrics接口。筆者本身也開發了一個相似的項目,kube-cluster-state,用以統計好比每一個node上容器個數、request資源分配率、limit資源分配率、集羣中容器各之類的指標。api
除了以上這兩個數據源,筆者還整合了master組件中如scheduler、etcd、apiserver等組件的metrics接口。經過telegraf將metrics接口的數據推送到influxdb中。並最終經過grafana進行展現。性能
不一樣的指標須要經過不一樣的形式進行展現。許多的原始數據須要進行整合、豐富和二次加工,以便在展現時更加直觀。本文介紹一下在kube-liveboard中一些典型指標的處理方式以及展示形式。orm
好比apiserver的metrics接口能夠提供各類資源的請求次數、延時的統計,筆者能夠將其進行計算,獲得apiserver的請求速率。一樣,經過調度的次數和調度時長的統計,也能夠獲得調度的吞吐率。server
apiserver的請求延時、請求速率、請求計數、容器狀態等,這些指標筆者更關心其隨時間的變化,以便對比了解其變化狀況,所以採用折線圖的方式進行展現。blog
調度的延時、node節點上cpu和內存的分配率的直方圖統計,則可使用柱狀圖和熱力圖進行展現。對於集羣的物理機、容器、各項資源的總和狀況,由於筆者更爲關注其如今的狀態,所以通常採用SingleState或者表格的形式進行展現。接口
本文將對以上指標的展現界面進行介紹。這裏使用的是筆者的一個仿真集羣的數據。flux
下圖主要展現的是單個apiserver的性能監控。這裏能夠切換不一樣的apiserver和不一樣的資源以及不一樣的請求方式,展現其請求的速率,不一樣返回值的計數,請求的tp50/tp90/tp99/均值延時的狀況以及請求延時的直方圖統計狀況。ip
下圖主要展現的是彙總的apiserver的性能監控。這裏能夠查看不一樣的apiserver的請求速率。總的apiserver不一樣資源的請求速率。經過這些指標能夠了解目前apiserver的負載是否均衡,哪一種資源請求的速率最多,以便在apiserver出現性能瓶頸時進行分析。內存
下圖主要是調度性能的監控。展現了調度延時的熱力圖變化,調度的各個階段延時統計狀況,調度的吞吐量以及調度延時的直方圖統計。經過這些圖表,能夠了解調度器目前的性能狀況,以及調度各個階段的狀況。
下圖主要是整個集羣的狀態,主要展現了集羣資源信息總覽,各個狀態的容器統計以及節點資源分配率的熱力圖。從這些圖表中能夠了解整個集羣的狀態變化。
下圖是調度質量監控,主要展現了當前的調度分配率直方圖和分位圖。從中能夠反應出調度是否均衡,以及整個集羣的資源瓶頸等。