You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
指标伸缩(HPA)
基于自建 Prometheus 实现弹性伸缩
复制全文
下载 pdf
基于自建 Prometheus 实现弹性伸缩
当用户使用自建 Prometheus 监控集群时,可以在集群中部署开源 Prometheus Adapter,用于对接自建 Prometheus,实现基于自定义指标的容器水平伸缩(HPA)。本文介绍如何在集群中部署开源 Prometheus Adapter,并实现 HPA。​
差异性说明​
您可以使用自建 Prometheus 或 托管 Prometheus 对接容器服务集群,并实现基于指标的容器水平伸缩(HPA)。对接不同系统时的主要差异,如下所示。​
Prometheus adapter 组件与开源 Prometheus adapter​
​
对比项​
Prometheus adapter 组件​
开源 Prometheus adapter​
稳定性与支持​
容器服务提供稳定性保障与技术支持。​
由用户运维 ,从社区获取支持。​
适配性​
可自动适配托管 Prometheus 服务。​
需用户自行搭建并适配自建 Prometheus 服务。​
易用性​
易用性强。​
与社区特性一致。​
​
托管 Prometheus 与自建 Prometheus​
​
对比项​
托管 Prometheus​
自建 Prometheus​
适配性​
与容器服务集群深度适配。​
由用户运维 ,与社区一致。​
服务范围​
提供从采集到观测的完整托管方案。​
-​
访问方式​
支持标准 Prometheus 访问方式。​
-​
​
前提条件​
  • 已创建集群,且集群运行状态正常。详情请参见 创建集群。​
  • 已完成自建 Prometheus 服务搭建,且保证 VKE 集群能够正常访问该服务,采集指标数据。​
  • 完成本地环境(Linux/Mac)的配置,包括:​
  • 安装并完成配置 Helm 工具,确保 Helm 能正常连接到指定的 Helm 仓库。​
  • 已通过 kubectl 连接目标集群。具体操作说明,请参见 连接集群。​
使用限制​
  • 在修改 Prometheus URL 和配置鉴权时 ,若配置错误可能导致 Prometheus Adapter 无法正常获取指标数据 ,进而影响 HPA 的弹性伸缩功能。​
  • 拉取镜像时,若指定的镜像架构与 Kubernetes 集群节点架构不一致 ,可能导致镜像无法在集群中正常运行。​
  • 配置自定义指标时,若指标配置错误,HPA 将无法按照预期的自定义指标进行弹性伸缩,可能造成资源浪费或业务性能下降。​
操作步骤​
步骤一:拉取 Chart​
  1. 在本地主机中,执行以下命令,拉取 Prometheus-adapter Chart 到本地。​
​
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts​
helm repo update​
helm pull prometheus-community/prometheus-adapter​
​
  1. 解压拉取到的 Chart 文件,并进入解压后的文件夹(本文以文件名prometheus-adapter-4.11.0.tgz为例)。​
​
tar -zxvf prometheus-adapter-4.11.0.tgz && cd prometheus-adapter​
​
步骤二:修改配置​
  1. 在本地环境中打开values.yaml文件,将其中的 Prometheus URL 修改为自建 Prometheus 的 Query 地址。若不需要端口号,可直接删除。​
  • ​alt​​
  1. 若自建 Prometheus 配置了 Basic Auth 鉴权,则需要在values.yaml中添加extraArguments字段,进行 Prometheus Adapter 鉴权。鉴权 Token 需通过在线或离线工具,依据 Prometheus Basic Auth 的账号和密码生成,并添加到相应配置项中。​
  • ​alt​​
步骤三:构建镜像​
  1. 在本地拉取与 Kubernetes 集群节点架构一致的镜像(本文以linux/amd64架构为例)。​
​
docker pull --platform linux/amd64 registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.12.0​
​
  1. 为拉取的镜像打标签,并指定目标镜像仓库地址、镜像名称和版本号。本文以doc-cn-beijing.cr.volces.com/vke/prometheus-adapter-demo:v1.0为例。​
