赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 注册集群
  6. 接入云上Serverless算力
  7. ECI算力
  8. ECI算力高级配置
  9. 采集指定虚拟节点的Metrics

采集指定虚拟节点的Metrics

  • ECI算力高级配置
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何通过修改Prometheus监控配置来采集指定虚拟节点的Metrics。

功能介绍

在虚拟节点的架构设计下,同一集群内的多个虚拟节点会共享同一个Node IP。导致在采集单个虚拟节点的数据时,会返回所有虚拟节点的全量数据。由于Prometheus常通过Kubelet Service采集所有节点的Metrics,因此会出现Metrics重复的现象。为了解决这个问题,容器服务 Kubernetes 版 ACK(Container Service for Kubernetes)提供了采集指定虚拟节点的Metrics数据的能力。除了保留原有的采集端点<nodeIP>:10250/metrics/cadvisor外,还额外提供指定虚拟节点名称的端点<nodeIP>:10250/metrics/cadvisor?nodeName=<nodeName> 。指定虚拟节点名称后,虚拟节点仅返回对应虚拟节点管理的所有Pod的监控数据,

前提条件

已安装ACK Virtual Node组件,且组件版本为v2.11.0及以上,请参见ACK Virtual Node。

修改Prometheus监控配置

您可以通过修改Prometheus监控配置来采集指定虚拟节点的Metrics。容器服务 Kubernetes 版支持阿里云可观测监控 Prometheus 版、社区版Prometheus Operator方案(或容器服务 Kubernetes 版的应用市场ack-prometheus-operator)和开源Prometheus三种场景下的配置方式。

阿里云可观测监控 Prometheus 版

默认支持,无需额外操作。

社区版Prometheus Operator

如果您使用的Prometheus方案为社区Prometheus Operator方案,以及容器服务 Kubernetes 版应用市场ack-prometheus-operator,需要增加以下ServiceMonitor CR配置。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: virtual-kubelet
  namespace: monitoring
  labels:
    k8s-app: kubelet
    # 增加该label用于prometheus-operator自动管理。
    release: prometheus-operator
spec:
  jobLabel: k8s-app
  selector:
    matchLabels:
      k8s-app: kubelet
  namespaceSelector:
    matchNames:
    - kube-system
  endpoints:
  - port: https-metrics
    interval: 15s
    scheme: https
    path: /metrics/cadvisor
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    tlsConfig:
      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      insecureSkipVerify: true
    relabelings:
    # 只保留Virtual Node的端点。
    - sourceLabels: [__meta_kubernetes_endpoint_address_target_name]
      regex: (^virtual-kubelet.*)
      action: keep
    # 增加指定nodeName的查询参数。
    - sourceLabels: [__meta_kubernetes_endpoint_address_target_name]
      regex: (^virtual-kubelet.*)
      targetLabel: __param_nodeName
      replacement: ${1}
      action: replace

如果集群中已经配置了基于kubelet service的服务发现来收集cAdvisor的Metrics,您需要增加以下配置来移除对<Virtual Node IP>:10250/metrics/cadvisor的采集配置,避免重复采集数据。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
...
spec:
  endpoints:
  - path: /metrics/cadvisor
    port: https-metrics
    ...
    relabelings:
    # 这个relabeling规则使得所有Target名称以virtual-kubelet开头的endpoints被丢弃.
    - action: drop
      regex: (^virtual-kubelet.*)
      sourceLabels:
      - __meta_kubernetes_endpoint_address_target_name

开源Prometheus

在开源Prometheus中找到Prometheus的配置文件,通常位于/etc/prometheus/prometheus.yml或者您自定义的配置目录下,增加以下采集配置。

scrape_configs:

...其他job配置。

