# 基于GPU监控指标配置工作负载弹性伸缩
在Standard/Turbo集群中，用户可以通过[GPU监控指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0955.html)为使用GPU资源的工作负载配置弹性伸缩（HPA），使应用在业务高峰期自动扩容、低负载时缩容，从而优化资源利用率并降低成本。
#### 原理介绍
Kubernetes默认仅支持CPU和内存作为HPA的弹性伸缩指标。在使用GPU资源时，如需基于GPU利用率、显存等指标进行伸缩，可通过Prometheus Adapter将Prometheus采集的GPU指标接入Custom Metrics API，从而扩展HPA的指标源，根据GPU利用率、显存等指标进行弹性伸缩。使用GPU指标实现弹性伸缩原理如下图所示：
图1使用GPU指标实现弹性伸缩原理   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002594904506.png "点击放大")
#### 前提条件
- 目标集群已创建，且集群中包含GPU节点，并已运行GPU相关业务。
- 在集群中安装[CCE AI套件（NVIDIA GPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html)，且插件正常上报GPU的metrics指标。您可以登录GPU节点，执行以下命令进行检查：
  ```
  curl {Pod IP}:2112/metrics
  ```
  其中*{Pod IP}*是CCE AI套件（NVIDIA GPU）插件中nvidia-gpu-device-plugin组件的Pod IP，返回指标结果则为正常。
  
- 在集群中安装3.9.5及以上版本的[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)，且部署模式需选择"本地数据存储"。您还需将Prometheus注册为Metrics API的服务，详见[通过Metrics API提供基础资源指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html#cce_10_0406__section17830202915211)。如果集群中已安装[Kubernetes Metrics Server](https://support.huaweicloud.com/usermanual-cce/cce_10_0205.html)，该插件默认提供Metrics API，无需重复注册。
 
#### 采集GPU指标
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群，在左侧导航栏中选择"配置项与密钥"。
2. 切换至"monitoring"命名空间，在"配置项"页签找到user-adapter-config配置项，并单击"更新"。 
   图2更新配置项   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001975040220.png "点击放大")
   
   
3. 在"配置数据"中单击config.yaml对应的"编辑"按钮，在rules字段下添加自定义指标采集规则。修改完成后单击"确定"保存配置。 
   如果您需要增加多个采集规则，可在rules字段下添加多个配置，关于采集规则配置详情请参见[Metrics Discovery and Presentation Configuration](https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/config.md)。
   针对cce_gpu_memory_utilization指标的自定义采集规则示例如下，更多GPU指标请参见[GPU监控指标说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0955.html)。
   ```
   rules:
   - seriesQuery: '{__name__=~"cce_gpu_memory_utilization",container!="",namespace!="",pod!=""}'
     seriesFilters: []
     resources:
       overrides:
         namespace:
           resource: namespace
         pod:
           resource: pod
     metricsQuery: sum(last_over_time(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>) * 100
   ```
   图3设置自定义采集规则   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002011479969.png "点击放大")
   
   
4. 重新部署monitoring命名空间下的custom-metrics-apiserver工作负载。 
   图4重新部署custom-metrics-apiserver   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001975040564.png "点击放大")
   
   
5. 重启后，可以通过以下指令查看对应的Pod的指标是否正常（注意替换命名空间和业务Pod名）。 
   1. 执行以下命令，查询指标。
      ```
      kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1"
      ```
      回显结果如下：
      ```
      {"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[{"name":"pods/cce_gpu_memory_utilization","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"namespaces/cce_gpu_memory_utilization","singularName":"","namespaced":false,"kind":"MetricValueList","verbs":["get"]}]}
      ```
      
   
   2. 执行以下命令，查询负载的对应指标值，其中*test-685b6854b4-5nq5c* 为Pod名称。
      ```
      kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/test-685b6854b4-5nq5c/cce_gpu_memory_utilization"
      ```
      回显结果如下：
      ```
      {"kind":"MetricValueList","apiVersion":"custom.metrics.k8s.io/v1beta1","metadata":{},"items":[{"describedObject":{"kind":"Pod","namespace":"default","name":"test-685b6854b4-5nq5c","apiVersion":"/v1"},"metricName":"cce_gpu_memory_utilization","timestamp":"2026-01-17T10:03:16Z","value":"0","selector":null}]}
      ```
      
   
   
   
   
 
#### 创建弹性伸缩策略
1. 单击左侧导航栏的"工作负载"，在目标工作负载的操作列中单击"弹性伸缩"。
2. 策略类型选择"HPA+CronHPA策略"，并启用HPA策略。 
   您可在"自定义策略"中选择GPU监控参数创建弹性伸缩策略，示例如下。
   图5选择自定义指标   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001894443985.png "点击放大")
   示例中以cce_gpu_memory_utilization（GPU显存使用率）作为伸缩指标，其余HPA参数的设置请根据实际需求进行设置，详情请参见[创建HPA策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0208.html)。
   
   
3. 返回"策略"页签，查看HPA策略已创建成功。 
   图6HPA策略创建成功   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001894447445.png "点击放大")
   
   
 
#### 相关文档
- [GPU虚拟化节点弹性伸缩配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0928.html)
 
