自建 Kubernetes 集群接入云监控 2.0

容器洞察(CloudLens for Container)是云监控 2.0 面向容器场景提供的一站式智能可观测能力,融合了多模态可观测数据(指标、日志、调用链、事件),基于 UModel 建模与 LLM 大模型能力,帮助用户实现容器资源自动关联与智能分析诊断。容器洞察既支持阿里云容器服务(ACK/ACS/ACK One 等)集群接入,也支持用户自建 Kubernetes 或其他云平台 Kubernetes 集群接入。本文主要描述自建 Kubernetes 集群或其他云平台 Kubernetes 集群如何接入云监控 2.0。

适用范围

  • Kubernetes 集群版本 >= 1.18。

  • Helm 版本 >= 3.0。

  • 该接入能力目前在灰度阶段,需提交工单加白支持。

操作步骤

准备网络条件

自建 Kubernetes 集群要接入云监控 2.0,需要能够访问阿里云相关服务,网络方式支持走公网和内网,可以在部署 Helm Chart 时选择:

公网配置(默认)

走公网需要保证自建 Kubernetes 集群可以通过互联网访问阿里云相关服务,涉及到阿里云云监控以及日志服务:

  1. 云监控公网域名:cms.[REGION].aliyuncs.com

  2. 日志服务公网域名请参考:服务入口

    说明

    接入时默认走的是公网,如果需要走内网,需要在执行安装脚步时将全局配置参数 net 设置为 Intranet,参考全局配置(可选)配置。

内网配置

走内网需要先将自建 Kubernetes 集群的本地网络与云上的某个VPC打通,可以通过阿里云网络相关产品先打通网络,比如高速通道。网络打通后可以按上报地域放开云监控及 SLS 内网域名对应网段。

  1. 云监控内网域名:cms-vpc.[REGION].aliyuncs.com[REGION]为您选择的阿里云地域。对应网段为100.103.0.0/16,该域名主要用于自动发现集群内的 Promethues Rule 并在云上创建对应的告警规则,不影响数据上报,若您的集群网络无法打通云监控内网网段,可适当降级关闭该功能,否则无法成功完成组件部署。如何关闭详见Q2: 如果集群网络不通阿里云云监控内网网段,导致数据无法接入怎么办?

  2. 日志服务SLS内网域名,该域名用于可观测数据上报,域名请参考:VPC专用内网域名

    说明

    如果日志服务内网域名网段存在冲突,可通过私网连接(PrivateLink)访问日志服务

权限准备

建议为自建 Kubernetes 接入配置的阿里云账号创建一个 RAM 账号并创建AccessKey。并为RAM账号授予权限:可以直接给该RAM 账号赋予 AliyunPrometheusMetricWriteAccess 系统权限策略,也可以自定义权限策略,自定义权限策略参考:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "log:CreateMachineGroup",
        "log:UpdateMachineGroupMachine",
        "log:ListMachineGroup",
        "log:GetMachineGroup",
        "log:UpdateLogtailPipelineConfig",
        "log:CreateLogtailPipelineConfig",
        "log:GetLogtailPipelineConfig",
        "log:GetProject",
        "log:GetLogStore",
        "log:TagResources",
        "log:ListTagResources",
        "log:UntagResources",
        "log:GetAppliedMachineGroups",
        "log:ApplyConfigToGroup",
        "log:RemoteWritePrometheus",
        "log:RemoteWrite",
        "log:QueryMetrics",
        "log:QueryPrometheusMetrics",
        "log:PostLogStoreLogs",
        "log:DeleteLogtailPipelineConfig",
        "cms:GetPrometheusInstance",
        "cms:SyncAlertRulesByGroup"
      ],
      "Resource": "*"
    }
  ]
}

初始化云上资源

  1. 登录 阿里云监控 2.0 控制台,进入工作空间管理页面,选择期望接入的工作空间或新建工作空间。

    说明

    新建工作空间信息:

    • 工作空间名称:建议使用有意义的名称,如 k8s-insight

    • 地域:选择与您的 Kubernetes 集群相近的地域,如cn-hangzhou,参考地域和可用区

    • 描述:可选,描述工作空间的用途。

  2. 进入云监控 2.0 接入中心。image.png

  3. 搜索“自建 Kubernetes 接入”项目,按照提示进行接入后单击确定image.png

  4. 确定后,开始初始化云上资源,单击探针安装为集群部署探针组件。image.png

    说明

    初始化云上资源,主要是创建对应的 Promethues 实例和SLS 存储,创建后如果没有数据上报不会产生费用。

通过 Helm 方式部署接入组件

