
# 使用kubectl对接已有对象存储
#### 操作场景
CCE支持使用已有的对象存储来创建PersistentVolume，并通过创建对应PersistentVolumeClaim绑定当前PersistentVolume使用。
#### 约束与限制
如下配置示例适用于Kubernetes 1.13及以下版本的集群。
#### 操作步骤
1. 登录OBS控制台，创建对象存储桶，记录桶名称和存储类型。
2. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
3. 新建两个yaml文件，用于创建PersistentVolume（PV）、PersistentVolumeClaim（PVC），假设文件名为**pv-obs-example.yaml、pvc-obs-example.yaml。**
   
   **touch pv-obs-example.yaml** **pvc-obs-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-obs-example 
       annotations:
         pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxiobs
     spec: 
       accessModes: 
       - ReadWriteMany 
       capacity: 
         storage: 1Gi 
       claimRef:
         apiVersion: v1
         kind: PersistentVolumeClaim
         name: pvc-obs-example
         namespace: default
       flexVolume: 
         driver: huawei.com/fuxiobs 
         fsType: obs 
         options: 
           fsType: obs 
           region: cn-north-4
           storage_class: STANDARD 
           volumeID: test-obs 
       persistentVolumeReclaimPolicy: Delete 
       storageClassName: obs-standard
     ```
     表1关键参数说明 
     | 参数                       | 描述                                                                                                                             |
     |:---|:---|
     | driver                   | 挂载依赖的存储驱动，对象存储配置为"huawei.com/fuxiobs"。                                                                                         |
     | storage_class            | 存储类型，包括STANDARD（标准桶）、STANDARD_IA（低频访问桶）。                                                                                       |
     | region                   | 集群所在的region。                                                                                                                   |
     | volumeID                 | 对象存储的桶名称。 获取方法：在CCE控制台，单击左侧栏目树中的"资源管理-存储管理"，在"对象存储卷"页签下单击PVC的名称，在PVC详情页的"PV详情"页签下复制"PV名称"后的内容即可。 |
     | storage                  | 存储容量，单位为Gi。此处配置为固定值1Gi。                                                                                                        |
     | storageClassName         | 对象存储支持的存储类型，包括obs-standard（标准）、obs-standard-ia（低频）。                                                                            |
     | spec.claimRef.apiVersion | 固定值"v1"。                                                                                                                       |
     | spec.claimRef.kind       | 固定值"PersistentVolumeClaim"。                                                                                                    |
     | spec.claimRef.name       | 与下一步创建的pvc的name一致。                                                                                                             |
     | spec.claimRef.namespace  | 与下一步创建的pvc的namespace一致。                                                                                                        |
        
     
   
   - **PVC yaml文件配置示例：**
     ```
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       annotations:
         volume.beta.kubernetes.io/storage-class: obs-standard
         volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs
       name: pvc-obs-example
       namespace: default
     spec:
       accessModes:
       - ReadWriteMany
       resources:
         requests:
           storage: 1Gi
       volumeName: pv-obs-example
     ```
     表2关键参数说明 
     | 参数                                            | 描述                                          |
     |:---|:---|
     | volume.beta.kubernetes.io/storage-class       | 对象存储支持的存储类型，包括obs-standard、obs-standard-ia。 |
     | volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-huawei.com/fuxiobs。          |
     | volumeName                                    | PV的名称。                                      |
     | storage                                       | 存储容量，单位为Gi。此处配置为固定值1Gi。                     |
        
     
   
   
   **K8s version = 1.9（1.9版本集群）**
   - **PV yaml文件配置示例：**
     ```
     apiVersion: v1 
     kind: PersistentVolume 
     metadata: 
       name: pv-obs-example 
       namespace: default  
     spec: 
       accessModes: 
       - ReadWriteMany 
       capacity: 
         storage: 1Gi 
       flexVolume: 
         driver: huawei.com/fuxiobs 
         fsType: obs 
         options: 
           fsType: obs 
           kubernetes.io/namespace: default 
           region: cn-north-4
           storage_class: STANDARD 
           volumeID: test-obs 
       persistentVolumeReclaimPolicy: Delete 
       storageClassName: obs-standard
     ```
     表3关键参数说明 
     | 参数               | 描述                                                                                                                             |
     |:---|:---|
     | driver           | 挂载依赖的存储驱动，对象存储配置为"huawei.com/fuxiobs"。                                                                                         |
     | storage_class    | 存储类型，包括STANDARD（标准桶）、STANDARD_IA（低频访问桶）。                                                                                       |
     | region           | 集群所在的region。                                                                                                                   |
     | volumeID         | 对象存储的桶名称。 获取方法：在CCE控制台，单击左侧栏目树中的"资源管理-存储管理"，在"对象存储卷"页签下单击PVC的名称，在PVC详情页的"PV详情"页签下复制"PV名称"后的内容即可。 |
     | storage          | 存储容量，单位为Gi。此处配置为固定值1Gi。                                                                                                        |
     | storageClassName | 对象存储支持的存储类型，包括obs-standard（标准）、obs-standard-ia（低频）。                                                                            |
        
     
   
   - **PVC yaml文件配置示例：**
     ```
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       annotations:
         volume.beta.kubernetes.io/storage-class: obs-standard
         volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs
       name: pvc-obs-example
       namespace: default
     spec:
       accessModes:
       - ReadWriteMany
       resources:
         requests:
           storage: 1Gi
       volumeName: pv-obs-example
       volumeNamespace: default
     ```
     表4关键参数说明 
     | 参数                                            | 描述                                          |
     |:---|:---|
     | volume.beta.kubernetes.io/storage-class       | 对象存储支持的存储类型，包括obs-standard、obs-standard-ia。 |
     | volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-huawei.com/fuxiobs。          |
     | volumeName                                    | PV的名称。                                      |
     | storage                                       | 存储容量，单位为Gi。此处配置为固定值1Gi。                     |
        
     
   
   
   
   
4. 创建PV。 
   **kubectl create -f pv-obs-example.yaml**
   
   
5. 创建PVC。 
   **kubectl create -f pvc-obs-example.yaml**
   
   
 
