You need to enable JavaScript to run this app.
导航

部署 VMP Agent

最近更新时间2023.12.25 10:37:58

首次发布时间2022.04.21 21:40:15

本文为您详细介绍通过部署脚本安装 VMP Agent 采集器的步骤和参数配置。

背景信息

注意

原生 Prometheus 采集方案基于原生 Prometheus(Agent 模式)开发,仅在原生方案的基础上,支持了火山引擎 AK/SK 鉴权功能。适用于那些充分了解原生 Prometheus 的基本原理和运维方法,能够自主保证采集器的可用性,且有 AK/SK 认证强需求的用户。

您可以使用 Kubectl 连接集群,完成 VMP Agent 采集器的部署。当您在集群中部署 VMP Agent 时,会同时安装 kube-state-metrics 和 node-exporter 组件。每个组件的作用说明如下表所示。

组件名称负载类型命名空间默认实例数说明
agentDeploymentvolcano-metrics1采集集群内 kubelet、kubelet-cadvisor 、kube-state-metrics 、node-exporter 暴露的指标。
kube-state-metricsDeploymentvolcano-metrics1提供 Kubernetes 集群资源信息指标数据。
node-exporterDaemonsetvolcano-metrics每 Node 1 个实例提供节点资源信息指标数据。

在此场景下,VMP Agent 充当 VMP 服务的数据采集器,直接抓取监控对象的监控数据,并将监控数据发送至 VMP 工作区服务进行保存。默认情况下,监控数据包括: node-exporter、 kubelet-cadvisor、kubelet、kube-state-metrics 和 agent 自身。

默认规格

VMP Agent 中提供的各个组件,默认的实例规格如下表所示。

组件名称默认 CPU 请求值默认内存请求值默认 CPU 上限值默认内存上限值
agent0.5 Core1 GiB2 Core4 GiB
kube-state-metrics0.1 Core250MiB0.1 Core250MiB
node-exporter0.1 Core30 MiB0.2 Core50 MiB
grafana0.1 Core128 MiB0.2 Core256 MiB

部署前准备

  • 已创建自建 Kubernetes 集群,并通过 云企业网 等方式打通私有网络(VPC)与云下数据中心(IDC)。
  • 已创建 VMP 工作区,详情请参见 创建工作区
  • 使用脚本时,需要使用本地环境(Linux/Mac)中的 wget、echo、curl 和 sed 工具,请保证您的系统中已经正确安装上述命令行工具。

评估实例规格

使用 VMP Agent 采集集群中 Node 和 Pod 的相关指标时,VMP Agent 的资源占用与 Node 和 Pod 数量呈正相关。因此,在部署 VMP Agent 之前,需要首先基于用户环境中的 Node 数和 Pod 数,来估算 VMP Agent 的资源规格。

说明

如果用户环境存在 Node 和 Pod 频繁扩缩容的情况,建议按照 Node 和 Pod 的最大值来规划 VMP Agent 规格。

VMP Agent 的建议规格值如下表所示。

典型规模CPU 建议规格内存建议规格

10 Node,640 Pod

请求值:0.15 Core
上限值:0.3 Core

请求值:2 GiB
上限值:4 GiB

50 Node,3200 Pod

请求值:1 Core
上限值:2 Core

请求值:14 GiB
上限值:28 GiB

100 Node,6400 Pod

请求值:2 Core
上限值:4 Core

请求值:25 GiB
上限值:50 GiB

VMP Agent 的资源规格和用户业务强相关,上述例子中建议值不能保证所有的情况都适用。因此,建议您在 VMP Agent 部署完成后,对采集器的规格进行监控和调节。

部署实例(默认配置)

当集群规模不大,通过默认配置即可完成所有数据采集时,可以在集群中采用单实例、默认配置的部署方式。操作步骤如下:

  1. 在本地环境中下载脚本,详情请参见 获取脚本
  2. 使用 kubectl 正确连接 Kubernetes 集群。
  3. 执行以下命令,部署 VMP Agent 采集器。
./install.sh \
--agent vmpagent \# 采集器类型。
--region cn-beijing \ # VMP 工作区所在地域。
--remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 URL 地址,并添加 api/v1/write 后缀。
--basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。
--basic-auth-password password-demo  # VMP 工作区 Basic Auth 认证模式下的认证密码。

