介紹:html
你們好,k8s的搭建有許多方式,也有許多快速部署的,爲了簡化部署的複雜度,官方也提供了開源的kubeadm快速部署,最新1.10.x版本已經能夠實現部署集羣,node
若是你對k8s的原理已經很是瞭解,不妨能夠試試,今天將爲你們說說如何去快速搭建一個監控系統到展現頁面,報警規則會在下一章講解,那麼Prometheus-operated是什麼,用過的朋友應該知道 nginx
Prometheus是用來收集數據的,同時自己也提供強大的查詢能力,結合Grafana,就能夠監控到你想要的數據。git
獲取數據的原理你們能夠去百度一下,具體就是你的採集工具能夠任意用編程語言來寫,最後只要提供一個http或者https的訪問地址,好比我想監控nginx,地址是192.168.1.1 端口8080,github
那麼我要採集nginx的數據就是 http://192.168.1.1/metrics,前提是metrics模塊已經加載,nginx已內置了這個模塊,具體請百度,若是沒有怎麼辦,本身寫或者去官方找模板。web
那麼在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.ioapi
話很少說,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