更新时间:2024-03-12 GMT+08:00

创建PV

功能介绍

该API用于通过指定云存储服务中的云存储(如EVS、SFS、OBS)去创建PV(PersistentVolume)。该API已废弃,请使用Kubernetes PV相关接口。

存储管理的URL格式为:https://{clusterid}.Endpoint/uri。其中{clusterid}为集群ID,uri为资源路径,也即API访问的路径。如果使用https://Endpoint/uri,则必须指定请求header中的X-Cluster-ID参数。

URI

POST /api/v1/cloudpersistentvolumes

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

消息体的类型(格式)

枚举值:

  • application/json;charset=utf-8
  • application/json

X-Auth-Token

String

调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token

最大长度:16384

X-Cluster-ID

String

集群 ID,使用https://Endpoint/uri这种URL格式时必须指定此参数。获取方式请参见如何获取接口URI中参数

表2 请求Body参数

参数

是否必选

参数类型

描述

apiVersion

String

API版本,固定值v1

缺省值:v1

kind

String

API类型,固定值PersistentVolume

缺省值:PersistentVolume

metadata

PersistentVolumeMetadata object

PersistentVolume的元数据信息

spec

PersistentVolumeSpec object

PersistentVolume的规格信息

status

PersistentVolumeStatus object

PersistentVolume的状态信息

表3 PersistentVolumeMetadata

参数

是否必选

参数类型

描述

name

String

PersistentVolume名称,可以包含小写字母、数字、连字符和点,开头和结尾必须是字母或数字,最长253个字符,同一namespace下name不能重复。

labels

Map<String,String>

PersistentVolume标签,key/value对格式。

  • Key:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀,例如example.com/my-key, DNS子域最长253个字符。
  • Value:可以为空或者非空字符串,非空字符串必须以字符或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符。

示例:"foo": "bar"

表4 PersistentVolumeSpec

参数

是否必选

参数类型

描述

flexVolume

FlexVolume object

Kubernetes的flexvolume存储插件

persistentVolumeReclaimPolicy

String

PersistentVolume的回收策略,包括:

  • Retain:保留策略允许手动回收资源。当 PersistentVolumeClaim 被删除时,PersistentVolume 仍然存在,volume 被视为“已释放”。
  • Recycle:回收策略会在 volume上执行基本擦除(rm -rf / thevolume / *),可被再次声明使用。
  • Delete:对于支持删除回收策略的卷插件,删除操作将从 Kubernetes 中删除 PersistentVolume 对象,并删除外部基础架构中的关联存储资产。动态配置的卷继承其 StorageClass,默认为 Delete。

accessModes

Array of strings

指定volume应该具有的访问模式。

  • ReadWriteOnce:该卷可以被单个节点以读/写模式挂载
    说明:

    集群版本为v1.13.10且storage-driver版本为1.0.19时,才支持此功能。

  • ReadOnlyMany:该卷可以被多个节点以只读模式挂载
  • ReadWriteMany:该卷可以被多个节点以读/写模式挂载
表5 FlexVolume

参数

是否必选

参数类型

描述

driver

String

Flexvolume插件名称,请根据使用的存储类型填写:

  • huawei.com/fuxivol (EVS)
  • huawei.com/fuxinfs (SFS)
  • huawei.com/fuxiobs (OBS)
  • huawei.com/fuxiefs (SFS Turbo)

fsType

String

文件系统类型,请根据使用的存储类型填写:

options

Options object

flexVolume配置项

表6 Options

参数

是否必选

参数类型

描述

fsType

String

文件系统类型,请根据使用的存储类型填写:

  • ext4 (EVS)
  • nfs (SFS)
  • obs (OBS)
  • efs (SFS Turbo)

region

String

云存储所在的region。

volumeID

String

云存储的UUID,如果是OBS-bucket则填入名称

storageType

String

指定云存储的类型。

  • bs (EVS)
  • nfs (SFS)
  • obs (OBS)
  • efs (SFS Turbo)
表7 PersistentVolumeStatus

参数

是否必选

参数类型

描述

accessModes

Array of strings

显示volume实际具有的访问模式。

phase

String

PersistentVolume当前所处的状态,包括:

  • Available(可用):还是空闲资源,没有被任何PVC绑定
  • Bound(已绑定):卷已经被PVC绑定
  • Released(已释放):之前绑定的PVC被删除,但是资源还未被集群重新声明
  • Failed(失败):该卷的自动回收失败

响应参数

状态码: 201

表8 响应Body参数

参数

参数类型

描述

apiVersion

String

API版本,固定值v1

缺省值:v1

kind

String

API类型,固定值PersistentVolume

缺省值:PersistentVolume

metadata

PersistentVolumeMetadata object

PersistentVolume的元数据信息

spec

PersistentVolumeSpec object

PersistentVolume的规格信息

status

PersistentVolumeStatus object

PersistentVolume的状态信息

表9 PersistentVolumeMetadata

参数

参数类型

描述

name

String

PersistentVolume名称,可以包含小写字母、数字、连字符和点,开头和结尾必须是字母或数字,最长253个字符,同一namespace下name不能重复。

labels

Map<String,String>

PersistentVolume标签,key/value对格式。

  • Key:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀,例如example.com/my-key, DNS子域最长253个字符。
  • Value:可以为空或者非空字符串,非空字符串必须以字符或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符。

示例:"foo": "bar"