说明

  • 上述配置中,请根据您的实际情况,修改 regionremote-write-urlbasic-auth-usernamebasic-auth-password 参数。
  • 建议给 VMP Agent 组件和 kube-state-metrics 组件配置亲和性策略,使其运行在独占节点上,避免被业务 Pod 挤占资源。

部署实例(自定义配置)

如果实例的默认规格无法满足您的需求,可以通过修改实例默认配置的方式,修改实例规格。具体步骤如下:

  1. 在本地环境中下载脚本,详情请参见 获取脚本
  2. 使用 kubectl 正确连接 Kubernetes 集群。
  3. 执行以下命令,修改配置项并部署 VMP Agent 采集器。
./install.sh \
--region cn-beijing \ # VMP 工作区所在地域。
--remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 Remote Write 地址,并添加 api/v1/write 后缀。
--basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。
--basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。
--agent vmpagent \ # 采集器类型。
--namespace volcano-metrics \ # 部署采集器的命名空间。
--agent-scrape-interval 15s \ # 采集器的数据采集间隔。
--vmpagent-name vmpagent \ # 采集器的名称。
--vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。
--vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。
--vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。
--vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。
--vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。
--kube-state-metrics-shards 2 \ # kube-state-metrics 组件的分片数。
--kube-state-metrics-resources-requests-cpu 50m \ # kube-state-metrics 的 CPU 请求值。
--kube-state-metrics-resources-requests-memory 100Mi \ # kube-state-metrics 的内存请求值。
--kube-state-metrics-resources-limits-cpu 50m \ # kube-state-metrics 的 CPU 上限值。
--kube-state-metrics-resources-limits-memory 100Mi # kube-state-metrics 的内存上限值。

部署实例(多实例部署)

当集群规模较大(150 ~ 300 个节点)时,由于 Cadvisor 组件的指标数量占比可达 50%以上,因此,可以将 VMP Agent 采集器拆分部署为 2 个实例,分别采集 Cadvisor 组件数据和其他组件数据。如下表所示。

组件名称负载类型负载名称默认实例数说明

agent

Deployment

agent

1

采集集群内 kubelet、kube-state-metrics 、node-exporter 暴露的指标。

agent-cadvisor

Deployment

agent-cadvisor

1

采集集群内 kubelet-cadvisor 暴露的指标。

操作步骤如下:

  1. 执行以下命令,部署 VMP Agent 实例,同时禁用组件对 Cadvisor 的采集规则。
./install.sh \
--region cn-beijing \ # VMP 工作区所在地域。
--remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 URL 地址,并添加 api/v1/write 后缀。
--basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。
--basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。
--agent vmpagent \ # 采集器类型。
--namespace volcano-metrics \ # 部署采集器的命名空间。
--agent-scrape-interval 15s \ # 采集器的数据采集间隔。
--vmpagent-name vmpagent \ # 采集器的名称。
--vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。
--vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。
--vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。
--vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。
--vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。
--disable-cadvisor # 禁用 VMP Agent 对 cadvisor 的采集规则。
  1. 执行以下命令,部署 vmpgent-cadvisor 实例,仅启用 Cadvisor 采集规则。同时,为避免组件名称冲突,需修改实例的名称。
./install.sh \
--region cn-beijing \ # VMP 工作区所在地域。
--remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 Remote Write 地址。
--basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。
--basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。
--agent vmpagent \ # 采集器类型。
--namespace volcano-metrics \ # 部署采集器的命名空间。
--agent-scrape-interval 15s \ # 采集器的数据采集间隔。
--vmpagent-name vmpagent-cadvisor \ # 采集器的名称。
--vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。
--vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。
--vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。
--vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。
--vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。
--cadvisor-only # 仅启用 VMP Agent 对 cadvisor 采集规则。

说明

建议给 VMP Agent 组件和 kube-state-metrics 组件配置亲和性策略,使其运行在独占节点上,避免被业务 Pod 挤占资源。

检查结果

VMP Agent 正确部署后,登录 Kubernetes 集群。在无状态负载中,可以查看到 VMP Agent 工作负载和 metrics 采集器。同时也可以查看到 VMP Agent 工作负载和 metrics 采集器对应的服务。

说明

想要通过 VMP Agent 正常采集数据,除需要保证 VMP Agent 工作正常外,还需要保证采集对象的 Metrics API 或 Exporter 正常。相关的配置和部署,需要用户自己完成并保证正确。