
# 使用kubectl部署带文件存储卷的无状态工作负载
#### 操作场景
文件存储卷创建或导入CCE后，可以在工作负载中挂载文件存储卷。
#### 约束与限制
如下配置示例适用于Kubernetes 1.13及以下版本的集群。
#### 操作步骤
1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
2. 执行如下命令，配置名为"sfs-deployment-example.yaml"的创建Pod的yaml文件。 
   ***touch sfs-deployment-example.yaml***
   ***vi sfs-deployment-example.yaml***
   在无状态工作负载中基于pvc共享式使用文件存储示例：
   ```
   apiVersion: apps/v1 
   kind: Deployment 
   metadata: 
     name: sfs-deployment-example                                # 工作负载名称
     namespace: default 
   spec: 
     replicas: 1 
     selector: 
       matchLabels: 
         app: sfs-deployment-example 
     template: 
       metadata: 
         labels: 
           app: sfs-deployment-example 
       spec: 
         containers: 
         - image: nginx 
           name: container-0 
           volumeMounts: 
           - mountPath: /tmp                                # 挂载路径
             name: pvc-sfs-example 
         imagePullSecrets:
           - name: default-secret
         restartPolicy: Always 
         volumes: 
         - name: pvc-sfs-example 
           persistentVolumeClaim: 
             claimName: pvc-sfs-auto-example                # 挂载PVC
   ```
   表1关键参数说明 
   | 前置路径                                             | 参数        | 描述                    |
   |:---|:---|:---|
   | metadata                                         | name      | 创建的Pod名称。             |
   | spec.template.spec.containers.volumeMounts       | mountPath | 容器内挂载路径，此处示例中为"/tmp"。 |
   | 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独占式使用文件存储。
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   当前SFS文件存储处于售罄状态，暂时不支持PVCTemplate独占式使用文件存储。
   yaml示例如下：
   ```
   apiVersion: apps/v1
   kind: StatefulSet
   metadata:
     name: deploy-sfs-nfs-rw-in
     namespace: default
     labels:
       appgroup: ''
   spec:
     replicas: 2
     selector:
       matchLabels:
         app: deploy-sfs-nfs-rw-in
     template:
       metadata:
         labels:
           app: deploy-sfs-nfs-rw-in
       spec:
         containers:
           - name: container-0
             image: 'nginx:1.12-alpine-perl'
             volumeMounts:
               - name: bs-nfs-rw-mountoptionpvc
                 mountPath: /aaa
         imagePullSecrets:
           - name: default-secret
     volumeClaimTemplates:
       - metadata:
           name: bs-nfs-rw-mountoptionpvc
           annotations:
             volume.beta.kubernetes.io/storage-class: nfs-rw
             volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs
         spec:
           accessModes:
             - ReadWriteMany
           resources:
             requests:
               storage: 1Gi
     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 sfs-deployment-example.yaml**
   创建完成后，登录CCE控制台，在左侧导航栏中选择"存储管理 \> 文件存储卷"。单击PVC名称，在PVC详情页面可查看文件存储服务和PVC的绑定关系。
   
   
 
