1. 程式人生 > >Kubernetes 1.5集成heapster

Kubernetes 1.5集成heapster

kuberntes

Heapster是kubernetes集群監控工具。在1.2的時候,kubernetes的監控需要在node節點上運行cAdvisor作為agent收集本機和容器的資源數據,包括cpu、內存、網絡、文件系統等。在新版的kubernetes中,cAdvisor被集成到kubelet中。通過netstat可以查看到kubelet新開了一個4194的端口,這就是cAdvisor監聽的端口,現在我們然後可以通過http://<node-ip>:4194的方式訪問到cAdvisor。Heapster就是通過每個node上的kubelet,也就是實際的cAdvisor上收集數據並匯總,保存到後端存儲中。

  Heapster支持多種後端存儲,包括influxDB,Elasticsearch,Kafka等,在這篇文檔裏,我們使用influxDB作為後端存儲來展示heapster的相關配置。需要說明的是,heapster依賴kubernetes dns配置。具體相關配置請參考另一篇博文《kubernetes 1.5配置dns》。

1、下載heapster

目前heapster的最新版本是1.2版本:

 https:

上面的操作是下載heapster,然後將其中的influxdb目錄復制到我們用於保存相關yaml文件的目錄/data/kubernetes目錄。其中influxdb目錄中包含如下幾個文件:

技術分享

[[email protected] influxdb]# ll -h
total 20K-rw-r--r--. 1 root root  414 Mar 15 18:04 grafana-service.yaml-rw-r--r--. 1 root root  630 Mar 15 21:04 heapster-controller.yaml-rw-r--r--. 1 root root  249 Mar 15 18:04 heapster-service.yaml-rw-r--r--. 1 root root 1.5K Mar 15 18:17 influxdb-grafana-controller.yaml-rw-r--r--. 1 root root  259 Mar 15 18:04 influxdb-service.yaml

技術分享

我們需要修改相應幾個controller文件中的image鏡像的地址,還是一樣,通過使用阿裏雲鏡像地址dev.aliyun.com,修改完成以後,直接執行操作如下:

kubectl create -f /data/kubernetes/influxdb

這個時候,我們通過kubectl get pods --all-namespaces命令可以看到兩個pod都正常啟動,但我們通過dashboard卻看不到相應的監控圖。通過kubectl logs 查看heapster的容器日誌。看到如下報錯:

E0315 11:58:16.155096       1 reflector.go:205] k8s.io/heapster/metrics/heapster.go:232: Failed to list *api.Pod: Get https://kubernetes.default/api/v1/pods?resourceVersion=0: x509: certificate is valid for server-116, not kubernetes.defaultE0315 11:58:16.168369       1 reflector.go:205] k8s.io/heapster/metrics/processors/namespace_based_enricher.go:84: Failed to list *api.Namespace: Get https://kubernetes.default/api/v1/namespaces?resourceVersion=0: x509: certificate is valid for server-116, not kubernetes.default

從報錯可以看出,是無法連接https://kubernetes.default這個地址。我們知道kubernetes.default其實就是apiserver本身,只不過這裏是使用了kubernetes的域名系統進行解析。報錯是因為連接了apiserver的secure port,需要ssl認證,導致了校驗異常。為了規避這種校驗,我們可以使用一種取巧的辦法,就是使用非insecure-port連接,即apiserver的8080端口。

我們找到heapster-controller.yaml文件,裏面有關於其啟動參數配置如下:

        command:        - /heapster        - --source=kubernetes:https://kubernetes.default
        - --sink=influxdb:http://monitoring-influxdb:8086

對兩個參數做下簡單說明:

--source代表heapster的數據源,即從哪裏獲取數據,這裏當然是從apiserver拿數據

--sink代表heapster獲取到的數據存儲到哪裏,我們這裏使用了influxdb,influxdb的地址在influxdb相關的yaml文件中有定義,可以自行查看。

我們要做的,就是修改--source的地址,改成如下配置:

--source=kubernetes:http://10.5.10.116:8080?inClusterConfig=false

其中10.5.10.116即apiserver地址,inClusterConfig=false代表不使用service accounts中的kube config信息。

這樣配置以後,我們重新運行heapster,再等一會生成數據,就可以看到如下界面了:

技術分享

參考:http://tonybai.com/2017/01/20/integrate-heapster-for-kubernetes-dashboard/


本文出自 “我的天空” 博客,請務必保留此出處http://sky66.blog.51cto.com/2439074/1933998

Kubernetes 1.5集成heapster