云上资源准备就绪后,根据提示在集群中部署 Helm Chart 安装探针进行数据采集及上报。

  1. 在输入框中输入 AccessKeyID 及 AccessKeySecret。注意,请确保 AccessKeyID 具有 AliyunPrometheusMetricWrite 对应权限策略,否则,数据上报可能会失败。image.png

  2. 输入复制AccessKeyID 及 AccessKeySecret,探针安装脚本将会自动生成。复制脚本在 Helm 环境中执行。该指令会添加 Helm 仓库及部署 Helm Chart 到自建 Kubernetes 集群。

  3. 复制探针安装脚本在您的 Helm 环境中执行即可,默认安装的 Helm Release 名称为 aliyun-prometheus,并且会创建(如果不存在)名为cms-monitoring的 Kubernetes Namespace。

    说明

    云监控会为您随机生成一个集群 ID 作为该集群的唯一标识。

验证组件状态

  1. 查看安装的工作负载运行状态。若组件均处于 Running 状态,则表明工作负载运行正常。

    kubectl get pods -n cms-monitoring
  2. 在云监控工作空间选择实体探索,观察集群实体是否上报到工作空间。image.png

  3. 前往容器洞察查看指标数据。image.png

其他操作

卸载组件

当您需要将自建 Kubernetes 从云监控 2.0 中移除时,请按照以下步骤操作。

重要

必须按照顺序执行,否则可能导致资源无法被完全清理。如果您在安装 Helm Chart 时,修改了 Helm Release 名称或命名空间,则需要在卸载时替换为实际值。

步骤 1:删除 ClusterAliyunPipelineConfig 资源(重要)

在卸载 Helm Chart 之前,必须先删除 EntityCollector 创建的 ClusterAliyunPipelineConfig 资源。该资源包含 finalizer,如果直接卸载 Helm Chart,可能会导致该资源无法被删除。

1.1 确认资源名称

首先,确认您的集群ID(CLUSTER_ID),资源名称格式为:custom-kubernetes-{CLUSTER_ID}-entity-collector。例如,如果您的 CLUSTER_IDmy-cluster-123,则资源名称为:custom-kubernetes-my-cluster-123-entity-collector

说明

CLUSTER_ID可以在安装脚本中获取(clusterID 字段),可以访问云监控2.0 对应工作空间,在接入中心 - 接入管理,找到对应接入策略,访问 “探针”即可获取安装脚本。

1.2 删除资源

注意:如果跳过此步骤,直接卸载 Helm Chart,会导致 ClusterAliyunPipelineConfig 资源无法删除,因为 Operator 已被删除,无法处理 finalizer。

kubectl delete clusteraliyunpipelineconfig custom-kubernetes-[CLUSTER_ID]-entity-collector -n cms-monitoring

步骤 2:卸载 Helm Chart

执行以下命令卸载 Helm Chart:

helm uninstall aliyun-loongcollector-cluster-insight -n cms-monitoring

步骤 3:删除 CRD(可选)

如果您确定不再需要使用自建 Kubernetes 接入,并且其他应用也不会使用这些 CRD,可以删除相关的 CRD 定义。

注意:删除 CRD 会删除该 CRD 类型的所有资源,请确认没有其他应用在使用这些 CRD。

该 Chart 安装的 CRD 包括:

  • clusteraliyunpipelineconfigs.telemetry.alibabacloud.com

  • aliyunlogconfigs.log.alibabacloud.com

  • podmonitors.monitoring.coreos.com

  • servicemonitors.monitoring.coreos.com

  • prometheusrules.monitoring.coreos.com

  • probes.monitoring.coreos.com

删除 CRD 命令:

# 删除 ClusterAliyunPipelineConfig CRD
kubectl delete crd clusteraliyunpipelineconfigs.telemetry.alibabacloud.com

# 删除 AliyunLogConfig CRD
kubectl delete crd aliyunlogconfigs.log.alibabacloud.com

# 删除 Prometheus Operator CRDs(如果确认不需要)
kubectl delete crd podmonitors.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd probes.monitoring.coreos.com

更新组件

当 Helm Chart 有更新时,可以按照以下步骤进行更新

  1. 获取 Helm Chart 最新版本。

    helm repo update
    helm search repo aliyun-prometheus/loongcollector-cluster-insight
  2. 获取当前已经安装的 Helm Chart 版本。

    helm get all aliyun-loongcollector-cluster-insight -n cms-monitoring | grep "APP_VERSION"
  3. 如果存在版本更新,可以使用以下指令进行更新,将 TARGET_VERSION 替换为需要升级的目标版本。

    helm upgrade aliyun-loongcollector-cluster-insight aliyun-prometheus/loongcollector-cluster-insight <TARGET_VERSION>

