
# 使用kubectl部署带云硬盘存储卷的工作负载
#### 操作场景
云硬盘创建或导入CCE后，可以在工作负载中挂载云硬盘。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/notice_3.0-zh-cn.png)
云硬盘不支持跨可用区挂载。在挂载前，您可以使用kubectl get pvc 命令查询当前集群所在分区下可用PVC。
#### 约束与限制
如下配置示例适用于Kubernetes 1.13及以下版本的集群。
#### 操作步骤
1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
2. 执行如下命令，配置名为"evs-deployment-example.yaml"的创建无状态工作负载的yaml文件。 
   **touch evs-deployment-example.yaml**
   **vi evs-deployment-example.yaml**
   在无状态工作负载中基于pvc共享式使用云硬盘存储示例：
   ```
   apiVersion: apps/v1 
   kind: Deployment 
   metadata: 
     name: evs-deployment-example 
     namespace: default 
   spec: 
     replicas: 1 
     selector: 
       matchLabels: 
         app: evs-deployment-example 
     template: 
       metadata: 
         labels: 
           app: evs-deployment-example 
       spec: 
         containers: 
         - image: nginx
           name: container-0 
           volumeMounts: 
           - mountPath: /tmp 
             name: pvc-evs-example 
         imagePullSecrets:
           - name: default-secret
         restartPolicy: Always 
         volumes: 
         - name: pvc-evs-example 
           persistentVolumeClaim: 
             claimName: pvc-evs-auto-example
   ```
   表1关键参数说明 
   | 前置路径                                             | 参数        | 描述                      |
   |:---|:---|:---|
   | spec.template.spec.containers.volumeMounts       | name      | 容器内挂载卷的名称。              |
   | spec.template.spec.containers.volumeMounts       | mountPath | 容器内挂载路径，示例中挂载到"/tmp"路径。 |
   | spec.template.spec.volumes                       | name      | 卷的名称。                   |
   | spec.template.spec.volumes.persistentVolumeClaim | claimName | 已有PVC名称。                |
      
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   "spec.template.spec.containers.volumeMounts.name "和 "spec.template.spec.volumes.name"有映射关系，必须保持一致。
   在有状态工作负载中基于PVCTemplate独占式使用云硬盘存储。
   **yaml示例如下：**
   ```
   apiVersion: apps/v1
   kind: StatefulSet
   metadata:
     name: deploy-evs-sas-in
   spec:
     replicas: 1
     selector:
       matchLabels:
         app: deploy-evs-sata-in
     template:
       metadata:
         labels:
           app: deploy-evs-sata-in
           failure-domain.beta.kubernetes.io/region: cn-north-4
           failure-domain.beta.kubernetes.io/zone: cn-north-4b
       spec:
         containers:
           - name: container-0
             image: 'nginx:1.12-alpine-perl'
             volumeMounts:
               - name: bs-sas-mountoptionpvc
                 mountPath: /tmp
         imagePullSecrets:
           - name: default-secret
     volumeClaimTemplates:
       - metadata:
           name: bs-sas-mountoptionpvc
           annotations:
             volume.beta.kubernetes.io/storage-class: sas
             volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol
         spec:
           accessModes:
             - ReadWriteOnce
           resources:
             requests:
               storage: 10Gi
     serviceName: wwww
   ```
   表2关键参数说明 
   | 前置路径                                      | 参数          | 描述                                                                                                          |
   |:---|:---|:---|
   | metadata                                  | name        | 创建的工作负载名称。                                                                                                  |
   | spec.template.spec.containers             | image       | 工作负载的镜像。                                                                                                    |
   | spec.template.spec.containers.volumeMount | mountPath   | 容器内挂载路径，示例中挂载到"/tmp"路径。                                                                                     |
   | spec                                      | serviceName | 工作负载对应的服务，服务创建过程请参见[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)。 |
      
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   "spec.template.spec.containers.volumeMounts.name "和 "spec.volumeClaimTemplates.metadata.name"有映射关系，必须保持一致。
   
   
3. 执行如下命令创建Pod。 
   **kubectl create -f evs-deployment-example.yaml**
   创建完成后，登录CCE控制台，在左侧导航栏中选择"存储管理 \> 云硬盘存储卷"。单击PVC名称，在PVC详情页面可查看云硬盘和PVC的绑定关系。
   
   
 
