k8s部署prometheus怎么使用

在Kubernetes(k8s)上部署Prometheus的步骤如下:

k8s部署prometheus怎么使用
(图片来源网络,侵删)

1、创建命名空间

我们需要创建一个命名空间来存放Prometheus相关的资源,可以使用以下命令创建一个名为monitoring的命名空间:

kubectl create namespace monitoring

2、下载Prometheus配置文件

从GitHub上下载Prometheus的默认配置文件:

wget https://raw.githubusercontent.com/prometheus/prometheus/master/prometheus.yml

3、创建ConfigMap

将下载的配置文件放入一个名为configmap.yml的文件中,并使用以下命令将其转换为ConfigMap:

kubectl create configmap prometheusconfig fromfile=configmap.yml n monitoring

4、创建Prometheus服务账号和角色绑定

创建一个名为prometheus的服务账号,并将其与monitoring命名空间绑定:

kubectl create serviceaccount prometheus n monitoring
kubectl create rolebinding prometheusrolebinding n monitoring clusterrole=edit serviceaccount=monitoring:prometheus

5、创建Prometheus部署文件

创建一个名为prometheusdeployment.yml的文件,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
      name: prometheus
        image: prom/prometheus:v2.30.3
        args:
          "config.file=/etc/prometheus/prometheus.yml"
          "storage.tsdb.path=/prometheus"
        ports:
        containerPort: 9090
        volumeMounts:
        name: prometheusconfigvolume
          mountPath: /etc/prometheus/prometheus.yml
          subPath: prometheus.yml
        name: prometheusstoragevolume
          mountPath: /prometheus
      volumes:
      name: prometheusconfigvolume
        configMap:
          name: prometheusconfig
      name: prometheusstoragevolume
        emptyDir: {}

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus
  namespace: monitoring

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheusclusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
kind: ServiceAccount
  name: prometheus
  namespace: monitoring

6、应用Prometheus部署文件

使用以下命令应用刚刚创建的部署文件:

kubectl apply f prometheusdeployment.yml n monitoring

7、获取Prometheus服务的访问地址和Token信息

运行以下命令以获取Prometheus服务的访问地址和Token信息:

export POD_NAME=$(kubectl get pods n monitoring l app=prometheus o jsonpath="{.items[0].metadata.name}") # 获取Pod名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用POD_NAME环境变量替换pod名称部分,kubectl n monitoring describe secret $(kubectl n monitoring get secret | grep prometheus | awk '{print $1}') # 获取Secret名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SECRET_NAME环境变量替换secret名称部分,kubectl n monitoring describe serviceaccount prometheus # 获取ServiceAccount名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICEACCOUNT_NAME环境变量替换serviceaccount名称部分,kubectl n monitoring describe service prometheus # 获取Service名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICE_NAME环境变量替换service名称部分,kubectl n monitoring describe endpoints prometheus # 获取Endpoints名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用ENDPOINTS_NAME环境变量替换endpoints名称部分,echo "http://${POD_NAME}.monitoring.svc.cluster.local:9090" # Prometheus访问地址,echo "${SECRET_NAME}" # Prometheus访问Token,echo "prom" # Prometheus访问用户名,echo "prom" # Prometheus访问密码,echo "${SERVICEACCOUNT_NAME}" # Prometheus访问用户组,echo "${SERVICE_NAME}" # Prometheus访问服务名,echo "${ENDPOINTS_NAME}" # Prometheus访问端点名,export POD_NAME=$(kubectl get pods n monitoring l app=prometheus o jsonpath="{.items[0].metadata.name}") # 获取Pod名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用POD_NAME环境变量替换pod名称部分,kubectl n monitoring describe secret $(kubectl n monitoring get secret | grep prometheus | awk '{print $1}') # 获取Secret名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SECRET_NAME环境变量替换secret名称部分,kubectl n monitoring describe serviceaccount prometheus # 获取ServiceAccount名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICEACCOUNT_NAME环境变量替换serviceaccount名称部分,kubectl n monitoring describe service prometheus # 获取Service名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICE_NAME环境变量替换service名称部分,kubectl n monitoring describe endpoints prometheus # 获取Endpoints名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用ENDPOINTS_NAME环境变量替换endpoints名称部分,echo "http://${POD_NAME}.monitoring.svc.cluster.local:9090" # Prometheus访问地址,echo "${SECRET_NAME}" # Prometheus访问Token,echo "prom" # Prometheus访问用户名,echo "prom" # Prometheus访问密码,echo "${SERVICEACCOUNT_NAME}" # Prometheus访问用户组,echo "${SERVICE_NAME}" # Prometheus访问服务名,echo "${ENDPOINTS_NAME}" # Prometheus访问端点名,export POD_NAME=$(kubectl get pods n monitoring l app=prometheus o jsonpath="{.items[0].metadata.name}") # 获取Pod名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用POD_NAME环境变量替换pod名称部分,kubectl n monitoring describe secret $(kubectl n monitoring get secret | grep prometheus | awk '{print $1}') # 获取Secret名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SECRET_NAME环境变量替换secret名称部分,kubectl n monitoring describe serviceaccount prometheus # 获取ServiceAccount名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICEACCOUNT_NAME环境变量替换serviceaccount名称部分,kubectl n monitoring describe service prometheus # 获取Service名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用SERVICE_NAME环境变量替换service名称部分,kubectl n monitoring describe endpoints prometheus # 获取Endpoints名称,稍后用于创建ServiceMonitor和Alertmanager等资源时使用ENDPOINTS_NAME环境变量替换endpoints名称部分,echo "http://${POD_NAME}.monitoring.svc.cluster.local:9090" # Prometheus访问地址,echo "${SECRET_NAME}" # Prometheus访问Token,echo "prom" # Prometheus访问用户名,echo "prom" # Prometheus访问密码,echo "${SERVICEACCOUNT_NAME}" # Prometheus访问用户组,echo "${SERVICE_NAME}" # Prometheus访问服务名,echo "${ENDPOINTS_NAME}" # Prometheus访问端点名

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/589271.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-05-09 05:00
下一篇 2024-05-09 05:02

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入