
# GPU节点实现自动弹性伸缩
当集群中GPU资源不足时，支持自动进行GPU节点的弹性伸缩。本文将指导您如何创建GPU节点的弹性伸缩策略。
#### 前提条件
- 在集群中安装[CCE AI套件（NVIDIA GPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html)及[CCE集群弹性引擎](https://support.huaweicloud.com/usermanual-cce/cce_10_0154.html)。
- 集群已在"配置中心 \> 集群弹性伸缩配置 \> 节点扩容条件"中开启"负载无法调度时自动扩容"的开关。
 
#### 步骤一：节点池配置
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群，在左侧导航栏中选择"节点管理"。
2. 单击"创建节点池"，创建一个GPU规格的节点池，操作详情请参见[创建节点池](https://support.huaweicloud.com/usermanual-cce/cce_10_0012.html)。
3. 节点池创建完成后，单击"弹性伸缩"，在"伸缩对象"中将目标规格的"弹性伸缩"按钮开启，然后单击"确定"进行保存。
 
#### 步骤二：创建GPU负载并自动扩容
1. 使用以下YAML创建一个GPU负载。 
   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: ac-test
     namespace: default
   spec:
     replicas: 1  # 副本数
     selector:  
       matchLabels:
         app: ac-test
     template:
       metadata:
         labels:  
           app: ac-test
       spec:
         restartPolicy: Always 
         containers:
           - name: container-1
             image: pytorch/pytorch:2.1.1-cuda12.1-cudnn8-devel
             imagePullPolicy: IfNotPresent
             command: ["/bin/bash", "-c"]
             args:
               - "while true; do nvidia-smi; sleep 10; done"  
             resources:
               requests:
                 cpu: 250m
                 memory: 512Mi
                 nvidia.com/gpu: 1  
               limits:
                 cpu: 250m
                 memory: 512Mi
                 nvidia.com/gpu: 1 
         # 节点亲和性：指定调度到目标GPU节点池（步骤一创建的节点池）
         affinity:
           nodeAffinity:
             requiredDuringSchedulingIgnoredDuringExecution:
               nodeSelectorTerms:
                 - matchExpressions:
                     - key: cce.cloud.com/cce-nodepool
                       operator: In
                       values:
                         - gpu-130-nodepool-67633  #GPU节点池名称
   ```
   
   
2. 查看Pod和节点池Node，此时节点池无节点，Pod处于pending状态。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002518341112.png "点击放大")
   
   
3. 随后将触发节点池扩容。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002549821003.png "点击放大")
   
   
   
4. 扩容成功后，查看Pod和节点池Node，此时节点池新创出节点，Pod处于running状态。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002518345088.png "点击放大")
   
   
 
#### 步骤三：删除GPU负载并自动缩容
如果GPU负载需求的GPU资源降低，节点处于空闲状态，为节省资源，您可以设置节点自动缩容。
1. 在集群的"配置中心 \> 集群弹性伸缩配置 \> 弹性缩容配置"中打开"开启弹性缩容"的开关，并根据需求设置节点缩容条件，详情请参见[集群弹性伸缩配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0786.html#section1)。
2. 删除GPU负载后，空闲节点开始缩容。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002549755991.png "点击放大")
   
   
   
3. 查看节点缩容成功。 
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002549876235.png "点击放大")
   
   
 