- job_name: monitoring/virtual-kubelet/0
  honor_timestamps: true
  scrape_interval: 15s
  scrape_timeout: 10s
  metrics_path: /metrics/cadvisor
  scheme: https
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  relabel_configs:
  - source_labels: [__meta_kubernetes_service_label_k8s_app]
    separator: ;
    regex: kubelet
    replacement: $1
    action: keep
  - source_labels: [__meta_kubernetes_endpoint_port_name]
    separator: ;
    regex: https-metrics
    replacement: $1
    action: keep
  - source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
    separator: ;
    regex: Node;(.*)
    target_label: node
    replacement: ${1}
    action: replace
  - source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
    separator: ;
    regex: Pod;(.*)
    target_label: pod
    replacement: ${1}
    action: replace
  - source_labels: [__meta_kubernetes_namespace]
    separator: ;
    regex: (.*)
    target_label: namespace
    replacement: $1
    action: replace
  - source_labels: [__meta_kubernetes_service_name]
    separator: ;
    regex: (.*)
    target_label: service
    replacement: $1
    action: replace
  - source_labels: [__meta_kubernetes_pod_name]
    separator: ;
    regex: (.*)
    target_label: pod
    replacement: $1
    action: replace
  - source_labels: [__meta_kubernetes_pod_container_name]
    separator: ;
    regex: (.*)
    target_label: container
    replacement: $1
    action: replace
  - source_labels: [__meta_kubernetes_service_name]
    separator: ;
    regex: (.*)
    target_label: job
    replacement: ${1}
    action: replace
  - source_labels: [__meta_kubernetes_service_label_k8s_app]
    separator: ;
    regex: (.+)
    target_label: job
    replacement: ${1}
    action: replace
  - separator: ;
    regex: (.*)
    target_label: endpoint
    replacement: https-metrics
    action: replace
  - source_labels: [__meta_kubernetes_endpoint_address_target_name]
    separator: ;
    regex: (^virtual-kubelet.*)
    replacement: $1
    action: keep
  - source_labels: [__meta_kubernetes_endpoint_address_target_name]
    separator: ;
    regex: (^virtual-kubelet.*)
    target_label: __param_nodeName
    replacement: ${1}
    action: replace
  kubernetes_sd_configs:
  - role: endpoints
    namespaces:
      names:
      - kube-system

如果集群中已经配置了基于kubelet service的服务发现来收集cAdvisor的Metrics,您需要增加以下配置来移除对<Virtual Node IP>:10250/metrics/cadvisor的采集配置,避免重复采集数据。

scrape_configs:

...其他job配置。

- job_name: monitoring/ack-prometheus-operator-kubelet/0
  honor_labels: true
  honor_timestamps: true
  ...
  relabel_configs:
  ...
  # 移除对虚拟节点的/metrics/cadviso端点的采集。
  - source_labels: [__meta_kubernetes_endpoint_address_target_name]
    separator: ;
    regex: (^virtual-kubelet.*)
    replacement: $1
    action: drop
相关文章

拉取自建镜像仓库的镜像 2025-04-18 18:14

拉取自建镜像仓库中的镜像时,可能会碰到因协议不同或者证书认证失败而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书的情况下,如何拉取自建镜像仓库中的镜像来创建ECI Pod或者ImageCache。 功能说明 拉取自建镜像仓库中的镜像时,可能会碰到“ErrImageP

通过免密组件拉取容器镜像 2025-04-18 18:13

通过aliyun-acr-credential-helper组件可以在自建Kubernetes集群中免密拉取ACR个人版或企业版私有镜像。本文列举两个场景介绍如何使用免密组件拉取私有镜像。 前提条件 已创建注册集群,并将自建K

使用ImageCache加速创建ECI Pod 2025-04-18 18:13

阿里云以ImageCache CRD的方式将ECI的镜像缓存(即ImageCache)功能提供给Kubernetes用户,以便在Kubernetes集群中也可以使用该功能来加速创建ECI Pod。本文介绍ImageCache的功能,以及如何创建和使用ImageCache。 ImageCache介绍

自定义设置ECI Pod的hosts 2025-04-18 18:13

某些场景下,您可能需要自定义设置ECI Pod的hosts,例如拉取自建镜像仓库的镜像时,需要通过hosts明确镜像仓库的实际IP地址。本文介绍如何自定义设置ECI Pod级别的hosts(即/etc/hosts)。 配置说明 您可以通过

为ECI Pod配置自定义DNS 2025-04-18 18:13

混合云场景下,如果需要使用内网的镜像仓库来拉取镜像,或者容器需要访问内网中的域名,则需要配置ECI Pod使用的DNS为用户内网DNS,以便解析内网域名。本文介绍如何为ECI Pod配置自定义DNS。 背景信息 混合云场景下,例如Kubernetes集群包含本地节点,镜像仓库在本地的情况下,如果使用

在ECI上使用网络策略 2025-04-18 18:13

注册集群网络策略(Network Policy)提供基于策略的网络控制。如果您希望在IP地址或者端口层面控制网络流量,可以为集群中特定应用使用网络策略。本文介绍如何使用ACK One注册集群的网络策略及常见的使用场景。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号