采用高可用采集方案,您需要首先在目标集群中部署 VM Agent 采集器。本文为您详细介绍 VM Agent 采集器的基本概念、部署步骤和参数配置。
注意
VM Agent 采集器自带 Operator,能够实现采集器和 kube-state-metrics 组件的分片和数据采集,性能和可用性较高。
当您在集群中安装 VM Agent 采集器时,会同时安装 vm-operator、kube-state-metrics 和 node-exporter 组件。每个组件的名称、类型和作用说明如下表所示。
组件名称 | 负载类型 | 命名空间 | 说明 |
---|---|---|---|
vmagent | StatefulSet | volcano-metrics | 采集集群内 kubelet、kubelet-cadvisor 、kube-state-metrics 、node-exporter 暴露的指标。 |
vm-operator | Deployment | volcano-metrics | VM Agent 控制组件。 |
kube-state-metrics | StatefulSet | volcano-metrics | 提供 Kubernetes 资源信息指标数据。 |
node-exporter | DaemonSet | volcano-metrics | 提供节点资源信息指标数据。 |
在此场景下,VM Agent 充当 VMP 服务的数据采集组件,直接抓取监控对象的监控数据,并将监控数据发送至 VMP 服务进行保存。默认情况下,监控数据包括: node-exporter、 kubelet metrics/cadvisor、kubelet metrics、kube-state-metrics 和 agent 自身。
VM Agent 采集器中涉及的组件,默认的实例规格如下表所示。
组件名称 | 默认 CPU 请求值 | 默认内存请求值 | 默认 CPU 上限值 | 默认内存上限值 |
---|---|---|---|---|
vmagent | 2 Core | 2 GiB | 4 Core | 4 GiB |
kube-state-metrics | 0.2 Core | 512 MiB | 0.8 Core | 2 GiB |
node-exporter | 0.05 Core | 128 MiB | 0.1 Core | 256 MiB |
注意
VM Agent 采集器与容器服务集群中的 promethues-agent 组件冲突,不能同时使用,部署 VM Agent 前,请确认您的集群中没有安装 promethues-agent 组件。详情请参见 容器服务接入。
您可以使用部署脚本,快速部署 VM Agent 采集器。当采用缺省配置部署时,操作步骤如下:
./install.sh \ --agent vmagent \ # 采集器类型。 --region cn-beijing \ # VM 工作区所在地域。 --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 Remote Write 地址,并添加 api/vi/write 后缀。 --namespace volcano-metrics \ # 部署采集器的命名空间。 --basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。 --basic-auth-password password-demo # VMP 工作区 Basic Auth 认证模式下的认证密码。
说明
上述配置中,请根据您的实际情况,修改 region
、remote-write-url
、namespace
、basic-auth-username
和 basic-auth-password
参数。
如果采集器的默认规格无法满足您的需求,支持在部署前,使用部署脚本中的预定义参数,修改实例配置(例如:采集器的 CPU 和内存容量)。操作步骤如下:
./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 vmagent \ # 采集器类型。 --namespace volcano-metrics \ # 部署采集器的命名空间。 --agent-scrape-interval 15s \ # 采集器的数据采集间隔。 --vmagent-replicas 1 \ # VM Agent 采集器的副本数。 --vmagent-shards 2 \ # VM Agent 采集器的分片数。 --vmagent-resources-requests-cpu 100m \ # VM Agent 采集器的 CPU 请求值。 --vmagent-resources-requests-memory 200Mi \ # VM Agent 采集器的内存请求值。 --vmagent-resources-limits-cpu 100m \ # VM Agent 采集器的 CPU 上限值。 --vmagent-resources-limits-memory 200Mi \ # VM 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 的内存上限值。
如果部署脚本中预定义的参数无法满足您的需求,您也可以自定义相关参数,操作步骤如下:
./install.sh \ --region cn-beijing \ --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ --basic-auth-username username-demo \ --basic-auth-password password-demo \ --agent vmagent \ --rendering-only > install.yaml
vim install.yaml
kubectl apply -f install.yaml
VM Agent 正确部署后,登录集群,在无状态负载列表中,可以查看到 vm-operator 工作负载。在有状态负载列表中,可以查看到 VM Agent 和 kube-state-metrics 工作负载。
说明
为了保证采集器能够正常采集数据,除需要保证采集器正常工作外,还需要保证采集对象的 Metrics API 或 Exporter 正常。相关的配置和部署,需要您自己完成并保证正确。
采集器部署完成后,除默认的采集规则外,您可以使用 ServiceMonitor 或 PodMonitor 配置面向自定义目标的采集规则。详情请参见 服务发现。
您可以通过安装脚本的 --help
参数,查看脚本中所有的预定义字段和含义。
./install.sh install --help
安装脚本中不同字段的含义和示例如下。
./install.sh install --help install agent and system metrics exporter. if it is VM Agent, vmoperator will also be installed Usage: install.sh install [flag...] Flag: {{flag}} {{current val if exist}} --agent vmagent --remote-write-url http://write.prometheus-cn-beijing.com/workspace/b762e1a3-37***/api/v1/write --basic-auth-username username-demo --basic-auth-password password-demo --access-key TDOSNQG*** --secret-key YvT3ing*** --region cn-beijing --exec-script-env local --rendering-only --namespace volcano-metrics --topology-key-zone topology.kubernetes.io/zone --topology-key-node kubernetes.io/hostname --storage-class --kube-state-metrics-shards 1 --kube-state-metrics-resources-requests-cpu 100m --kube-state-metrics-resources-requests-memory 250Mi --kube-state-metrics-resources-limits-cpu 500m --kube-state-metrics-resources-limits-memory 1Gi --agent-scrape-interval 15s --vmpagent-name vmpagent --vmpagent-replicas 1 --vmpagent-pvc-capacity --vmpagent-resources-requests-cpu 500m --vmpagent-resources-requests-memory 1Gi --vmpagent-resources-limits-cpu 2 --vmpagent-resources-limits-memory 4Gi --vmagent-replicas 1 --vmagent-shards 2 --vmagent-pvc-capacity --vmagent-resources-requests-cpu 200m --vmagent-resources-requests-memory 400Mi --vmagent-resources-limits-cpu 1 --vmagent-resources-limits-memory 2Gi --disable-cadvisor --cadvisor-only --disable-install-node-exporter
参数 | 说明 |
---|---|
--agent | 选择部署的采集器类型,包括:vmpagent 和 vmagent。 说明 不同类型采集器的详细介绍,请参见 采集器概述。 |
--remote-write-url | VMP 工作区的 Remote Write 地址,详情请参见 获取 Remote Write 和 Query 地址。 注意 获取 Remote Write 地址后,您需要在其后添加 |
--basic-auth-username | VMP 工作区 Basic Auth 认证模式下的认证用户名。 |
--basic-auth-password | VMP 工作区 Basic Auth 认证模式下的认证密码。 |
--access-key | VMP 工作区 AK/SK 认证模式下使用的 AccessKey ID。AK/SK 认证模式仅 VMP Agent 采集器支持。 |
--secret-key | VMP 工作区 AK/SK 认证模式下使用的 AccessKey Secret。AK/SK 认证模式仅 VMP Agent 采集器支持。 |
--region | 部署采集器集群的地域,例如:cn-beijing。详情请参见 地域和可用区。 |
--exec-script-env | 部署脚本执行环境,包括:
|
--rendering-only | 仅查看 VM Agent、vm-operator 等组件的安装清单,不实际安装。 |
--namespace | 部署采集器的命名空间,如未配置该参数,默认部署在 volcano-metrics 命名空间。 |
--storage-class | PVC 存储类型。 |
--kube-state-metrics-shards | kube-state-metrics 组件的分片数。 |
--kube-state-metrics-resources-requests-cpu | kube-state-metrics 的 CPU 请求值,整数形式,单位为 m,例如:100m 表示 CPU 请求值为 100 毫核。 |
--kube-state-metrics-resources-requests-memory | kube-state-metrics 的内存请求值,整数形式,单位为 Mi ,例如:200Mi 表示内存请求值为 200MB。 |
--kube-state-metrics-resources-limits-cpu | kube-state-metrics 的 CPU 上限值,整数形式,单位为 m,例如:100m 表示 CPU 上限值为 100 毫核。 |
--kube-state-metrics-resources-limits-memory | kube-state-metrics 的内存上限值,整数形式,单位为 Mi ,例如:200Mi 表示内存上限值为 200MB。 |
--agent-scrape-interval | 采集器的数据采集间隔,整数形式,单位为 s,例如:15s。 |
--vmpagent-name | VMP Agent 采集器的名称。 |
--vmpagent-replicas | VMP Agent 采集器的副本数。 |
--vmpagent-pvc-capacity | VMP Agent 采集器的存储能力。 |
--vmpagent-resources-requests-cpu | VMP Agent 采集器的 CPU 请求值,整数形式,单位为 m,例如:100m 表示 CPU 请求值为 100 毫核。 |
--vmpagent-resources-requests-memory | VMP Agent 采集器的内存请求值,整数形式,单位为 Mi ,例如:200Mi 表示内存请求值为 200MB。 |
--vmpagent-resources-limits-cpu | VMP Agent 采集器的 CPU 上限值,整数形式,单位为 m,例如:100m 表示 CPU 上限值为 100 毫核。 |
--vmpagent-resources-limits-memory | VMP Agent 采集器的内存上限值,整数形式,单位为 Mi ,例如:200Mi 表示内存上限值为 200MB。 |
--vmagent-replicas | VM Agent 采集器的副本数。 |
--vmagent-shards | VM Agent 采集器的分片数。 |
--vmagent-pvc-capacity | VM Agent 采集器的存储容量。 |
--vmagent-resources-requests-cpu | VM Agent 采集器的 CPU 请求值,整数形式,单位为 m,例如:100m 表示 CPU 请求值为 100 毫核。 |
--vmagent-resources-requests-memory | VM Agent 采集器的内存请求值,整数形式,单位为 Mi ,例如:200Mi 表示内存请求值为 200MB。 |
--vmagent-resources-limits-cpu | VM Agent 采集器的 CPU 上限值,整数形式,单位为 m,例如:100m 表示 CPU 上限值为 100 毫核。 |
--vmagent-resources-limits-memory | VM Agent 采集器的内存上限值,整数形式,单位为 Mi ,例如:200Mi 表示内存上限值为 200MB。 |
--disable-cadvisor | 禁用 VMP Agent 采集器对 cadvisor 的采集规则。 |
--cadvisor-only | 仅启用 VMP Agent 采集器对 cadvisor 采集规则。 |
--disable-install-node-exporter | 禁用 VMP Agent 采集器对 node-exporter 的采集规则。 |