文档首页 > > 用户指南> 存储管理> 云硬盘存储卷>

使用kubectl对接已有云硬盘

使用kubectl对接已有云硬盘

分享
更新时间:2021/04/01 GMT+08:00

操作场景

CCE支持使用已有的EVS云硬盘创建PersistentVolume。创建成功后,通过创建相应的PersistentVolumeClaim绑定当前PersistentVolume使用。

操作步骤

  1. 登录EVS控制台,创建一个EVS云硬盘,记录云硬盘的VolumeID、容量和磁盘类型。
  2. 请参见通过kubectl或web-terminal插件操作CCE集群配置kubectl命令。
  3. 新建两个yaml文件,用于创建PersistentVolume(PV)、PersistentVolumeClaim(PVC),假设文件名分别为pv-evs-example.yamlpvc-evs-example.yaml

    touch pv-evs-example.yaml pvc-evs-example.yaml

    K8S集群版本(K8S version)

    说明

    yaml示例

    1.15+

    1.15及以上版本的集群

    请参见1.15+ yaml文件配置示例

    1.11.7 ≤ K8S version ≤ 1.13

    1.11.7以上及1.13版本集群

    请参见1.11.7~1.13 yaml文件配置示例

    1.11 ≤ K8S version < 1.11.7

    1.11.7之前的1.11版本集群

    请参见1.11~1.11.7 yaml文件配置示例

    K8S version = 1.9

    1.9版本集群

    请参见1.9 yaml文件配置示例

    1.15+(1.15及以上版本的集群)

    • vi pv-evs-example.yaml
      PV yaml文件配置示例如下:
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        labels:
          failure-domain.beta.kubernetes.io/region: cn-north-7
          failure-domain.beta.kubernetes.io/zone: cn-north-7b
        annotations:
          pv.kubernetes.io/provisioned-by: everest-csi-provisioner
        name: pv-evs-example
      spec:
        accessModes:
        - ReadWriteOnce
        capacity:
          storage: 10Gi
        claimRef:
          apiVersion: v1
          kind: PersistentVolumeClaim
          name: pvc-evs-example
          namespace: default
        csi:
          driver: disk.csi.everest.io
          fsType: ext4
          volumeAttributes:
            everest.io/disk-mode: SCSI
            everest.io/disk-volume-type: SAS
            storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
          volumeHandle: 0992dbda-6340-470e-a74e-4f0db288ed82
        persistentVolumeReclaimPolicy: Delete
        storageClassName: csi-disk
      表1 关键参数说明

      参数

      描述

      everest.io/disk-volume-type

      云硬盘类型,全大写。

      当前支持高I/O(SAS)、超高I/O(SSD)和普通I/O(SATA)。

      failure-domain.beta.kubernetes.io/region

      集群所在的region。

      Region对应的值请参见地区和终端节点

      failure-domain.beta.kubernetes.io/zone

      创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。

      zone对应的值请参见地区和终端节点

      storage

      云硬盘的容量,单位为Gi。

      storageClassName

      存储卷动态供应关联的k8s storage class名称。

      云硬盘需使用“csi-disk”。

      accessModes

      指定读写模式,显示volume实际具有的访问模式。

      1.15集群版本只支持非共享卷,此字段设置为“ReadWriteOnce”。

      driver

      挂载依赖的存储驱动。

      EVS云硬盘配置为“disk.csi.everest.io”。

      volumeHandle

      云硬盘的volumeID。

      获取方法:在云服务器控制台中,单击左侧栏目树中的“云硬盘 > 磁盘”,单击要对接的云硬盘名称进入详情页,在“概览信息”页签下单击“ID”后的复制图标即可获取云硬盘的volumeID。

      everest.io/disk-mode

      云硬盘磁盘模式,取值支持SCSI。

      spec.claimRef.apiVersion

      固定值"v1"。

      spec.claimRef.kind

      固定值"PersistentVolumeClaim"。

      spec.claimRef.name

      pvc名称;与下一步创建的pvc的name一致。

      spec.claimRef.namespace

      pvc的namespace;与下一步创建的pvc的namespace一致。

    • vi pvc-evs-example.yaml
      PVC yaml文件配置示例如下:
      apiVersion: v1  
      kind: PersistentVolumeClaim
      metadata:
        labels:
          failure-domain.beta.kubernetes.io/region: cn-north-7
          failure-domain.beta.kubernetes.io/zone: cn-north-7b
        annotations:
          everest.io/disk-volume-type: SAS
          volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
        name: pvc-evs-example
        namespace: default
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        volumeName:  pv-evs-example
        storageClassName: csi-disk
      表2 关键参数说明

      参数

      描述

      everest.io/disk-volume-type

      云硬盘类型,全大写。

      当前支持高I/O(SAS)、超高I/O(SSD)和普通I/O(SATA),必须和已有PV保持一致。

      failure-domain.beta.kubernetes.io/region

      集群所在的region。

      Region对应的值请参见地区和终端节点

      failure-domain.beta.kubernetes.io/zone

      EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。

      zone对应的值请参见地区和终端节点

      storage

      PVC申请容量,单位为Gi。

      必须和已有PV的storage大小保持一致。

      storageClassName

      指定k8s storage class名称。

      云硬盘需使用“csi-disk”。

      volumeName

      PV的名称。

  4. 创建PV。

    kubectl create -f pv-evs-example.yaml

  5. 创建PVC。

    kubectl create -f pvc-evs-example.yaml

    执行成功后,可以在“资源管理 > 存储管理”的云硬盘存储中查看创建的PVC,也可以在EVS页面根据名称查看EVS云硬盘。

  6. (可选)增加集群关联的metadata,确保在删除节点或集群时避免删除已挂载的静态PV关联的EVS盘。

    若不执行本步骤或创建静态PV/PVC时没有执行过本步骤,请务必确保删除节点前,提前将静态PV关联的云硬盘从节点上卸载。

    1. 获取租户Token,详情请参见获取用户Token
    2. 获取EVS访问地址EVS_ENDPOINT,详情请参见区域和终端节点

    3. 给EVS静态PV关联的EVS盘补充集群关联的metadata。
      curl -X POST ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -d '{"metadata":{"cluster_id": "${cluster_id}", "namespace": "${pvc_namespace}"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:${TOKEN}'
      表3 关键参数说明

      参数

      描述

      EVS_ENDPOINT

      EVS访问地址,配置为b中获取的值。

      project_id

      项目ID,获取方法请参见查看项目ID

      volume_id

      关联EVS盘的ID,配置为2待创建静态PV中的volume_id,也可在EVS控制台,单击待导入的云硬盘名称,在磁盘详情界面的“概览信息”中获取ID的值,如图1

      cluster_id

      待创建EVS PV的集群ID。在CCE控制台中单击“资源管理 > 集群管理”。单击待关联集群的名称,在集群详情页面,即可获取集群ID,如图2

      pvc_namespace

      待绑定PVC的namespace名称。

      TOKEN

      用户Token,配置为a中获取的值。

      图1 获取磁盘ID
      图2 获取cluster_id

      例如,执行如下命令:

      curl -X POST https://evs.cn-north-4.myhuaweicloud.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:MIIPe******IsIm1ldG

      请求执行完成后,执行如下命令,可查看EVS盘是否已关联集群的metadata。

      curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -H 'X-Auth-Token:${TOKEN}'

      例如,执行如下命令:

      curl -X GET https://evs.cn-north-4.myhuaweicloud.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='

      在回显中就可以看到该EVS盘当前的metadata。

      {
          "metadata": {
              "namespace": "default",
              "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442",
              "hw:passthrough": "true"
          }
      }

