service端口为9090,端口的名字叫web
serviceName:
对应prometheus的service
ingress-prometheus.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: prometheus
namespace: monitoring
spec:
rules:
- host: prometheus.mooc.com
http:
paths:
- backend:
serviceName: imooc-prom-prometheus-oper-prometheus
servicePort: web
path: /
创建一下
➜ ~ kubectl apply -f ingress-prometheus.yaml
选择指标查看
执行查看
点击graph 可用看到数据的变化
Targets 展现prometheus所有pull的Endpoint
Controller-manager和etcd scheduler没有发现,因为我们是通过二进制部署的不能通过kubernetes api找到。后期会把他们加上去。
我来到prometheus-operator
文件内,vi values.yaml,所有组件发现配置都在这个values.yaml里面
➜ ~ cd prometheus-operator/
➜ ~ vi values.yaml
找到 Controller-manager,红框的解释:当我们部署的Controller-manager不是以pod运行的时候,可以指定IP列表
修改成Controller-manager部署的IP
然后注释掉seletor,
当我们没配置endpoints IP列表的时候它根据label 自动匹配具体的endpoints,手动指定就不需要自动匹配了。
然后把https改成true,因为我们的Controller-manager通过https运行的。
不确定可以看下Controller-manager.service
同样endpoints手动指定etcd 运行IP,注释掉seletor
Scheme改成https
改https之后需要指定一个证书
创建一个可以访问etcd 的secert
用之前的证书去生成secert
➜ ~ kubectl create secert generic etcd-certs -n monitoring --from-file=/etc/kubernetes/pki/ca.pem --from-file=/etc/kubernetes/pki/etcd-key.pem --from-file=/etc/kubernetes/pki/etcd.pem
查看一下
➜ ~ kubectl get secert -n monitoring etcd-certs -o yaml
同样
看一下是否https 方式
并没有说是https,顺便改一下监听IP,改成对外IP
确认一下是否http
没问题
修改成只读端口10255
来到values.yaml,把 https改成false ,不需要修改端口,自动根据https 方式修改端口
来提一句如果你不想对某个组件做监控enabled改成false就可以。
全部都修改完了我们必须要通过helm升级一下
➜ ~ helm upgrede imooc-prom ./prometheus-operator/ -f ./prometheus-operator/values.yaml
如果遇到以下错误,就直接把他们全部删除,同样删除crd 然后重新安装一遍
➜ ~ helm delete imooc-prom --purge
➜ ~ kubectl delete crd $(kubectl get crd|grep coreos|awk'{pring $1}')
➜ ~ helm install ./prometheus-operator/ --name imooc-prom --namespace monitoring
在查看一下 其他的都可以了发现这个Controller-manager.service有问题
去修改一下绑定地址为主机IP就可以,当然你可以为了安全放弃这个监控
可以了