计费说明

  • 接入组件会采集 Kubernetes 实体及指标相关数据,实体数据写入不计费,自建 Kubernetes 集群接入Prometheus 的指标都属于付费自定义指标,将按可观测监控 Prometheus 版计费

常见问题

Q1: 如果忘记先删除 ClusterAliyunPipelineConfig CR 怎么办?

如果卸载了 Helm Chart 后,但 ClusterAliyunPipelineConfig 资源仍然存在,可以手动删除 finalizer:

# 1. 编辑资源,移除 finalizer
kubectl edit clusteraliyunpipelineconfig custom-kubernetes-[CLUSTER_ID]-entity-collector -n cms-monitoring

# 2. 在编辑器中,删除 finalizers 部分的所有内容,保存并退出
# 删除类似以下的内容:
# finalizers:
#   - clusteraliyunpipelineconfig.finalizers.telemetry.alibabacloud.com

# 3. 然后再次尝试删除资源
kubectl delete clusteraliyunpipelineconfig custom-kubernetes-[CLUSTER_ID]-entity-collector -n cms-monitoring

# 4. 验证
kubectl get clusteraliyunpipelineconfig -n cms-monitoring

Q2: 如果集群网络不通阿里云云监控内网网段,导致数据无法接入怎么办?

基于 PrometheusRules CR 的告警同步功能要求您的集群打通云监控内网网段。若您的集群无法打通云监控内网网段,可以关闭告警同步功能。

在安装脚本中添加--set operator.enableAlertRule=false即可,如:

# 添加阿里云 Prometheus 官方 Helm 仓库
helm repo add aliyun-prometheus https://prometheus-agent-repo-chart.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector-cluster-insight
helm repo update
# 执行数据采集器安装
helm install aliyun-loongcollector-cluster-insight aliyun-prometheus/loongcollector-cluster-insight --create-namespace -n cms-monitoring \
  --set operator.enableAlertRule=false \ # 加入该配置关闭告警同步
  --set-string aliUid="" \
  --set accessKeyID="" \
  --set accessKeySecret="" \
  --set clusterID="" \
  --set clusterName="" \
  --set workspace="" \
  --set operator.prometheus.prometheusInstanceID="" \
  --set region="" \
  --set entityCollector.projectName=""

组件说明

LoongCollector Cluster Insight 组件是一个用于容器洞察的 Helm Chart,它能够收集 Kubernetes 集群的指标和实体信息,并将数据发送到阿里云监控 2.0。

获取工作空间实体库 Project

进入云监控 2.0 工作空间,在左上角展开工作空间详细信息,其中 SLS Project 即为实体库 Project

image.png

获取 Helm Repo

helm repo add aliyun-prometheus https://prometheus-agent-repo-chart.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector-cluster-insight
helm repo update

安装 Helm Chart

创建 values.yaml 文件,复制以下内容

aliUid: <ALIYUN_UID>
accessKeyID: <ACCESS_KEY_ID>
accessKeySecret: <ACCESS_KEY_SECRET>
clusterID: <CLUSTER_ID>
clusterName: <CLUSTER_NAME>
workspace: <WORKSPACE>

operator:
  prometheus:
    prometheusInstanceID: <PROMETHEUS_INSTANCE_ID>

region: <ALIYUN_REGION>
entityCollector:
  projectName: <ENTITY_COLLECTOR_PROJECT>

使用以下指令安装 Helm Chart

helm install [RELEASE_NAME] aliyun-prometheus/loongcollector-cluster-insight --create-namespace -n [NAMESPACE] -f values.yaml

核心组件

LoongCollector

loongcollector-cluster 基于 LoongCollector,是一款面向云原生环境的开源监控数据采集器,旨在为各类基础设施、应用和服务提供统一、高效、可扩展的指标采集能力。

主要特性
  • 多数据源支持:可采集 Kubernetes、Linux 主机、容器运行时、数据库、中间件等多种来源的指标。

  • PodMonitor / ServiceMonitor 集成:兼容 Prometheus Operator,可直接通过 CRD 管理采集目标。

  • 轻量高效:针对高并发场景进行了优化,减少资源占用,适合边缘节点与核心控制面部署。

  • 灵活配置:支持通过 YAML/ConfigMap 自定义采集规则、标签重写、抓取间隔等参数。

  • 安全传输:支持 HTTP/HTTPS、证书认证及数据压缩,保障采集链路的安全与稳定。

  • 可扩展插件体系:方便开发者接入自定义数据源或处理逻辑。

