k8s v1.27部署prometheus

k8s 1.27.1部署prometheus

本文使用Operator方法部署prometheus,既可以被描述为一个包,也可以被描述为一个库。

kube-prometheus-stack

此存储库收集Kubernetes清单、Grafana仪表板和Prometheus规则,并结合文档和脚本,以使用Prometheus Operator提供易于操作的端到端Kubernetes集群监控。此stack用于集群监控,因此它被预配置为从所有Kubernetes组件收集指标。除此之外,它还提供了一组默认的仪表板和警报规则。许多有用的仪表板和警报来自kubernetes-mixin项目,类似于这个项目,它提供了可组合的jsonnet作为一个库,供用户根据自己的需求进行定制。

兼容性

支持以下Kubernetes版本,并在各自的分支中对这些版本进行测试。但请注意,其他版本可能会工作!

kube-prometheus stackKubernetes 1.21Kubernetes 1.22Kubernetes 1.23Kubernetes 1.24Kubernetes 1.25
release-0.9
release-0.10
release-0.11
release-0.12
main

本人使用的是k8s1.27.1版本,使用的是release-0.12,经测试可以使用,同时k8s1.26也可以使用release-0.12进行部署prometheus。

部署prometheus

1、下载Prometheus

$ git clone https://github.com/prometheus-operator/kube-prometheus.git -b release-0.12

安装Prometheus

#你克隆时所在目录
$ cd kube-prometheus/  
#创建命名空间和crd
$ kubectl apply --server-side -f manifests/setup 
#创建其他资源
$ until kubectl get servicemonitors -A ; do date; sleep 1; echo ""; done
$ kubectl apply -f manifests

2、查看安装状态

$ kubectl get po -n monitoring

会看到许多pod拉取失败,原因是镜像源并非国内的,需要找国内镜像替代,找到镜像后手动拉取并且将拉去的替代镜像tag为无法拉取的镜像名称,这里主要是prometheus-adapter和kube-state-metrics会出现问题,由于我K8S版本为1.27.1,根据官方推荐使用的release版本为0.12,自动拉取的镜像为prometheus-adapter:v0.10.0和kube-state-metrics:2.7.0,其他版本的k8s和所使用release版本不同需自己describe拉取失败的pod查看镜像版本进行选择,以下以我的版本配置为例

3、手动拉取镜像

$ docker pull thinkingdata/prometheus-adapter:v0.10.0
$ docker tag thinkingdata/prometheus-adapter:v0.10.0 registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0
$ docker pull bitnami/kube-state-metrics:2.7.0
$ docker tag bitnami/kube-state-metrics:2.7.0 registry.k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.7.0

4、若还是会出现拉取镜像失败或者镜像拉取不全,则需要到配置文件中将image地址修改为国内镜像地址,如我的配置:

#prometheus-adapter
kube-prometheus/mainfests/prometheusAdapter-deployment.yaml#需要修改的文件
将images中地址从registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0改为thinkingdata/prometheus-adapter:v0.10.0

#kube-state-metrics
kube-prometheus/mainfests/kubeStateMetrics-deployment.yaml#需要修改的文件
将images中地址从registry.k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.7.0改为bitnami/kube-state-metrics:2.7.0

5、若配置未生效可以删除重新配置

$ kubectl delete -f manifests
$ kubectl apply -f manifests

可以看到镜像拉取不全问题已解决

lin@k8smaster:~/Desktop/kube-prometheus$ kubectl get po -n monitoring
NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          32s
alertmanager-main-1                    2/2     Running   0          32s
alertmanager-main-2                    2/2     Running   0          32s
blackbox-exporter-8646857dcc-5z6cw     3/3     Running   0          40s
grafana-74cc547459-vtxj9               1/1     Running   0          38s
kube-state-metrics-79b84c8cc8-654zm    3/3     Running   0          38s
node-exporter-42tff                    2/2     Running   0          37s
node-exporter-zgk7f                    2/2     Running   0          37s
prometheus-adapter-5bccc86595-4b4bk    1/1     Running   0          36s
prometheus-adapter-5bccc86595-5kttw    1/1     Running   0          36s
prometheus-k8s-0                       2/2     Running   0          31s
prometheus-k8s-1                       2/2     Running   0          31s
prometheus-operator-55cb8b56dc-2mgxn   2/2     Running   0          35s

6、部署完成后通过kubectl get svc -n monitoring命令可以看到服务对应的端口情况

