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. tp5.0在控制器中和在模板中调用配置文件中的常量

    框架配置文件config.php中定义 'view_replace_str'  =>  [ '__MEMBER__'=> '/static/member',         '__uplo ...

  2. Ubuntu Pycharm下deeplab ImportError: cannot import name 'monitoring'

    1.使用pycharm运行deeplab过程中出现ImportError: cannot import name 'monitoring' 2.把root用户及非root用户中pip安装的tensor ...

  3. openCV CV2用法(转)

    文章转自:https://www.kancloud.cn/aollo/aolloopencv/262768 一.读入图像 使用函数cv2.imread(filepath,flags)读入一副图片 fi ...

  4. Jupyter Notebook 更换主题(背景、字体)

    通过命令行窗口或 Anaconda Prompt 窗口 1.安装 Jupyter 主题 pip install jupyterthemes 2.更新 Jupyter 主题 (可选) pip insta ...

  5. np.random 系列函数

    1 random()   # 产生区间 [0, 1) 均匀分布的浮点数样本值 np.random.seed(42) 2 rand(d0, d1, ..., dn)    # 产生区间 [0, 1) 均 ...

  6. Python 加入类型检查

    Python 是一门强类型的动态语言, 对于一个 Python 函数或者方法, 无需声明形参及返回值的数据类型, 在程序的执行的过程中, Python 解释器也不会对输入参数做任何的类型检查, 如果程 ...

  7. [Algorithm] 118. Pascal's Triangle

    Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's t ...

  8. Python面向对象 | 抽象类和接口类

    一.抽象类(规范的编程模式) 什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化.抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性. 为什么要有抽象类 ...

  9. NetworkManager需要与不需要

    需要: 1.nmcli配置网络 不需要: 1.   ifcfg-eth1:0(网卡的子接口配置文件)生效

  10. 数据结构——单链表(singly linked list)

    /* singlyLinkedList.c */ /* 单链表 */ /* 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. */ #include <stdio ...