其他组件

该 Chart 除了核心的 LoongCollector 核心组件提供基础的数据采集能力外,还额外提供了以下组件:

  • entity-collector: 阿里云监控 2.0 容器洞察的核心组件之一(默认启用)

    • 集群拓扑采集: 自动发现和采集 Kubernetes 集群中的各种资源实体信息

    • 实体关系映射: 构建集群内资源之间的依赖关系和拓扑结构

    • 实时状态同步: 持续监控资源状态变化并实时上报到云监控 2.0

    • 多维度信息整合: 整合节点、Pod、Service、Deployment 等多维度资源信息

  • node-exporter: 节点指标采集器(默认启用)

    • 作用:采集 Kubernetes 集群中每个节点的系统指标,包括 CPU、内存、磁盘、网络等硬件资源使用情况

    • 部署方式:DaemonSet,确保每个节点都有一个 node-exporter Pod

    • 指标类型:节点级指标(如 node_cpu_seconds_total、node_memory_MemTotal_bytes 等)

  • kube-state-metrics: Kubernetes 对象状态指标采集器(默认启用)

    • 作用:采集 Kubernetes 集群中各种资源对象的状态指标,如 Pod、Deployment、Service 等的数量和状态

    • 部署方式:Deployment,通常单副本部署

    • 指标类型:Kubernetes 对象指标(如 kube_pod_info、kube_deployment_status_replicas 等)

  • gpu-exporter: GPU 指标采集器(默认启用)

    • 作用:采集集群中 GPU 卡的使用情况,包括 GPU 利用率、显存使用量、温度等指标

    • 部署方式:DaemonSet,仅在具有 GPU 的节点上运行

    • 指标类型:GPU 相关指标(如 DCGM_FI_DEV_GPU_UTIL、DCGM_FI_DEV_FB_USED 等)

    • 适用场景:使用 GPU 进行机器学习、AI 计算等场景的集群

参数说明

必填参数

以下参数为必填参数,省略将无法正常安装 Helm Chart

配置范围

Key

类型

说明

示例值

全局配置

workspace

string

云监控 2.0 工作空间名称

my-workspace

clusterName

string

集群名称(自定义)

my-k8s-cluster

clusterId

string

集群标识(自定义)

c1234567890abcdef

accessKeyId

string

阿里云 AccessKey ID

LTAI5txxxxxxxxxxxxx

accessKeySecret

string

阿里云 AccessKey Secret

xxxxxxxxxxxxxxxxxxxxxxxx

aliUid

string

阿里云用户 ID

1234567890123456

region

string

工作空间地域

cn-hangzhou

loongcollector-operator 配置

operator.prometheus.prometheusInstanceID

string

Prometheus 实例 ID

rw-p1234567890abcdef

entity-collector 配置

entityCollector.projectName

string

工作空间对应的实体库 Project 名称

cms-my-workspace-v9h9awniowbzg

全局配置(可选)

Key

类型

默认值

详情

enableDefaultScrapeConfigs

boolean

true

是否启用默认采集配置

scrapeInterval

string

30s

全局采集间隔配置

cadvisorNodeExporterScrapeInterval

string

15s

cAdvisornode-exporter专用采集间隔

net

string

Internet

网络类型,可选值 Internet, Intranet。Internet 为公网模式,Intranet 为阿里云内网模式

enableDefaultScrapeConfigs

boolean

true

是否启用默认采集配置

scrapeInterval

string

30s

全局采集间隔配置

entity-collector 配置

可以通过配置entityCollector.enabled=false禁用 entity-collector。注意,禁用 entity-collector 后将无法采集集群实体信息,因此无法体验容器洞察的完整功能,不建议禁用。

Key

类型

默认值

详情

entityCollector.enabled

boolean

true

是否启用 entity-collector(建议启用)

entityCollector.machineGroup

string

custom-kubernetes-{{ .Values.clusterID}}-entity-collector

机器组名称

entityCollector.image.repository

string

registry-cn-hangzhou.ack.aliyuncs.com/acs/loongcollector

entityCollector.image.tag

string

v3.1.6.0-96c0f2a-aliyun

kube-proxy 配置

Key

类型

默认值

详情

kubeProxy.image.pullPolicy

string

IfNotPresent

kubeProxy.image.repository

string

prometheus-agent-repo-registry.cn-beijing.cr.aliyuncs.com/loongcollector/kube-rbac-proxy

kubeProxy.image.tag

string

v0.11.0-703dc7e4-aliyun

kubeProxy.resources.limits.cpu

string

20m

CPU限制

kubeProxy.resources.limits.memory

string

128Mi