历史版本示例

1.11.7 ≤ K8S version ≤ 1.13(1.11.7以上及1.13版本集群)

  • PV yaml文件配置示例如下:
    apiVersion: v1 
    kind: PersistentVolume 
    metadata: 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone:  cn-north-4a
      annotations:
        pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol
      name: pv-evs-example 
    spec: 
      accessModes: 
      - ReadWriteMany 
      capacity: 
        storage: 10Gi 
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: pvc-evs-example
        namespace: default
      flexVolume: 
        driver: huawei.com/fuxivol 
        fsType: ext4 
        options:
          disk-mode: SCSI
          fsType: ext4 
          volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
      persistentVolumeReclaimPolicy: Delete 
      storageClassName: sas
    表4 关键参数说明

    参数

    描述

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    云硬盘的容量,单位为Gi。

    storageClassName

    云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。

    driver

    挂载依赖的存储驱动。

    EVS云硬盘配置为“huawei.com/fuxivol”。

    volumeID

    云硬盘的volumeID。

    获取方法:在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。

    disk-mode

    云硬盘磁盘模式,取值可以是VBD和SCSI。

    v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。

    v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。

    spec.claimRef.apiVersion

    固定值"v1"。

    spec.claimRef.kind

    固定值"PersistentVolumeClaim"。

    spec.claimRef.name

    pvc名称;与下一步创建的pvc的name一致。

    spec.claimRef.namespace

    pvc的namespace;与下一步创建的pvc的namespace一致;

  • PVC yaml文件配置示例如下:
    apiVersion: v1  
    kind: PersistentVolumeClaim  
    metadata:  
      annotations:  
        volume.beta.kubernetes.io/storage-class: sas
        volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone: cn-north-4a     
      name: pvc-evs-example 
      namespace: default  
    spec:  
      accessModes:  
      - ReadWriteMany  
      resources:  
        requests:  
          storage: 10Gi
      volumeName: pv-evs-example
    表5 关键参数说明

    参数

    描述

    volume.beta.kubernetes.io/storage-class

    存储类型,支持sas,ssd和sata。必须和已有PV保持一致。

    volume.beta.kubernetes.io/storage-provisioner

    必须使用flexvolume-huawei.com/fuxivol。

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    PVC申请容量,单位为Gi。

    必须和已有PV的storage大小保持一致。

    volumeName

    PV的名称。

