更新时间:2024-05-09 GMT+08:00

云原生监控插件

插件简介

云原生监控插件(kube-prometheus-stack)通过使用Prometheus-operator和Prometheus,提供简单易用的端到端Kubernetes集群监控能力。

使用kube-prometheus-stack可将监控数据与容器智能分析对接,在容器智能分析控制台查看监控数据,配置告警等。

开源社区地址:https://github.com/prometheus/prometheus

权限说明

云原生监控插件中的node-exporter组件会监控Docker的存储磁盘空间,需要读取宿主机的/var/run/docker.sock的获取Docker的info的数据。

node-exporter运行需要以下特权:

  • cap_dac_override:读取Docker的info的数据。

安装插件

  1. 登录CCE控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到云原生监控插件,单击“安装”
  2. 在安装插件页面,选择插件版本。
  3. 配置相关参数。

  4. 完成以上配置后,单击“安装”

    插件安装完成后,如果您需要使用该插件为工作负载弹性伸缩提供系统资源指标(如CPU、内存使用量),还需要开启Metric API,详情请参见通过Metrics API提供资源指标。配置完成后,可使用Prometheus采集系统资源指标,无需重复安装metrics-server插件。

组件说明

安装kube-prometheus-stack插件创建的Kubernetes资源,全部都创建在monitoring命名空间下。

表1 kube-prometheus-stack组件

容器组件

说明

资源类型

prometheusOperator

(负载名称:prometheus-operator)

根据自定义资源(Custom Resource Definition / CRDs)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。

Deployment

prometheus

(负载名称:prometheus-lightweight)

Operator根据自定义资源Prometheus类型中定义的内容而部署Prometheus Server集群,这些自定义资源可以看作是用来管理Prometheus Server集群的StatefulSets资源。

StatefulSet

kubeStateMetrics

(负载名称:kube-state-metrics)

将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。

说明:

该组件如果存在多个Pod,只会有一个Pod暴露指标。

Deployment

nodeExporter

(负载名称:node-exporter)

每个节点上均有部署,收集Node级别的监控数据。

Pod

通过Metrics API提供资源指标

容器和节点的资源指标,如CPU、内存使用量,可通过Kubernetes的Metrics API获得。这些指标可以直接被用户访问,比如用kubectl top命令,也可以被HPA或者CustomedHPA使用,根据资源使用率使负载弹性伸缩。

插件可为Kubernetes提供Metrics API,但默认未开启,若要将其开启,需要创建以下APIService对象:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    app: custom-metrics-apiserver
    release: cceaddon-prometheus
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: custom-metrics-apiserver
    namespace: monitoring
    port: 443
  version: v1beta1
  versionPriority: 100

可以将该对象保存为文件,命名为metrics-apiservice.yaml,然后执行以下命令:

kubectl create -f metrics-apiservice.yaml

执行kubectl top pod -n monitoring命令,若显示如下,则表示Metrics API能正常访问:

# kubectl top pod -n monitoring
NAME                                                      CPU(cores)   MEMORY(bytes)
......
custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
......

卸载插件时,需要执行以下kubectl命令,同时删除APIService对象,否则残留的APIService资源将导致metrics-server插件安装失败。

kubectl delete APIService v1beta1.metrics.k8s.io