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

使用 Prometheus Operator 监控 Kubernetes

全手动部署prometheus-operator监控Kubernetes集群遇到的坑

k8s Helm安装Prometheus Operator的更多相关文章

  1. helm 安装prometheus operator 并监控ingress

    1.helm安装 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.shchmod 7 ...

  2. kubernetes(k8s) helm安装kafka、zookeeper

    通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...

  3. K8s Helm安装配置入门

    作为k8s现在主流的一种包部署方式,尽管不用,也需要进行一些了解.因为,它确实太流行了. 这一套太极拳打下来,感觉helm这种部署,目前还不太适合于我们公司的应用场景.它更适合需要手工编程各种yaml ...

  4. k8s helm 安装etcd

    待续 helm install etcd bitnami/etcd \ --set statefulset.replicaCount=3 \ --set persistence.enabled=tru ...

  5. 部署 Prometheus Operator - 每天5分钟玩转 Docker 容器技术(179)

    本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...

  6. Kubernetes 监控方案之 Prometheus Operator(十九)

    目录 一.Prometheus 介绍 1.1.Prometheus 架构 1.2.Prometheus Operator 架构 二.Helm 安装部署 2.1.Helm 客户端安装 2.2.Tille ...

  7. 部署 Prometheus Operator【转】

    本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...

  8. Kubernetes 监控:Prometheus Operator

    安装 前面的章节中我们学习了用自定义的方式来对 Kubernetes 集群进行监控,基本上也能够完成监控报警的需求了.但实际上对上 Kubernetes 来说,还有更简单方式来监控报警,那就是 Pro ...

  9. Helm 安装Kafka

    helm镜像库配置 helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add incubator http ...

随机推荐

  1. 网商微信实名认证FAQ

    一.商户实名认证简介 基于监管政策.系统风控.用户体验等方面的考虑,我们需要加强对从业机构特约商户的风险管理,升级对商户客户身份识别的认证标准.因此,新入驻的从业机构特约商户要陆续按照新标准完成商户实 ...

  2. C++ OpenSSL 之二:生成RSA文件

    1.等同于生成private key: openssl genrsa -out "save_path" 2048 2.代码如下 bool MakeRsaKeySSL(const c ...

  3. MySQL数据物理备份之tar打包备份

    复制数据文件方式,可以使用cp或tar 1.停止服务 [root@localhost mysql]# systemctl stop mysqld [root@localhost mysql]# net ...

  4. 《linux就该这么学》课堂笔记15 vsftpd文件传输、Samba/NFS文件共享

    1.为了能够在如此复杂多样的设备之间(Windows.Linux.UNIX.Mac等不同的操作系统)解决问题解决文件传输问题,文件传输协议(FTP)应运而生. FTP服务器是按照FTP协议在互联网上提 ...

  5. 目标检测论文解读10——DSSD

    背景 SSD算法在检测小目标时精度并不高,本文是在在SSD的基础上做出一些改进,引入卷积层,能综合上下文信息,提高模型性能. 理解 Q1:DSSD和SSD的区别有哪些? (1)SSD是一层一层下采样, ...

  6. 如何使用和关闭onbeforeunload 默认的浏览器弹窗事件

    Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过 window.onunload来指定或者在<body>里指定.区别在于o ...

  7. 块 /宏块(MB)/片(Slice/片组/图像(picture) 对应关系

    根据包含关系从大到小顺序排列   序列(GOP)-> 帧(I/IDR/P/B)-> 片组 -> 片(slice)-> 宏块(Block)-> 块(Macro  Block ...

  8. 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 团队名称 快活帮 作业学习目标 (1)掌握软 ...

  9. Nginx——请求head被过滤

    前言 nginx代理服务器,app发出的请求头被直接过滤了,当时想到nginx会自动过滤掉带有_的请求头信息,所以直接改了Nginx的配置当然也可以将app的request中header中的_改为- ...

  10. java任务调度之Timer定时器

    定时器相信大家都不陌生,平时使用定时器就像使用闹钟一样,我们可以在固定的时间做某件事,也可以在固定的时间段重复做某件事,今天就来分析一下java中自带的定时任务器Timer. 一.Timer基本使用 ...