k8s Helm安裝Prometheus Operator


Ubuntu 18 Kubernetes集群的安裝和部署 以及Helm的安裝 完成了k8s的集群和helm的安裝,今天我們來看看Prometheus的監控怎么搞。Prometheus Operator 是 CoreOS 開發的基於 Prometheus 的 Kubernete s監控方案,也可能是目前功能最全面的開源方案。更多信息可以查看https://github.com/coreos/prometheus-operator

創建命名空間

為方便管理,創建一個單獨的 Namespace monitoring,Prometheus Operator 相關的組件都會部署到這個 Namespace。

kubectl create namespace monitoring

使用Helm安裝Prometheus Operator

Prometheus Operator 所有的組件都打包成 Helm Chart,安裝部署非常方便。

helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring stable/prometheus-operator
#helm install --name prometheus-operator --namespace=monitoring stable/prometheus-operator
#helm del --purge prometheus-operator
#removed CRDS
#kubectl delete crd prometheuses.monitoring.coreos.com
#kubectl delete crd prometheusrules.monitoring.coreos.com
#kubectl delete crd servicemonitors.monitoring.coreos.com
#kubectl delete crd podmonitors.monitoring.coreos.com
#kubectl delete crd alertmanagers.monitoring.coreos.com
kubectl get all -n monitoring #查看創建的資源
helm list #查看安裝后的release
kubectl get svc -n monitoring  #查看訪問類型
# kubectl get svc,pod -n monitoring #查看狀態
#kubectl describe pod prometheus-operator-prometheus-node-exporter-xxx  -n monitoring
#kubectl get po --all-namespaces -o=jsonpath="{range .items[*]}{.spec.nodeName}{'\t'}{.spec.hostNetwork}{'\t'}{.spec.hostNetwork}{'\t'}{.spec.containers..containerPort}{'\n'}{end}" #查看端口信息

方法1.修改 alertmanager、prometheus、grafana的訪問類型為NodePort

kubectl edit svc prometheus-operator-grafana -n monitoring #grafana的訪問類型 修改type為NodePort        
kubectl edit svc prometheus-operator-alertmanager -n monitoring   
kubectl edit svc prometheus-operator-prometheus -n monitoring
kubectl get svc -n monitoring #查看修改后的訪問類型

修改 kubelet 打開只讀端口

prometheus 需要訪問 kubelet 的 10255 端口獲取 metrics。但是默認情況下 10255 端口是不開放的,會導致 prometheus 上有 unhealthy。打開只讀端口需要編輯所有節點的vi /var/lib/kubelet/config.yaml (我這里有圖形界面可以用gedit命令)文件,加入以下內容

port: 10250
readOnlyPort: 10255          #增加此行

重啟 kubelet 服務  systemctl restart kubelet.service
訪問地址為http://nodeip:30292/, 默認的用戶名/密碼為:admin/prom-operator,登陸后如下圖:

如果想和我一樣遇到 prometheus-operator-prometheus-node-exporter 1 node(s) didn't match node selector, 2 node(s) didn't have free ports for the requested pod ports., 我這里是因為9100端口被占用,直接修改吧:

方法2.通過 Ingress 來暴漏服務 

新建文件prometheus-ingress.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: monitoring
  name: prometheus-ingress
spec:
  rules:
  - host: grafana.domain.com
    http:
      paths:
      - backend:
          serviceName: prometheus-operator-grafana 
          servicePort: 3000
  - host: prometheus.domain.com
    http:
      paths:
      - backend:
          serviceName: prometheus-operator-prometheus
          servicePort: 9090
  - host: alertmanager.domain.com
    http:
      paths:
      - backend:
          serviceName: prometheus-operator-alertmanager
          servicePort: 9093

執行命令

kubectl apply -f prometheus-ingress.yaml

修改hosts文件:

192.168.100.11 grafana.domain.com
192.168.100.11 prometheus.domain.com
192.168.100.11 alertmanager.domain.com
#192.168.100.11  是上一篇文章的邊緣服務器

效果如圖:

以下修改不確定有效,算是備注吧

prometheus 通過 4001 端口訪問 etcd metrics,但是 etcd 默認監聽 2379。解決方法是在 /etc/kubernetes/manifests/etcd.yaml

增加k8s-app: etcd-server 然后重啟 systemctl restart kubelet.service

由於 kube-controller-manager 和 kube-scheduler 默認監聽 127.0.0.1 ,prometheus 無法通過本機地址獲取數據,需要修改kube-controller-manager 和 kube-scheduler 監聽地址。
解決辦法如下:/etc/kubernetes/manifests/kube-controller-manager.yaml 增加 k8s-app: kube-controller-manager

/etc/kubernetes/manifests/kube-scheduler.yaml增加 k8s-app: kube-scheduler

參考:

prometheus-operator

使用 Prometheus Operator 監控 Kubernetes

全手動部署prometheus-operator監控Kubernetes集群遇到的坑


免責聲明!

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



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