1. 程式人生 > >kubeadm構建k8s之Prometheus-operated監控

kubeadm構建k8s之Prometheus-operated監控

min PE dom 開源 日誌采集 microsoft 建議 alpha 官網

介紹:

大家好,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/
kubectl apply -f build.yaml
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種部署方式,也能監控到

技術分享圖片

技術分享圖片

是不是很方便呢,部署就講到這裏了。

kubeadm構建k8s之Prometheus-operated監控