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:
readOnlyPort: #增加此行
重启 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:
- host: prometheus.domain.com
http:
paths:
- backend:
serviceName: prometheus-operator-prometheus
servicePort:
- host: alertmanager.domain.com
http:
paths:
- backend:
serviceName: prometheus-operator-alertmanager
servicePort:
执行命令
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 监控 Kubernetes
全手动部署prometheus-operator监控Kubernetes集群遇到的坑
k8s Helm安装Prometheus Operator的更多相关文章
- helm 安装prometheus operator 并监控ingress
1.helm安装 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.shchmod 7 ...
- kubernetes(k8s) helm安装kafka、zookeeper
通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...
- K8s Helm安装配置入门
作为k8s现在主流的一种包部署方式,尽管不用,也需要进行一些了解.因为,它确实太流行了. 这一套太极拳打下来,感觉helm这种部署,目前还不太适合于我们公司的应用场景.它更适合需要手工编程各种yaml ...
- k8s helm 安装etcd
待续 helm install etcd bitnami/etcd \ --set statefulset.replicaCount=3 \ --set persistence.enabled=tru ...
- 部署 Prometheus Operator - 每天5分钟玩转 Docker 容器技术(179)
本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...
- Kubernetes 监控方案之 Prometheus Operator(十九)
目录 一.Prometheus 介绍 1.1.Prometheus 架构 1.2.Prometheus Operator 架构 二.Helm 安装部署 2.1.Helm 客户端安装 2.2.Tille ...
- 部署 Prometheus Operator【转】
本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...
- Kubernetes 监控:Prometheus Operator
安装 前面的章节中我们学习了用自定义的方式来对 Kubernetes 集群进行监控,基本上也能够完成监控报警的需求了.但实际上对上 Kubernetes 来说,还有更简单方式来监控报警,那就是 Pro ...
- Helm 安装Kafka
helm镜像库配置 helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add incubator http ...
随机推荐
- JavaScript面向对象①
什么是对象 对象是一个整体,对外提供一些操作 什么是面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节:比如jQuery 面向对象编程(OOP)的特点(自己理解的特点:把书本上多态放在类继承 ...
- C++ OpenSSL 之五:生成P12文件
1.等同于使用: openssl pkcs12 -export -inkey "key_path" -in "pem_path" -out "save ...
- Java数据类型(2)------自动封装拆箱
目的: 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象,以使用对象的API和引用类型操作.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下 ...
- 搭建Ceph分布式存储
环境: 系统 IP地址 主机名(登录用户) 承载角色 Centos 7.4 64Bit 1611 10.199.100.170 dlp(yzyu) ceph-client(root) admin-no ...
- 通过vjudge刷Uva的题目(解决Uva网站打开慢的问题)
最近在跟着算法竞赛入门经典刷题,发现Uva网站打开超级慢,进个主页面都需要好几秒.后来发现可以通过vjudge网站刷Uva的题目,很是方便,在这mark一下,顺便做一下推荐. vjudge网址:htt ...
- python 和 R 语言 中的 range() 函数
1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...
- matplotlib 绘制正余弦曲线图
1.普通风格 代码 import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 2*np.pi, 50)y1 = np.s ...
- vue使用swiper模块滑动时报错:[Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example becaus
报错: vue报这个错 [Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for ex ...
- LOJ 3119: 洛谷 P5400: 「CTS2019 | CTSC2019」随机立方体
题目传送门:LOJ #3119. 题意简述: 题目说的很清楚了. 题解: 记恰好有 \(i\) 个极大的数的方案数为 \(\mathrm{cnt}[i]\),则答案为 \(\displaystyle\ ...
- Selenium请求库
阅读目录 一 介绍 二 安装 三 基本使用 四 等待元素被加载 五 选择器 六 元素交互操作 七 其他 八 项目练习 九 破解登录验证 一 介绍 1.selenium是什么? selenium最初是一 ...