​
docker tag registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.12.0 doc-cn-beijing.cr.volces.com/vke/prometheus-adapter-demo:v1.0​
​
  1. 将镜像推送到目标镜像仓库。如果您使用火山引擎镜像仓库产品,更多操作详情,请参见 推送和拉取镜像。​
​
docker push doc-cn-beijing.cr.volces.com/vke/prometheus-adapter-demo:v1.0​
​
  1. 修改values.yaml文件中的镜像路径,指向推送后的镜像地址。​
  • ​alt​​
步骤四:配置自定义指标​
  1. 打开values.yaml中关于自定义指标的配置部分,将default设置为false,表示不启用默认配置。​
  • ​alt​​
  1. 配置custom自定义规格字段,以网络指标container_network_receive_bytes_total和container_network_transmit_bytes_total为例,配置示例如下。​
​
rules:​
default: false​
​
custom:​
- seriesQuery: 'container_network_receive_bytes_total'​
resources:​
overrides:​
namespace: {resource: "namespace"}​
pod: {resource: "pod"}​
name: {as: 'k8s_pod_network_receive_throughput'}​
metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,pod!=""}[1m])) by (<<.GroupBy>>) / 125000.0'​
- seriesQuery: 'container_network_transmit_bytes_total'​
resources:​
overrides:​
namespace: {resource: "namespace"}​
pod: {resource: "pod"}​
name: {as: 'k8s_pod_network_transmit_throughput'}​
metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,pod!=""}[1m])) by (<<.GroupBy>>) / 125000.0'​
​
步骤五:安装 Chart​
在prometheus-adapter文件夹下,执行以下命令,安装 Chart。其中prom-adapter可根据需求换成其他名称。​
​
helm install prom-adapter .​
​
查看配置​
Pormetheus-adapter 安装完成后,登录集群,确认相关工作负载、配置项均正常。​
  1. 单击左侧导航栏中的 集群。​
  1. 在集群列表页面,单击需要配置的目标集群。​
  1. 在集群管理页面的左侧导航栏中,选择 工作负载 > 无状态负载,在列表中确认工作负载运行正常。​
  • ​alt​​
  1. 在集群管理页面的左侧导航栏中,选择 配置管理 > 配置项,查看配置项。​
  • ​alt​​
  1. 在集群管理页面的左侧导航栏中,单击 工作负载 > 对象浏览器,在 分类 下拉菜单中选择 API Group,查看 API Group。​
  • ​alt​​
结果验证​
  1. 在集群中创建工作负载。本示例以创建无状态负载(Deployment)为例。​
​
apiVersion: apps/v1​
kind: Deployment​
metadata:​
name: workload-demo​
namespace: default​
spec:​
replicas: 1​
selector:​
matchLabels:​
app: workload-demo​
template:​
metadata:​
labels:​
app: workload-demo​
spec:​
containers:​
- name: nginx​
image: nginx:1.14.2​
ports:​
- containerPort: 80​
​
  1. 创建与工作负载关联的 HPA,指定按照网络指标进行弹性伸缩。​
​
apiVersion: autoscaling/v2​
kind: HorizontalPodAutoscaler​
metadata:​
name: hpa-demo​
namespace: default​
spec:​
maxReplicas: 10​
metrics:​
- pods:​
metric:​
name: k8s_pod_network_receive_throughput​
target:​
averageValue: "80"​
type: AverageValue​
type: Pods​
- pods:​
metric:​
name: k8s_pod_network_transmit_throughput​
target:​
averageValue: "80"​
type: AverageValue​
type: Pods​
minReplicas: 1​
scaleTargetRef:​
apiVersion: apps/v1​
kind: Deployment​
name: workload-demo​
​
  1. 查看工作负载详情,选择 弹性伸缩 页签,即可查看当前工作负载的 HPA 配置。实现基于自建 Prometheus 的工作负载水平伸缩。​
​alt​​
​
最近更新时间:2025.10.23 11:11:16
这个页面对您有帮助吗?
有用
有用
无用
无用