k8s集群中部署prometheusserver

博客 动态
0 266
羽尘
羽尘 2022-02-17 14:55:28
悬赏:0 积分 收藏

k8s集群中部署prometheus server

1、概述

本文档主要介绍如何在k8s集群中部署prometheus server用来作为监控的数据采集服务器,这样做可以很方便的对k8s集群中的指标、pod的、节点的指标进行采集和监控。

2、下载镜像并且上传到本地的habor

可以先将prometheus server的镜像下载并且导入到本地的镜像仓库中。

镜像版本信息

docker pull prom/prometheus:v2.33.1

3、节点添加标签

为了保证prometheus的数据可以在重启或者重新调度之后依然在一个主机上,可以考虑设置节点标签,然后通过标签的方式将pod绑定到该节点上,当然也可以用pvc的方式。

3.1、查看节点的标签

[root@nccztsjb-node-23 ~]# kubectl get nodes --show-labelsNAME               STATUS   ROLES                  AGE   VERSION   LABELSnccztsjb-node-23   Ready    control-plane,master   23d   v1.23.2   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=nccztsjb-node-23,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=nccztsjb-node-24   Ready    <none>                 23d   v1.23.2   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=nccztsjb-node-24,kubernetes.io/os=linuxnccztsjb-node-25   Ready    ingress                23d   v1.23.2   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=nccztsjb-node-25,kubernetes.io/os=linux,node-role.kubernetes.io/ingress=[root@nccztsjb-node-23 ~]# 

3.2、在nccztsjb-node-25加入标签

[root@nccztsjb-node-23 ~]# kubectl label node nccztsjb-node-25 node-role.kubernetes.io/prometheus-server=node/nccztsjb-node-25 labeled[root@nccztsjb-node-23 ~]# kubectl get nodesNAME               STATUS   ROLES                       AGE   VERSIONnccztsjb-node-23   Ready    control-plane,master        23d   v1.23.2nccztsjb-node-24   Ready    <none>                      23d   v1.23.2nccztsjb-node-25   Ready    ingress,prometheus-server   23d   v1.23.2

标签已经增加。

4、创建yaml配置文件

cat >prometheus.yaml <<EOF---# 创建命名空间apiVersion: v1kind: Namespacemetadata:  name: monitoring---# 创建serviceaccountapiVersion: v1kind: ServiceAccountmetadata:  name: prometheus  namespace: monitoring---# 对serviceaccount进行授权绑定,给cluster-admin角色权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: prometheusroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:- kind: ServiceAccount  name: prometheus  namespace: monitoring---# 创建configmap用来指定配置,本例主要是获取cadvisor数据即容器数据apiVersion: v1kind: ConfigMapmetadata:  name: prometheus-config  labels:    name: prometheus-config  namespace: monitoringdata:  prometheus.yml: |-    global:      scrape_interval: 5s      evaluation_interval: 5s    rule_files:      - /etc/prometheus/prometheus.rules    alerting:      alertmanagers:      - scheme: http        static_configs:        - targets:          - "alertmanager.monitoring.svc:9093"    scrape_configs:      - job_name: "kubernetes-cadvisor"                scrape_interval: 10s        scrape_timeout: 10s                scheme: https  #要加,否则默认使用http的协议                metrics_path: /metrics/cadvisor                tls_config:          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt          insecure_skip_verify: true                authorization:          credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token                kubernetes_sd_configs:          - role: node                relabel_configs:          - action: labelmap            regex: __meta_kubernetes_node_label_(.+)---#创建deploymentapiVersion: apps/v1kind: Deploymentmetadata:  name: prometheus  namespace: monitoringspec:  selector:    matchLabels:      app: prometheus  replicas: 1  template:    metadata:      labels:        app: prometheus    spec:      securityContext:        runAsUser: 0        runAsGroup: 0        fsGroup: 0      serviceAccountName: prometheus      containers:      - name: prometheus        image: 172.20.58.152/prom/prometheus:v2.33.1        ports:        - containerPort: 9090          name: default        resources:           requests:             cpu: 500m             memory: 500M           limits:             cpu: 1             memory: 1Gi        volumeMounts:        - name: config-volume          mountPath: /etc/prometheus        - name: prometheus-data          mountPath: /prometheus      volumes:      - name: config-volume        configMap:         name: prometheus-config        - name: prometheus-data  #设置数据存储盘在本地        hostPath:          path: /data/prometheus/data          type: ""      nodeSelector:        node-role.kubernetes.io/prometheus-server: "" #使用3中创建的标签    ---# 创建service可以用于外部的访问,端口30909kind: ServiceapiVersion: v1metadata:  name: prometheus  namespace: monitoringspec:  selector:    app: prometheus  type: LoadBalancer  ports:  - protocol: TCP    port: 9090    targetPort: 9090    nodePort: 30909EOF

5、安装delployment

基于4中创建的yaml配置文件来部署deploymetn

[root@nccztsjb-node-23 ~]# kubectl apply -f prometheus.yaml namespace/monitoring createdserviceaccount/prometheus createdclusterrolebinding.rbac.authorization.k8s.io/prometheus createdconfigmap/prometheus-config createddeployment.apps/prometheus createdservice/prometheus created

查看创建的pod

[root@nccztsjb-node-23 ~]# kubectl get pod -n monitoring -o wideNAME                          READY   STATUS    RESTARTS   AGE   IP             NODE               NOMINATED NODE   READINESS GATESprometheus-55b9769449-2tq4l   1/1     Running   0          51s   172.39.21.81   nccztsjb-node-25   <none>           <none>[root@nccztsjb-node-23 ~]# 

已经运行并且是运行在节点nccztsjb-node-25上的。

6、访问prometheus

prometheus本身是包含了一个web界面的,可以通过service直接访问。

查看service

[root@nccztsjb-node-23 ~]# kubectl get svc -n monitoring NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGEprometheus   LoadBalancer   10.98.172.41   <pending>     9090:30909/TCP   2m28s[root@nccztsjb-node-23 ~]# 

使用任意的节点IP:30909进行访问

status->targets可以看到target的信息

OK,可以看到配置的job的信息。

以上就是在k8s中部署prometheus server的过程,如果想要更改prometheus.yml的配置,修改configmap就可以。

后面会有部署node export和通过grafana显示的部署过程。

★★★★★如果您在查看博文时,有任何的疑问都可以加我的微信。13240133388.希望可以帮助到您~★★★★
posted @ 2022-02-17 14:39 一就是一 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员