
# 使用kubectl对接已有文件存储
#### 约束与限制
如下配置示例适用于Kubernetes 1.13及以下版本的集群。
#### 操作步骤
1. 登录SFS控制台，创建一个文件存储，记录文件存储的ID、共享路径和容量。
2. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
3. 新建两个yaml文件，用于创建PersistentVolume（PV）、PersistentVolumeClaim（PVC）。假设文件名分别为**pv-sfs-example.yaml** 、**pvc-sfs-example.yaml** 。
   
   **touch pv-sfs-example.yaml** **pvc-sfs-example.yaml**
   
   | K8s集群版本（K8s version）       | 说明              | yaml示例                                                    |
   |:---|:---|:---|
   | 1.11 ≤ K8s version \< 1.13 | 1.11以上及1.13版本集群 | 请参见[1.11\~1.13 yaml文件配置示例] |
   | K8s version = 1.9          | 1.9版本集群         | 请参见[1.9 yaml文件配置示例]       |
      
   **1.11 ≤ K8s version ≤ 1.13（1.11以上及1.13版本集群）**
   - **PV yaml文件配置示例：**
     ```
     apiVersion: v1 
     kind: PersistentVolume 
     metadata: 
       name: pv-sfs-example 
       annotations:
         pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxinfs
     spec: 
       accessModes: 
       - ReadWriteMany 
       capacity: 
         storage: 10Gi 
       claimRef:
         apiVersion: v1
         kind: PersistentVolumeClaim
         name: pvc-sfs-example
         namespace: default
       flexVolume: 
         driver: huawei.com/fuxinfs 
         fsType: nfs 
         options: 
           deviceMountPath: <your_deviceMountPath>  #您的文件存储共享路径
           fsType: nfs 
           volumeID: f6976f9e-2493-419b-97ca-d7816008d91c 
       persistentVolumeReclaimPolicy: Delete 
       storageClassName: nfs-rw
     ```
     表1关键参数说明 
     | 参数                       | 描述                                                                                                                                                       |
     |:---|:---|
     | driver                   | 挂载依赖的存储驱动，文件存储配置为"huawei.com/fuxinfs"。                                                                                                                   |
     | deviceMountPath          | 文件存储的共享路径。 获取方法：在CCE控制台，单击顶部的"服务列表 \> 存储 \> 弹性文件服务"，在弹性文件服务列表中可以看到"挂载地址"列，即为文件存储的共享路径，如[图1]。 |
     | volumeID                 | 文件存储的ID。 获取方法：在CCE控制台，单击左侧栏目树中的"资源管理-存储管理"，在"文件存储卷"页签下单击PVC的名称，在PVC详情页中复制"PVC UID"后的内容即可。                                  |
     | storage                  | 文件存储的大小。                                                                                                                                                 |
     | storageClassName         | 文件存储支持的读写方式，当前支持nfs-rw、nfs-ro。                                                                                                                           |
     | spec.claimRef.apiVersion | 固定值"v1"。                                                                                                                                                 |
     | spec.claimRef.kind       | 固定值"PersistentVolumeClaim"。                                                                                                                              |
     | spec.claimRef.name       | 与下一步创建的pvc的name一致。                                                                                                                                       |
     | spec.claimRef.namespace  | pvc的namespace；是下一步创建的pvc的namespace一致。                                                                                                                    |
        
     
   
   - **PVC yaml文件配置示例：**
     ```
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       annotations:
         volume.beta.kubernetes.io/storage-class: nfs-rw
         volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs
       name: pvc-sfs-example
       namespace: default
     spec:
       accessModes:
       - ReadWriteMany
       resources:
         requests:
           storage: 10Gi
       volumeName: pv-sfs-example
     ```
     表2关键参数说明 
     | 参数                                            | 描述                                        |
     |:---|:---|
     | volume.beta.kubernetes.io/storage-class       | 文件存储支持的读写方式，支持nfs-rw 、nfs-ro。必须和已有PV保持一致。 |
     | volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-huawei.com/fuxinfs。        |
     | storage                                       | 存储容量，单位Gi，必须和已有pv的storage大小保持一致。          |
     | volumeName                                    | PV的名称。                                    |
        
     
   
   
   **K8s version = 1.9（1.9版本集群）**
   - **PV yaml文件配置示例：**
     ```
     apiVersion: v1 
     kind: PersistentVolume 
     metadata: 
       name: pv-sfs-example 
       namespace: default 
     spec: 
       accessModes: 
       - ReadWriteMany 
       capacity: 
         storage: 10Gi 
       flexVolume: 
         driver: huawei.com/fuxinfs 
         fsType: nfs 
         options: 
           deviceMountPath: <your_deviceMountPath>  #您的文件存储共享路径
           fsType: nfs 
           kubernetes.io/namespace: default 
           volumeID: f6976f9e-2493-419b-97ca-d7816008d91c 
       persistentVolumeReclaimPolicy: Delete 
       storageClassName: nfs-rw
     ```
     表3关键参数说明 
     | 参数               | 描述                                                                                                                                                         |
     |:---|:---|
     | driver           | 挂载依赖的存储驱动，文件存储配置为"huawei.com/fuxinfs"。                                                                                                                     |
     | deviceMountPath  | 文件存储的共享路径。 获取方法：在CCE控制台，单击顶部的"服务列表 \> 存储 \> 弹性文件服务"，在弹性文件服务列表中可以看到"挂载地址"列，即为文件存储的共享路径，如[图1]。 |
     | volumeID         | 文件存储的ID。 获取方法：在CCE控制台，单击左侧栏目树中的"资源管理-存储管理"，在"文件存储卷"页签下单击PVC的名称，在PVC详情页中复制"PVC UID"后的内容即可。                                   |
     | storage          | 文件存储的大小。                                                                                                                                                   |
     | storageClassName | 文件存储支持的读写方式，当前支持nfs-rw、nfs-ro。                                                                                                                             |
        
     
   
   - **PVC yaml文件配置示例：**
     ```
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       annotations:
         volume.beta.kubernetes.io/storage-class: nfs-rw
         volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs
       name: pvc-sfs-example
       namespace: default
     spec:
       accessModes:
       - ReadWriteMany
       resources:
         requests:
           storage: 10Gi
       volumeName: pv-sfs-example
       volumeNamespace: default
     ```
     表4关键参数说明 
     | 参数                                            | 描述                                        |
     |:---|:---|
     | volume.beta.kubernetes.io/storage-class       | 文件存储支持的读写方式，支持nfs-rw 、nfs-ro。必须和已有PV保持一致。 |
     | volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-huawei.com/fuxinfs。        |
     | storage                                       | 存储容量，单位Gi，必须和已有pv的storage大小保持一致。          |
     | volumeName                                    | PV的名称。                                    |
        
     
   
   
   图1弹性文件存储-共享路径   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001244261151.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   文件存储所在VPC必须与工作负载规划部署的ECS虚拟机的VPC保持一致。
   
   
4. 创建PV。 
   **kubectl create -f pv-sfs-example.yaml**
   
   
5. 创建PVC。 
   **kubectl create -f pvc-sfs-example.yaml**
   
   
 
