kubeadm構建k8s之Prometheus-operated監控(0.18.1)


 

 

 

介紹:

       大家好,k8s的搭建有許多方式,也有許多快速部署的,為了簡化部署的復雜度,官方也提供了開源的kubeadm快速部署,最新1.10.x版本已經可以實現部署集群,

     如果你對k8s的原理已經非常了解,不妨可以試試,今天將為大家說說如何去快速搭建一個監控系統到展示頁面,報警規則會在下一章講解,那么Prometheus-operated是什么,用過的朋友應該知道      

     Prometheus是用來收集數據的,同時本身也提供強大的查詢能力,結合Grafana,就可以監控到你想要的數據。

   獲取數據的原理大家可以去百度一下,具體就是你的采集工具可以任意用編程語言來寫,最后只要提供一個http或者https的訪問地址,比如我想監控nginx,地址是192.168.1.1 端口8080,

   那么我要采集nginx的數據就是 http://192.168.1.1/metrics,前提是metrics模塊已經加載,nginx已內置了這個模塊,具體請百度,如果沒有怎么辦,自己寫或者去官方找模板。

   那么在k8s上,prometheus該如何去監控我們的數據呢,用過k8s的人應該知道service,沒錯,k8s會讀取service的后端地址,拿到容器的IP地址然后去主動請求采集數據,而k8s自身的數據呢,同樣的道理,k8s已經集成了metrics功能,所以,我們只需要請求組件所對應的IP:PORT/metrics 就能拿到數據,這樣k8s集群包括自身的監控數據全都拿到了,怎么方便的操作如果只單靠Prometheus是不可能完成的,這時候Prometheus-operated就面世了,其主要就是提供自動發現功能,如果你使用過K8S日志采集ELK(阿里雲的日志采集開源項目),其原理是一樣的,動態獲取k8s的信息,出現了新增或者減少的服務,他會講相關的配置寫入Prometheus當中,然后動態加載,否則你就要一個一個的去配置。

 

項目地址:https://github.com/coreos/prometheus-operator

官網地址:  https://prometheus.io

話不多說,30秒讓你的監控跑起來。

 

kubeadm部署

這里我節約時間,就不一一介紹了,因為config.yml需要指定參數,這里我會在部署prometheus-operator說明

 

prometheus-operator部署

首先就是kubeadm的配置文件 ,如果你是直接從kubeadm開始弄,可以提前寫進去,這樣一會你就不需要在修改了

和你自己的比較一下缺少了哪些添加上去即可,如果已經安裝了也沒關系,我們手動去改,后面也講

#所有master機器
apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration api: advertiseAddress: 192.168.1.173 bindPort: 6443 authorizationModes: - Node - RBAC certificatesDir: /etc/kubernetes/pki cloudProvider: etcd: dataDir: /var/lib/etcd endpoints: null imageRepository: gcr.io/google_containers kubernetesVersion: v1.8.3 networking: dnsDomain: cluster.local serviceSubnet: 10.96.0.0/12 nodeName: your-dev tokenTTL: 24h0m0s controllerManagerExtraArgs: address: 0.0.0.0 schedulerExtraArgs: address: 0.0.0.0

 

手動修改所有master機器都要執行,node節點只需要修改和kubelet相關的,

如果你kubeadm還沒有開始部署下面的操作只需要執行kubelet的操作

sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-controller-manager.yaml sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-scheduler.yaml KUBEADM_SYSTEMD_CONF=/etc/systemd/system/kubelet.service.d/10-kubeadm.conf sed -e "/cadvisor-port=0/d" -i "$KUBEADM_SYSTEMD_CONF"
if ! grep -q "authentication-token-webhook=true" "$KUBEADM_SYSTEMD_CONF"; then sed -e "s/--authorization-mode=Webhook/--authentication-token-webhook=true --authorization-mode=Webhook/" -i "$KUBEADM_SYSTEMD_CONF" fi systemctl daemon-reload systemctl restart kubelet

 

下載官方提供的源碼,版本(我的是0.18.1)

git clone -b v0.18.1 https://github.com/coreos/prometheus-operator

 

cd prometheus-operator/contrib/kube-prometheus
./hack/cluster-monitoring/deploy
好了,已經部署成功了,看看服務(首次啟動會下載需要鏡像,過程看個人網絡,國內是可以訪問的因為部署谷歌的鏡像地址)

 

服務器全部起來了

腳本開放3個NodePort端口

分別是

30903:報警服務

30902:grafana服務

30900:promethues服務

讓我們去看看是否都能監控,訪問ip(master地址):30900

全部都為up,說明都起來了,剛安裝好的是沒有etcd的,需要自己創建yaml文件,具體可以參考下面的文檔

http://www.mamicode.com/info-detail-2251383.html 非常詳細

最后讓我們看看數據是否都收集到了grafana

訪問grafana地址

http://192.168.100.124:30902 默認賬號admin/admin 如果是生產建議修改密碼

 

 可以看到Prometheus-operated的作者們已經提供了一套基礎的數據模板給我們了,當然也可以根據實際情況來作出修改

 

etcd的數據全部已獲取到

我們知道k8s有3種部署方式,也能監控到

 

 

 

 

 官方默認給的內存和資源都比較小,如果你需要上生產建議按你資源實際情況修改一下,部署完成之后通過編輯修改,否則會出現你的某些服務經常異常重啟,大多都由資源到達了臨界點導致的。

 

參考文件:

https://zhangguanzhang.github.io/2018/10/12/prometheus-operator/#%E9%83%A8%E7%BD%B2%E5%AE%98%E6%96%B9%E7%9A%84prometheus-operator

https://github.com/coreos/prometheus-operator/tree/master/Documentation

https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus/docs


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM