一、prometheus-operator 介绍和功能
prometheus-operator 介绍
当今Cloud Native概念流行,对于容器、服务、节点以及集群的监控变得越来越重要。Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态。但是它不支持分布式,不支持数据导入、导出,不支持通过 API 修改监控目标和报警规则,所以在使用它时,通常需要写脚本和代码来简化操作。
Prometheus Operator 为监控 Kubernetes service、deployment、daemonsets 和 Prometheus 实例的管理提供了简单的定义等,简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。
prometheus-operator 功能
创建/销毁
:在 Kubernetes namespace 中更加容易地启动一个 Prometheues 实例,一个特定应用程序或者团队可以更容易使用 Prometheus Operator。便捷配置
:通过 Kubernetes 资源配置 Prometheus 的基本信息,比如版本、存储、副本集等。通过标签标记目标服务
: 基于常见的 Kubernetes label 查询自动生成监控目标配置;不需要学习 Prometheus 特定的配置语言。
二、下载 prometheus-operator 配置
下载官方prometheus-operator v0.29.0版本代码,官方把所有文件都放在一起,这里我分类下
注意:prometheus-operator 版本是
v0.29.0
不支持k8s 1.16+
版本。
1 | $ git clone https://github.com/coreos/prometheus-operator.git -b release-0.29 |
上面配置都存放到我个人github私有仓库中 https://github.com/yangpeng14/prometheus-operator-configure
三、部署operator
默认镜像下载需要翻墙,下面是提供我个人的dockerhub地址
官方镜像地址 | 个人 DockerHub 地址 |
---|---|
quay.io/coreos/configmap-reload:v0.0.1 | yangpeng2468/configmap-reload:v0.0.1 |
quay.io/coreos/k8s-prometheus-adapter-amd64:v0.4.1 | yangpeng2468/k8s-prometheus-adapter-amd64:v0.4.1 |
quay.io/coreos/kube-rbac-proxy:v0.4.1 | yangpeng2468/kube-rbac-proxy:v0.4.1 |
quay.io/coreos/kube-state-metrics:v1.5.0 | yangpeng2468/kube-state-metrics:v1.5.0 |
quay.io/prometheus/prometheus:latest | yangpeng2468/prometheus:latest |
quay.io/prometheus/node-exporter:v0.17.0 | yangpeng2468/node-exporter:v0.17.0 |
quay.io/coreos/prometheus-operator:v0.29.0 | yangpeng2468/prometheus-operator:v0.29.0 |
quay.io/coreos/prometheus-config-reloader:v0.29.0 | yangpeng2468/prometheus-config-reloader:v0.29.0 |
quay.io/prometheus/prometheus:v2.7.2 | yangpeng2468/prometheus:v2.7.2 |
quay.io/prometheus/alertmanager:v0.16.1 | yangpeng2468/alertmanager:v0.16.1 |
k8s.gcr.io/addon-resizer:1.8.4 | yangpeng2468/addon-resizer:1.8.4 |
注意:如果下载我的
prometheus-operator-configure
配置文件,请修改prometheus
、alertmanager
、grafana
存储挂载配置,默认我使用NFS
提供挂载作为演示。
首先创建namespace monitoring
kubectl apply -f 00namespace-namespace.yaml
部署operator
kubectl apply -f operator/
查看是否正常部署
1 | $ kubectl -n monitoring get pod |
查看是否正常部署自定义资源定义(CRD)
1 | $ kubectl get crd -n monitoring |
四、部署整套CRD
注意:把etcd证书放到secrets中,如果证书名称跟本文示例名称不一样,serviceMonitor/prometheus-serviceMonitorEtcd.yaml 配置文件也需要修改(只修改文件名称,不要修改 /etc/prometheus/secrets/etcd-certs/ 路径)。
kubeadm 安装 k8s,请使用下面命令创建 etcd-certs
注意:kubectl -n monitoring create secret generic etcd-certs –from-file=/etc/kubernetes/pki/etcd/server.crt –from-file=/etc/kubernetes/pki/etcd/server.key –from-file=/etc/kubernetes/pki/etcd/ca.crt
1 | # 把etcd证书保存到secrets中 |
五、部署遇到的坑
坑一
二进制部署k8s管理组件和新版本kubeadm部署的都会发现在prometheus server的页面上发现kube-controller和kube-schedule的target为0/0。因为serviceMonitor是根据label去选取svc的,可以查看对应的serviceMonitor是选取的ns范围是kube-system
1 | # 解决方法 |
坑二
访问prometheus server的web页面发现即使创建了svc和注入对应ep的信息在target页面还是被prometheus server请求被拒绝
1.修改 kube-controller-manager 配置文件把 --address=127.0.0.1 换成 --address=0.0.0.0
2.修改 kube-scheduler 配置文件把 --address=127.0.0.1 换成 --address=0.0.0.0
3.修改完后重启这两个服务
坑三
prometheus targets 页面查看 monitoring/coredns/0 没有监控项,是因为 kube-dns service中没有设置监控端口 9153
1 | # 解决方法 添加监控端口 9153 |
六、数据持续存储、监控etcd集群、监控自动发化、自定义报警
参考下面文章链接配置
1.自定义报警
使用钉钉推送消息安装配置方法
https://github.com/yangpeng14/prometheus-operator-configure/tree/master/dingtalk-hook
修改 alertmanager 配置,接入 dingtalk-hook
1 | # 先将之前的 secret 对象删除 |
2.自定义报警
配置自定义报警配置并加载
https://www.qikqiak.com/post/prometheus-operator-custom-alert/1
2
3
4
5
6
7
8
9
10
11
12
13
14# 创建配置
$ vim prometheus-additional.yaml
- job_name: 'crm'
scrape_interval: 5s
metrics_path: '/api/private/metrics'
static_configs:
- targets: ['www.example.com']
# 加载配置
$ kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring
# 钉钉推送消息安装配置方法
https://github.com/yangpeng14/prometheus-operator-configure/tree/master/dingtalk-hook
3.prometheus 和 alertmanager 使用NFS存储
Prometheus Operator 自动发现以及数据持久化
https://www.qikqiak.com/post/prometheus-operator-advance/
预先安装 nfs 和 nfs-client-provisioner
nfs-client-provisioner 安装配置
https://github.com/yangpeng14/prometheus-operator-configure/tree/master/nfs-client-provisioner
4.监控etcd
Prometheus Operator 监控 etcd 集群
https://www.qikqiak.com/post/prometheus-operator-monitor-etcd/
集群是二进制方式独立部署的 etcd 集群,同样将对应的证书保存到集群中的一个 secret 对象中去即可
kubectl -n monitoring create secret generic etcd-certs --from-file=/opt/kubernetes/ssl/server.pem --from-file=/opt/kubernetes/ssl/server-key.pem --from-file=/opt/kubernetes/ssl/ca.pem
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---
本文链接: https://www.yp14.cn/2019/08/29/prometheus-operator手动部署/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!