美文网首页
Prometheus-Operator 安装

Prometheus-Operator 安装

作者: 孙高猛 | 来源:发表于2020-05-10 15:54 被阅读0次

一、Prometheus Operator 介绍

kubernetes的监控系统Prometheus 相信大家应该都比较了解, 这里不做过多介绍, 简单了解一下几点吧

1. Prometheus 简介

组件

 Prometheus 由多个组件组成,但是其中许多组件是可选的:

  • Prometheus Server:用于抓取指标、存储时间序列数据
  • exporter:暴露指标让任务来抓
  • pushgateway:push 的方式将指标数据推送到该网关
  • alertmanager:处理报警的报警组件
  • adhoc:用于数据查询
架构

下图是 Prometheus 官方提供的架构及其一些相关的生态系统组件:


prometheus-architecture.png

2. Operator 简介

Operator 是 CoreOS 推出的旨在简化复杂有状态应用管理的框架,它是一个感知应用状态的控制器,通过扩展 Kubernetes API 来自动创建、管理和配置应用实例。

你可以在 OperatorHub.io 上查看 Kubernetes 社区推荐的一些 Operator 范例。

operator 架构图

prometheus-operator架构图

二、安装依赖

安装Helm

1. 下载Helm

Hlem版本我使用的是当前2版本中的最新版 2.16.7,因为官方建议使用2.14以上版本, 不然会有CRD相关问题, 具体见Github prometheus-operator

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.16.7-linux-amd64.tar.gz
tar zxvf helm-v2.16.7-linux-amd64.tar.gz
mv linux-amd64/helm linux-amd64/tiller /usr/local/bin/
helm version
2. 创建RBAC

创建文件rbac-tiller.yaml , 内容为下

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

创建RBAC

kubectl apply -f rbac-tiller.yaml 
2. 初始化Helm

因为默认下载gcr.io仓库的镜像, 由于墙的原因下载失败, 所以我下载后传到了我司仓库

helm init --service-account tiller --tiller-image registry.cn-beijing.aliyuncs.com/roobo/tiller:v2.16.7
$ helm version
Client: &version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}

三、安装Prometheus-Operator

1. 创建Namespace

(将相关PODs都创建到此NS下)

kubelet create ns monitoring

2. 安装 prometheus-operator

helm install --namespace monitoring  --name prometheus-operator stable/prometheus-operator

3. 查看相关PODs

[root@k8smaster-01 ~]# kubectl -n monitoring get po
NAME                                                     READY     STATUS    RESTARTS   AGE
alertmanager-prometheus-operator-alertmanager-0           2/2       Running   0          53m
prometheus-operator-grafana-69bfccc949-h9s7x              2/2       Running   0          53m
prometheus-operator-kube-state-metrics-7ddcbdb744-xzh9w   1/1       Running   0          53m
prometheus-operator-operator-6d4f47dc49-9g9jr             2/2       Running   0          53m
prometheus-operator-prometheus-node-exporter-h9c2p        1/1       Running   0          53m
prometheus-operator-prometheus-node-exporter-jw2hn        1/1       Running   0          53m
prometheus-operator-prometheus-node-exporter-mqq4p        1/1       Running   0          53m
prometheus-operator-prometheus-node-exporter-zxcg5        1/1       Running   0          53m
prometheus-prometheus-operator-prometheus-0               3/3       Running   1          53m

[root@k8smaster-01 ~]# kubectl -n monitoring get svc
NAME                                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                          ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   53m
prometheus-operated                            ClusterIP   None            <none>        9090/TCP                     53m
prometheus-operator-alertmanager               ClusterIP   10.254.13.40    <none>        9093/TCP                     54m
prometheus-operator-grafana                    ClusterIP   10.254.0.159    <none>        80/TCP                       54m
prometheus-operator-kube-state-metrics         ClusterIP   10.254.43.177   <none>        8080/TCP                     54m
prometheus-operator-operator                   ClusterIP   10.254.38.46    <none>        8080/TCP,443/TCP             54m
prometheus-operator-prometheus                 ClusterIP   10.254.27.218   <none>        9090/TCP                     54m
prometheus-operator-prometheus-node-exporter   ClusterIP   10.254.60.8     <none>        9100/TCP                     54m

[root@k8smaster-01 ~]# kubectl get crd
NAME                                    CREATED AT
alertmanagers.monitoring.coreos.com     2020-05-10T06:38:44Z
podmonitors.monitoring.coreos.com       2020-05-10T06:38:51Z
prometheuses.monitoring.coreos.com      2020-05-10T06:38:56Z
prometheusrules.monitoring.coreos.com   2020-05-10T06:39:02Z
servicemonitors.monitoring.coreos.com   2020-05-10T06:39:07Z
thanosrulers.monitoring.coreos.com      2020-05-10T06:39:12Z

4. 创建Ingress

默认情况下Grafana并不能直接访问, 可以将svc改为NodePort方式或者创建Ingress 通过域名的方式访问到, 这里以Ingress举例

Yaml文件

(将$DOMAIN修改为自己的域名)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-prometheus-operator-grafana
  namespace: monitoring
spec:
  rules:
  - host: $DOMAIN
    http:
      paths:
      - path: /
        backend:
          serviceName: prometheus-operator-grafana
          servicePort: 80

四、效果图

首页 Pod Cluster

相关文章

网友评论

      本文标题:Prometheus-Operator 安装

      本文链接:https://www.haomeiwen.com/subject/ipejnhtx.html