共計 1986 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。
今天給大家介紹一下集群網(wǎng)絡(luò)監(jiān)控工具 KubeNurse 怎么用。文章的內(nèi)容丸趣 TV 小編覺得不錯,現(xiàn)在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著丸趣 TV 小編的思路一起來閱讀吧。
地址
Kubenurse:https://github.com/postfinance/kubenurse
簡介
在 Kubernetes 集群運(yùn)行中,一個常見故障就是集群內(nèi)網(wǎng)絡(luò)故障,經(jīng)常會因為臨時策略變更或者網(wǎng)絡(luò)抖動導(dǎo)致一些古怪問題,而實際場景里的虛擬機(jī)和網(wǎng)絡(luò)的監(jiān)控經(jīng)常是由其它部門管理的,如果從業(yè)務(wù)和 Kubernetes 這樣的上層設(shè)施著手,可能需要一些時間才能解決問題。kubenurse 項目使用 HTTP 檢測的方式提供了常用的幾個監(jiān)控指標(biāo)。
這個工具的實現(xiàn)也很直接,用 Daemonset 的形式部署在每個集群節(jié)點上,每個 Pod 都會通過 HTTP 檢測的方式對上述幾種目標(biāo)分別進(jìn)行訪問,最后用 Prometheus Summary 指標(biāo)的形式暴露出來用于監(jiān)控。檢測機(jī)制如圖所示:
每個 Pod 都開放了 8080 的 http 端口,包含以下端點:
/ 或者 /alive:
返回本節(jié)點信息
/alwayshappy:
返回 HTTP 200 用于心跳
/metrics:
暴露 Prometheus 指標(biāo)數(shù)據(jù)
/alive 返回的節(jié)點信息如下:
{
api_server_direct : ok ,
api_server_dns : ok ,
me_ingress : ok ,
me_service : ok ,
hostname : kubenurse-1234-x2bwx ,
neighbourhood_state : ok ,
neighbourhood : [
{
PodName : kubenurse-1234-8fh3x ,
PodIP : 10.10.10.67 ,
HostIP : 10.12.12.66 ,
NodeName : k8s-66.example.com ,
Phase : Running
},
{
PodName : kubenurse-1234-ffjbs ,
PodIP : 10.10.10.138 ,
HostIP : 10.12.12.89 ,
NodeName : k8s-89.example.com ,
Phase : Running
}
],
headers : {
Accept : [
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
],
Accept-Encoding : [
gzip, deflate, br
],
...
}
}
可以看到,其中包含了上述所說的幾個檢測結(jié)果。
部署
源碼中包含了一個 example 目錄,簡單地 kubectl apply 就可以完成部署,這里有兩個可能需要修改的地方:
缺省命名空間是 kube-system,建議查找替換,并要注意調(diào)整 RBAC 授權(quán)。
涉及 Ingress 檢測,因此要注意提供正確的域名。
監(jiān)控
部署成功之后,Prometheus 會根據(jù) Daemonset 中的注解采集數(shù)據(jù):
...
annotations:
prometheus.io/path: /metrics
prometheus.io/port: 8080
prometheus.io/scheme: http
prometheus.io/scrape: true
...
訪問任意 Pod 的 :8080/metrics 端點,會看到如下指標(biāo):
kubenurse_errors:
如果檢測過程中出現(xiàn)錯誤,這個計數(shù)器會進(jìn)行累加。
kubenurse_request:
一個 Summary 類型的指標(biāo),正常檢測結(jié)果的時間消耗分布。
這兩個指標(biāo)使用 type 標(biāo)簽對結(jié)果進(jìn)行標(biāo)識,對應(yīng)幾種不同的檢測目標(biāo):
api_server_direct:
從節(jié)點直接檢測 API Server
api_server_dns:
從節(jié)點通過 DNS 檢測 API Server
me_ingress:
通過 Ingress 檢測本服務(wù) Service
me_service:
使用 Service 檢測本服務(wù) Service
path_$KUBELET_HOSTNAME:
節(jié)點之間的互相檢測
如此一來,我們就可以根據(jù)各種延遲時間的分布情況,以及返回錯誤的數(shù)量來確認(rèn)集群網(wǎng)絡(luò)狀況了。
注意
節(jié)點較多時,每次采集可能會產(chǎn)生 n*(n-1) 次訪問,會造成較重負(fù)載,可以給 Pod 打標(biāo)簽,并使用標(biāo)簽過濾的方式來減少請求,但是這樣一來,就會導(dǎo)致檢測結(jié)果不夠全面的問題,因此還需對實際應(yīng)用進(jìn)行權(quán)衡。
以上就是集群網(wǎng)絡(luò)監(jiān)控工具 KubeNurse 怎么用的全部內(nèi)容了,更多與集群網(wǎng)絡(luò)監(jiān)控工具 KubeNurse 怎么用相關(guān)的內(nèi)容可以搜索丸趣 TV 之前的文章或者瀏覽下面的文章進(jìn)行學(xué)習(xí)哈!相信丸趣 TV 小編會給大家增添更多知識, 希望大家能夠支持一下丸趣 TV!