K8S之監控Prometheus部署
Kubernetes Prometheus
簡介
在k8s平臺上部署Prometheus監控有幾種方式
老老實實寫yaml部署指令碼,這種方式部署太麻煩,細節太多,不建議
使用開源專案prometheus-operator部署
使用開源專案kube-prometheus部署
prometheus-operator只包含一個operator,該operator管理和操作Prometheus和Alertmanager叢集,專案地址:https://github。com/prometheus-operator/prometheus-operator
kube Prometheus以Prometheus Operator和一系列manifests檔案為基礎,以幫助你快速在kubernetes叢集中部署Prometheus監控系統,專案地址:https://github。com/prometheus-operator/kube-prometheus
這裡我選用的是
kube Prometheus去部署監控
下載Kube-Prometheus專案
#我用的版本是 release-0。11https://github。com/prometheus-operator/kube-prometheus/tree/release-0。11
安裝 Kube-Prometheus
#GitHub上已經給出了安裝方法[root@master kube-prometheus-release-0。11]# kubectl apply ——server-side -f manifests/setupcustomresourcedefinition。apiextensions。k8s。io/alertmanagerconfigs。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/alertmanagers。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/podmonitors。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/probes。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/prometheuses。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/prometheusrules。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/servicemonitors。monitoring。coreos。com serverside-appliedcustomresourcedefinition。apiextensions。k8s。io/thanosrulers。monitoring。coreos。com serverside-appliednamespace/monitoring serverside-applied[root@master kube-prometheus-release-0。11]# until kubectl get servicemonitors ——all-namespaces ; do date; sleep 1; echo “”; doneNo resources foundkubectl apply -f manifests/。。。
安裝完成,看下資源情況
[root@master kube-prometheus-release-0。11]# kubectl get all -n monitoringNAME READY STATUS RESTARTS AGEpod/alertmanager-main-0 2/2 Running 0 65spod/alertmanager-main-1 2/2 Running 0 65spod/alertmanager-main-2 2/2 Running 0 63spod/blackbox-exporter-559db48fd-4c6rf 3/3 Running 0 2m40spod/grafana-546559f668-ft5zs 1/1 Running 0 2m15spod/kube-state-metrics-576b75c6f7-dx8vs 3/3 Running 0 2m9spod/node-exporter-fzwzs 2/2 Running 0 2mpod/node-exporter-qstbq 2/2 Running 0 2mpod/node-exporter-r9w26 2/2 Running 0 2m1spod/prometheus-adapter-5f68766c85-hvvhn 1/1 Running 0 86spod/prometheus-adapter-5f68766c85-vkh7l 1/1 Running 0 86spod/prometheus-k8s-0 2/2 Running 0 49spod/prometheus-k8s-1 0/2 PodInitializing 0 49spod/prometheus-operator-68845dfbbf-ldvvz 2/2 Running 0 81sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/alertmanager-main ClusterIP 10。0。0。120
在上面可以看到自動建立了一個monitoring的NameSpace,Pod也都建立好了。
如何訪問Grafana
[root@master kube-prometheus-release-0。11]# kubectl get svc -n monitoringNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEalertmanager-main ClusterIP 10。0。0。120
預設情況下,服務的網路型別都是ClusterIP,無法在外面訪問,這裡最好的方法是使用ingress配置對外提供服務,由於我的集群裡沒有安裝ingress,現在我就修改成NodePort方式對外提供服務
vim manifests/grafana-service。yamlspec: ports: - name: http port: 3000 targetPort: http type: NodePortmanifests/alertmanager-service。yaml manifests/prometheus-service。yaml #grafana、alertmanager、prometheus都配置成type: NodePortkubectl apply -f manifests/grafana-service。yamlkubectl apply -f manifests/alertmanager-service。yaml kubectl apply -f manifests/prometheus-service。yaml
再檢視一下Service資訊
alertmanager-main NodePort 10。0。0。120
這裡就可以看到 Grafana/Prometheus/Alertmanager都變成了NodePort
我們挑一個服務IP地址訪問一下
Grafana
K8s Grafana
Prometheus
K8s Prometheus
Alertmanager
K8s Alertmanager
解除安裝Prometheus方式
kubectl delete ——ignore-not-found=true -f manifests/ -f manifests/setup
這樣k8s的資源就可以監控起來了,這中間還有一個問題是,我安裝Kube-Promethues的時候有很多映象下載不了,下篇我說下怎樣下載k8s。gcr。io的映象。