内存限制

kubeProxy.resources.requests.cpu

string

10m

CPU请求

kubeProxy.resources.requests.memory

string

32Mi

内存请求

kube-state-metrics 配置

  • 通过配置kubeStateMetrics.enabled=false可以禁用 kube-state-metrics。注意,禁用kube-state-metrics 后将无法收集 Kubernetes 集群中资源(如 Pod、Deployment、Service 等)的实时状态和元数据。

Key

类型

默认值

详情

kubeStateMetrics.enabled

boolean

true

是否启用 kube-state-metrics(建议启用)

kubeStateMetrics.port

string

8080

指标暴露端口

kubeStateMetrics.image.pullPolicy

string

Always

kubeStateMetrics.image.repository

string

prometheus-agent-repo-registry.cn-beijing.cr.aliyuncs.com/loongcollector/kube-state-metrics

kubeStateMetrics.image.tag

string

v2.3.0-33ccbe6-aliyun

kubeStateMetrics.resources.limits.cpu

string

250m

CPU限制

kubeStateMetrics.resources.limits.memory

string

512Mi

内存限制

kubeStateMetrics.resources.requests.cpu

string

250m

CPU请求

kubeStateMetrics.resources.requests.memory

string

512Mi

内存请求

kubeStateMetrics.serviceAccountName

string

cms-kube-state-metrics

gpu-exporter 配置

  • 通过配置 gpuExporter.enabled=false可以禁用 gpu-exporter。注意,禁用 gpu-exporter 后将无法收集 GPU 资源的使用状态(如显存占用、GPU 温度、计算负载等),影响对 GPU 引擎或深度学习任务的性能监控。如果您的集群没有 GPU 节点,可以禁用。

Key

类型

默认值

详情

gpuExporter.enabled

boolean

true

是否启用 gpu-exporter

gpuExporter.port

int

9445

指标暴露端口

gpuExporter.image.pullPolicy

string

Always

gpuExporter.image.repository

string

registry-cn-hangzhou.ack.aliyuncs.com/acs/gpu-prometheus-exporter

gpuExporter.image.tag

string

v3.3.5-1.8.2-2.6.6-3601af6-aliyun

gpuExporter.resources.limits.cpu

string

250m

CPU限制

gpuExporter.resources.limits.memory

string

512Mi

内存限制

gpuExporter.resources.requests.cpu

string

250m

CPU请求

gpuExporter.resources.requests.memory

string

512Mi

内存请求

node-exporter 配置

  • 可以通过配置 nodeExporter.enabled=false 禁用 node-exporter。注意,禁用 node-exporter 后将无法收集主机级别的硬件和操作系统指标(如 CPU 使用率、内存、磁盘 I/O、网络流量等)。

Key

类型

默认值

详情

nodeExporter.enabled

boolean

true

是否启用 node-exporter(建议启用)

nodeExporter.port

int

19100

指标暴露端口

nodeExporter.image.pullPolicy

string

IfNotPresent

nodeExporter.image.repository

string

prometheus-agent-repo-registry.cn-beijing.cr.aliyuncs.com/loongcollector/node-exporter

nodeExporter.image.tag

string

v0.17.0-slim

nodeExporter.resources.limits.cpu

string

1000m

CPU限制

nodeExporter.resources.limits.memory

string

1024Mi

内存限制

nodeExporter.resources.requests.cpu

string

10m

CPU请求

nodeExporter.resources.requests.memory

string

128Mi

内存请求

nodeExporter.serviceAccountName

string

cms-node-exporter

loongcollector-operator 配置

Key

类型

默认值

详情

operator.enableAlertRule

bool

true

是否启用 PrometheusRules 告警同步

operator.service.type

string

ClusterIP

operator.service.protocol

string

TCP

operator.service.port

int

8888

operator.webhookService.type

string

ClusterIP

operator.webhookService.protocol

string

TCP

operator.webhookService.port

int

9443

operator.admissionRegistration.failurePolicy

string

Ignore

operator.admissionRegistration.onlyLabel

boolean

false

operator.image.pullPolicy

string

Always

operator.image.repository

string

registry-cn-hangzhou.ack.aliyuncs.com/acs/loongcollector-operator

operator.image.tag

string

v0.0.1-rc.1

operator.prometheus.metricStore

string

operator.prometheus.project

string

operator.resources.limits.cpu

string

1

CPU限制

operator.resources.limits.memory

string

1024Mi

内存限制

operator.resources.requests.cpu

string

100m

CPU请求

operator.resources.requests.memory

string

128Mi

内存请求

operator.serviceAccountName

string

cms-loongcollector-operator