k8s Helm安装Prometheus Operator

Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 完成了k8s的集群和helm的安装,今天咱们来看看Prometheus的监控怎么搞。Prometheus Operator 是 CoreOS 开发的基于 Prometheus 的 Kubernete s监控方案,也多是目前功能最全面的开源方案。更多信息能够查看https://github.com/coreos/prometheus-operatorhtml

建立命名空间

为方便管理,建立一个单独的 Namespace monitoring,Prometheus Operator 相关的组件都会部署到这个 Namespace。node

kubectl create namespace monitoring

使用Helm安装Prometheus Operator

Prometheus Operator 全部的组件都打包成 Helm Chart,安装部署很是方便。git

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命令)文件,加入如下内容github

port: 10250
readOnlyPort: 10255          #增长此行

重启 kubelet 服务  systemctl restart kubelet.service
访问地址为http://nodeip:30292/, 默认的用户名/密码为:admin/prom-operator,登录后以下图:docker

若是想和我同样遇到 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端口被占用,直接修改吧:json

方法2.经过 Ingress 来暴漏服务 

新建文件prometheus-ingress.yaml:api

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文件:app

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  是上一篇文章的边缘服务器

效果如图:dom

如下修改不肯定有效,算是备注吧

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集群遇到的坑

相关文章
相关标签/搜索