可以将grafana通过kubectl edit svc grafana -n monitoring命令进入配置将ipv4.type修改为NodePort

查看端口情况

lin@k8smaster:~$ kubectl get svc -n monitoring
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
alertmanager-main       ClusterIP   10.100.198.136   <none>        9093/TCP,8080/TCP            2d7h
alertmanager-operated   ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP   2d7h
blackbox-exporter       ClusterIP   10.110.183.15    <none>        9115/TCP,19115/TCP           2d7h
grafana                 NodePort    10.103.79.135    <none>        3000:30640/TCP               2d7h
kube-state-metrics      ClusterIP   None             <none>        8443/TCP,9443/TCP            2d7h
node-exporter           ClusterIP   None             <none>        9100/TCP                     2d7h
prometheus-adapter      ClusterIP   10.96.34.76      <none>        443/TCP                      2d7h
prometheus-k8s          ClusterIP   10.101.189.52    <none>        9090/TCP,8080/TCP            2d7h
prometheus-operated     ClusterIP   None             <none>        9090/TCP                     2d7h
prometheus-operator     ClusterIP   None             <none>        8443/TCP                     2d7h

通过访问10.103.79.135:30640进入grafana。

7、也可以分别打开三个终端输入以下命令

kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090

kubectl --namespace monitoring port-forward svc/grafana 000

kubectl --namespace monitoring port-forward svc/alertmanager-main 9093

8、在网页中访问dashboard监控k8s集群健康状态

访问Prometheus:http://localhost:9090

访问Grafana: http://localhost:3000

访问AlertManager:http://localhost:9093
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
部署Prometheus需要以下步骤: 1. 创建Prometheus配置文件 首先,我们需要创建一个Prometheus配置文件,它将包含Prometheus需要监控的所有目标和规则。可以使用YAML格式编写该文件。以下是一个示例文件: ``` global: scrape_interval: 15s external_labels: monitor: 'prometheus' scrape_configs: - job_name: 'kubernetes-apiservers' kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt cert_file: /var/run/secrets/kubernetes.io/serviceaccount/client.crt key_file: /var/run/secrets/kubernetes.io/serviceaccount/client.key bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] separator: ; regex: (.+);(.+);https target_label: __address__ replacement: kubernetes.default.svc:443 - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] separator: ; regex: (.+);(.+);https target_label: __scheme__ replacement: https - job_name: 'kubernetes-nodes' kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: (.+) target_label: __param_target replacement: ${1} - source_labels: [__param_target] regex: (.+) target_label: instance replacement: ${1} - action: labelmap regex: __meta_kubernetes_node_label_(.+) - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: node replacement: ${1} ``` 2. 创建Prometheus Deployment 和 Service 创建Prometheus Deployment和Service对象,使用kubectl apply命令: ``` kubectl apply -f prometheus-deployment.yaml ``` ``` kubectl apply -f prometheus-service.yaml ``` 3. 配置Kubernetes API Server 为了允许Prometheus访问Kubernetes API Server,需要创建一个ClusterRole和ServiceAccount对象,然后将它们绑定在一起: ``` kubectl apply -f prometheus-cluster-role.yaml ``` ``` kubectl apply -f prometheus-service-account.yaml ``` 4. 部署Prometheus Adapter Prometheus Adapter是一个Kubernetes API Server的扩展,它允许Prometheus查询Kubernetes API Server中的资源。可以使用以下命令部署Prometheus Adapter: ``` kubectl apply -f prometheus-adapter.yaml ``` 5. 部署Grafana Grafana是一个开源的数据可视化工具,可以使用它来查看Prometheus监控数据。可以使用以下命令部署Grafana: ``` kubectl apply -f grafana.yaml ``` 6. 配置Prometheus数据源 在Grafana中配置Prometheus数据源,以便可以使用Grafana查看Prometheus监控数据。可以使用以下命令创建一个ConfigMap对象,其中包含Prometheus数据源的配置信息: ``` kubectl create configmap grafana-datasources --from-file=grafana-datasources.yaml ``` 然后,使用以下命令部署一个Grafana Deployment和Service对象: ``` kubectl apply -f grafana-deployment.yaml ``` ``` kubectl apply -f grafana-service.yaml ``` 7. 访问Grafana 最后,可以使用浏览器访问Grafana,并使用Prometheus数据源的连接信息登录。在Grafana中,您可以查看Prometheus监控数据,并创建仪表板以查看有关Kubernetes集群的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值