1.11 ≤ K8S version < 1.11.7(1.11.7之前的1.11版本集群)

  • PV yaml文件配置示例如下:
    apiVersion: v1 
    kind: PersistentVolume 
    metadata: 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone:  cn-north-4a
      name: pv-evs-example 
    spec: 
      accessModes: 
      - ReadWriteMany 
      capacity: 
        storage: 10Gi 
      flexVolume: 
        driver: huawei.com/fuxivol 
        fsType: ext4 
        options:
          fsType: ext4 
          volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
      persistentVolumeReclaimPolicy: Delete 
      storageClassName: sas
    表6 关键参数说明

    参数

    描述

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    云硬盘的容量,单位为Gi。

    storageClassName

    云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。

    driver

    挂载依赖的存储驱动。

    EVS云硬盘配置为“huawei.com/fuxivol”。

    volumeID

    云硬盘的volumeID。

    获取方法:在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。

    disk-mode

    云硬盘磁盘模式,取值可以是VBD和SCSI。

    v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。

    v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。

  • PVC yaml文件配置示例如下:
    apiVersion: v1  
    kind: PersistentVolumeClaim  
    metadata:  
      annotations:  
        volume.beta.kubernetes.io/storage-class: sas
        volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone: cn-north-4a     
      name: pvc-evs-example 
      namespace: default  
    spec:  
      accessModes:  
      - ReadWriteMany  
      resources:  
        requests:  
          storage: 10Gi
      volumeName: pv-evs-example
    表7 关键参数说明

    参数

    描述

    volume.beta.kubernetes.io/storage-class

    存储类型,支持sas,ssd和sata。必须和已有PV保持一致。

    volume.beta.kubernetes.io/storage-provisioner

    必须使用flexvolume-huawei.com/fuxivol。

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    PVC申请容量,单位为Gi。

    必须和已有PV的storage大小保持一致。

    volumeName

    PV的名称。

K8S version = 1.9(1.9版本集群)

  • PV yaml文件配置示例如下:
    apiVersion: v1 
    kind: PersistentVolume 
    metadata: 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone:  cn-north-4a
      name: pv-evs-example 
      namespace: default 
    spec: 
      accessModes: 
      - ReadWriteMany 
      capacity: 
        storage: 10Gi 
      flexVolume: 
        driver: huawei.com/fuxivol 
        fsType: ext4 
        options: 
          fsType: ext4 
          kubernetes.io/namespace: default 
          volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
      persistentVolumeReclaimPolicy: Delete 
      storageClassName: sas
    表8 关键参数说明

    参数

    描述

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    云硬盘的容量,单位为Gi。

    storageClassName

    云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。

    driver

    挂载依赖的存储驱动。

    EVS云硬盘配置为“huawei.com/fuxivol”。

    volumeID

    云硬盘的volumeID。

    获取方法:在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。

    disk-mode

    云硬盘磁盘模式,取值可以是VBD和SCSI。

    v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。

    v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。

  • PVC yaml文件配置示例如下:
    apiVersion: v1  
    kind: PersistentVolumeClaim  
    metadata:  
      annotations:  
        volume.beta.kubernetes.io/storage-class: sas
        volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
      labels: 
        failure-domain.beta.kubernetes.io/region: cn-north-4
        failure-domain.beta.kubernetes.io/zone: cn-north-4a
      name: pvc-evs-example 
      namespace: default  
    spec:  
      accessModes:  
      - ReadWriteMany  
      resources:  
        requests:  
          storage: 10Gi
      volumeName: pv-evs-example
      volumeNamespace: default
    表9 关键参数说明

    参数

    描述

    volume.beta.kubernetes.io/storage-class

    存储类型,支持sas,ssd和sata。必须和已有PV保持一致。

    volume.beta.kubernetes.io/storage-provisioner

    必须使用flexvolume-huawei.com/fuxivol。

    failure-domain.beta.kubernetes.io/region

    集群所在的region。

    Region对应的值请参见地区和终端节点

    failure-domain.beta.kubernetes.io/zone

    EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。

    zone对应的值请参见地区和终端节点

    storage

    PVC申请容量,单位为Gi。

    必须和已有PV的storage大小保持一致。

    volumeName

    PV的名称。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问