zoukankan      html  css  js  c++  java
  • 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}{'	'}{.spec.hostNetwork}{'	'}{.spec.hostNetwork}{'	'}{.spec.containers..containerPort}{'
    '}{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: 10250
    readOnlyPort: 10255          #增加此行

    重启 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: 3000
      - host: prometheus.domain.com
        http:
          paths:
          - backend:
              serviceName: prometheus-operator-prometheus
              servicePort: 9090
      - host: alertmanager.domain.com
        http:
          paths:
          - backend:
              serviceName: prometheus-operator-alertmanager
              servicePort: 9093

    执行命令

    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集群遇到的坑

  • 相关阅读:
    解决虚拟机中使用ntpdate报错:ntpdate[46700]: no server suitable for synchronization found
    Hive的三种安装方式(内嵌模式,本地模式远程模式)
    攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行
    攻城狮在路上(陆)-- 配置hadoop本地windows运行MapReduce程序环境
    攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)
    攻城狮在路上(陆)-- hadoop单机环境搭建(一)
    Linux下Keepalived+LVS-DR模式配置高可用负载均衡集群
    Git版本控制管理学习笔记5-提交
    Git版本控制管理学习笔记4-文件管理和索引
    Git版本控制管理学习笔记3-基本的Git概念
  • 原文地址:https://www.cnblogs.com/majiang/p/11431577.html
Copyright © 2011-2022 走看看