表10 PersistentVolumeSpec

参数

参数类型

描述

flexVolume

FlexVolume object

Kubernetes的flexvolume存储插件

persistentVolumeReclaimPolicy

String

PersistentVolume的回收策略,包括:

  • Retain:保留策略允许手动回收资源。当 PersistentVolumeClaim 被删除时,PersistentVolume 仍然存在,volume 被视为“已释放”。
  • Recycle:回收策略会在 volume上执行基本擦除(rm -rf / thevolume / *),可被再次声明使用。
  • Delete:对于支持删除回收策略的卷插件,删除操作将从 Kubernetes 中删除 PersistentVolume 对象,并删除外部基础架构中的关联存储资产。动态配置的卷继承其 StorageClass,默认为 Delete。

accessModes

Array of strings

指定volume应该具有的访问模式。

  • ReadWriteOnce:该卷可以被单个节点以读/写模式挂载
    说明:

    集群版本为v1.13.10且storage-driver版本为1.0.19时,才支持此功能。

  • ReadOnlyMany:该卷可以被多个节点以只读模式挂载
  • ReadWriteMany:该卷可以被多个节点以读/写模式挂载
表11 FlexVolume

参数

参数类型

描述

driver

String

Flexvolume插件名称,请根据使用的存储类型填写:

  • huawei.com/fuxivol (EVS)
  • huawei.com/fuxinfs (SFS)
  • huawei.com/fuxiobs (OBS)
  • huawei.com/fuxiefs (SFS Turbo)

fsType

String

文件系统类型,请根据使用的存储类型填写:

options

Options object

flexVolume配置项

表12 Options

参数

参数类型

描述

fsType

String

文件系统类型,请根据使用的存储类型填写:

  • ext4 (EVS)
  • nfs (SFS)
  • obs (OBS)
  • efs (SFS Turbo)

region

String

云存储所在的region。

volumeID

String

云存储的UUID,如果是OBS-bucket则填入名称

storageType

String

指定云存储的类型。

  • bs (EVS)
  • nfs (SFS)
  • obs (OBS)
  • efs (SFS Turbo)
表13 PersistentVolumeStatus

参数

参数类型

描述

accessModes

Array of strings

显示volume实际具有的访问模式。

phase

String

PersistentVolume当前所处的状态,包括:

  • Available(可用):还是空闲资源,没有被任何PVC绑定
  • Bound(已绑定):卷已经被PVC绑定
  • Released(已释放):之前绑定的PVC被删除,但是资源还未被集群重新声明
  • Failed(失败):该卷的自动回收失败

请求示例

  • 指定EVS云硬盘ID创建PersistentVolume 1.9版本的集群样例:
    {
      "apiVersion" : "v1",
      "kind" : "PersistentVolume",
      "metadata" : {
        "labels" : {
          "name" : "pv-test"
        },
        "name" : "pv-test"
      },
      "spec" : {
        "accessModes" : [ "ReadWriteMany" ],
        "flexVolume" : {
          "driver" : "huawei.com/fuxivol",
          "fsType" : "ext4",
          "options" : {
            "fsType" : "ext4",
            "kubernetes.io/namespace" : "default",
            "region" : "southchina",
            "volumeID" : "76e01b29-08b9-11e8-9ca5-1051722006ec",
            "storageType" : "bs"
          }
        },
        "persistentVolumeReclaimPolicy" : "Delete"
      }
    }
  • {
      "apiVersion" : "v1",
      "kind" : "PersistentVolume",
      "metadata" : {
        "labels" : {
          "name" : "pv-test"
        },
        "name" : "pv-test"
      },
      "spec" : {
        "accessModes" : [ "ReadWriteMany" ],
        "flexVolume" : {
          "driver" : "huawei.com/fuxivol",
          "fsType" : "ext4",
          "options" : {
            "fsType" : "ext4",
            "region" : "southchina",
            "volumeID" : "76e01b29-08b9-11e8-9ca5-1051722006ec",
            "storageType" : "bs"
          }
        },
        "persistentVolumeReclaimPolicy" : "Delete"
      }
    }

响应示例

状态码: 201

创建PersistentVolume作业下发成功。

{
  "kind" : "PersistentVolume",
  "apiVersion" : "v1",
  "metadata" : {
    "name" : "pv-test",
    "namespace" : "default",
    "selfLink" : "/api/v1/namespaces/default/persistentvolumes/pv-test",
    "uid" : "e174188f-ff21-11e7-855b-fa163eaf5675",
    "resourceVersion" : "174229",
    "creationTimestamp" : "2018-01-22T03:11:03Z",
    "labels" : {
      "name" : "pv-test"
    },
    "enable" : true
  },
  "spec" : {
    "capacity" : {
      "storage" : "1Gi"
    },
    "accessModes" : [ "ReadWriteMany" ],
    "flexVolume" : {
      "driver" : "huawei.com/fuxivol",
      "fsType" : "ext4",
      "options" : {
        "fsType" : "ext4",
        "kubernetes.io/namespace" : "default",
        "volumeID" : "0781b22f-4d89-4e9c-b026-80e545cea16c"
      }
    },
    "persistentVolumeReclaimPolicy" : "Delete"
  },
  "status" : {
    "phase" : "Pending"
  }
}

状态码

状态码

描述

201

创建PersistentVolume作业下发成功。

错误码

请参见错误码