Kubernetes1.5 集成Heapster

Kubernetes1.5 集成Heapster

 

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上收集數據並彙總,保存到後端存儲中。node

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

一、下載heapstergithub

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

wget https://github.com/kubernetes/heapster/archive/v1.3.0-beta.1.tar.gz
tar xf vv1.3.0-beta.1.tar.gz
cd heapster-1.3.0/deploy/kube-config
cp -r influxdb /data/kubernetes/

上面的操做是下載heapster,而後將其中的influxdb目錄複製到咱們用於保存相關yaml文件的目錄/data/kubernetes目錄。其中influxdb目錄中包含以下幾個文件:api

複製代碼
[root@server-116 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, registry.cn-hangzhou.aliyuncs.com/google-containers/heapster-amd64:v1.3.0-beta.1,修改完成之後,直接執行操做以下:網絡

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.default
E0315 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端口。google

咱們找到heapster-controller.yaml文件,裏面有關於其啓動參數配置以下:阿里雲

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

對兩個參數作下簡單說明:spa

--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,再等一會生成數據,就能夠看到以下界面了:

相關文章
相關標籤/搜索