功能介绍
该API用于在指定的Namespace下通过 云存储 服务中的云存储(EVS、 SFS 、OBS)去创建PVC(PersistentVolumeClaim)。该API待废弃,请使用Kubernetes PVC相关接口。
存储管理的URL格式为:https://{clusterid}.Endpoint/uri。其中{clusterid}为集群ID,uri为资源路径,也即API访问的路径。如果使用https://Endpoint/uri,则必须指定请求header中的X-Cluster-ID参数。
调用方法
请参见如何调用API。
URI
POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
namespace |
是 |
String |
指定PersistentVolumeClaim所在的命名空间。 使用namespace有如下约束:
|
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
X-Cluster-ID |
否 |
String |
集群ID,使用https://Endpoint/uri这种URL格式时必须指定此参数。获取方式请参见如何获取接口URI中参数。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
apiVersion |
是 |
String |
API版本,固定值v1 |
kind |
是 |
String |
API类型,固定值PersistentVolumeClaim |
metadata |
是 |
metadata是集群对象的元数据定义,是集合类的元素类型,包含一组由不同名称定义的属性。 |
|
spec |
是 |
spec是集合类的元素类型,用户对需要管理的集群对象进行详细描述的主体部分都在spec中给出。系统通过spec的描述来创建或更新对象。 |
|
status |
否 |
status是当前PersistentVolumeClaim的状态信息,创建时不需要添加status参数。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
PersistentVolumeClaim名称,可以包含小写字母、数字、连字符和点,开头和结尾必须是字母或数字,最长253个字符,同一namespace下name不能重复。 |
labels |
否 |
String |
PersistentVolumeClaim标签,key/value对格式。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
volumeID |
是 |
String |
资源需为已经存在的存储资源
|
storageType |
是 |
String |
云存储的类型,和volumeID搭配使用。即volumeID和storageType必须同时被配置。 |
accessModes |
是 |
Array of strings |
指定volume应该具有的访问模式,列表中仅第一个配置参数有效。
|
storageClassName |
否 |
String |
PVC的StorageClass名称 |
volumeName |
否 |
String |
PVC绑定的PV名称 |
resources |
否 |
资源需求和限制 |
|
volumeMode |
否 |
String |
PVC指定的PV类型 |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
apiVersion |
String |
API版本,固定值v1 |
kind |
String |
API类型,固定值PersistentVolumeClaim |
metadata |
metadata是集群对象的元数据定义,是集合类的元素类型,包含一组由不同名称定义的属性。 |
|
spec |
spec是集合类的元素类型,用户对需要管理的集群对象进行详细描述的主体部分都在spec中给出。系统通过spec的描述来创建或更新对象。 |
|
status |
status是当前PersistentVolumeClaim的状态信息,创建时不需要添加status参数。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
PersistentVolumeClaim名称,可以包含小写字母、数字、连字符和点,开头和结尾必须是字母或数字,最长253个字符,同一namespace下name不能重复。 |
labels |
String |
PersistentVolumeClaim标签,key/value对格式。
|
参数 |
参数类型 |
描述 |
---|---|---|
volumeID |
String |
资源需为已经存在的存储资源
|
storageType |
String |
云存储的类型,和volumeID搭配使用。即volumeID和storageType必须同时被配置。
|
accessModes |
Array of strings |
指定volume应该具有的访问模式,列表中仅第一个配置参数有效。
|
storageClassName |
String |
PVC的StorageClass名称 |
volumeName |
String |
PVC绑定的PV名称 |
resources |
资源需求和限制 |
|
volumeMode |
String |
PVC指定的PV类型 |
请求示例
指定EVS 云硬盘 ID创建PersistentVolumeClaim
POST /api/v1/namespaces/default/cloudpersistentvolumeclaims { "apiVersion" : "v1", "kind" : "PersistentVolumeClaim", "metadata" : { "name" : "csms-dev-create", "namespace" : "default" }, "spec" : { "volumeID" : "86b29e16-23db-11e7-9c83-fa163ec08232", "storageType" : "bs", "accessModes" : [ "ReadWriteMany" ] } }
响应示例
状态码: 201
创建PersistentVolumeClaim作业下发成功。
{ "kind" : "PersistentVolumeClaim", "apiVersion" : "v1", "metadata" : { "name" : " csms-dev-create ", "namespace" : "default", "selfLink" : "/api/v1/namespaces/default/persistentvolumeclaims/db-mysql-0", "uid" : "86b29e16-23db-11e7-9c83-fa163ec08232", "resourceVersion" : "1793115", "creationTimestamp" : "2017-04-18T02:05:42Z" }, "spec" : { "volumeName" : "csms-dev-create ", "accessModes" : [ "ReadWriteMany" ], "resources" : { "requests" : { "storage" : "1Gi" } } }, "status" : { "phase" : "Pending", "accessModes" : [ "ReadWriteMany" ] } }
SDK代码示例
SDK代码示例如下。
指定EVS云硬盘ID创建PersistentVolumeClaim
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; import java.util.List; import java.util.ArrayList; public class CreateCloudPersistentVolumeClaimsSolution { public static void main(String[] args) { String ak = "<YOUR AK>"; String sk = "<YOUR SK>"; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("cn-north-4")) .build(); CreateCloudPersistentVolumeClaimsRequest request = new CreateCloudPersistentVolumeClaimsRequest(); request.withNamespace("<namespace>"); PersistentVolumeClaim body = new PersistentVolumeClaim(); List<PersistentVolumeClaimSpec.AccessModesEnum> listSpecAccessModes = new ArrayList<>(); listSpecAccessModes.add(PersistentVolumeClaimSpec.AccessModesEnum.fromValue("ReadWriteMany")); PersistentVolumeClaimSpec specbody = new PersistentVolumeClaimSpec(); specbody.withVolumeID("86b29e16-23db-11e7-9c83-fa163ec08232") .withStorageType("bs") .withAccessModes(listSpecAccessModes); PersistentVolumeClaimMetadata metadatabody = new PersistentVolumeClaimMetadata(); metadatabody.withName("csms-dev-create"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withKind("PersistentVolumeClaim"); body.withApiVersion("v1"); request.withBody(body); try { CreateCloudPersistentVolumeClaimsResponse response = client.createCloudPersistentVolumeClaims(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
指定EVS云硬盘ID创建PersistentVolumeClaim
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": ak = "<YOUR AK>" sk = "<YOUR SK>" credentials = BasicCredentials(ak, sk) \ client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("cn-north-4")) \ .build() try: request = CreateCloudPersistentVolumeClaimsRequest() request.namespace = "<namespace>" listAccessModesSpec = [ "ReadWriteMany" ] specbody = PersistentVolumeClaimSpec( volume_id="86b29e16-23db-11e7-9c83-fa163ec08232", storage_type="bs", access_modes=listAccessModesSpec ) metadatabody = PersistentVolumeClaimMetadata( name="csms-dev-create" ) request.body = PersistentVolumeClaim( spec=specbody, metadata=metadatabody, kind="PersistentVolumeClaim", api_version="v1" ) response = client.create_cloud_persistent_volume_claims(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
指定EVS云硬盘ID创建PersistentVolumeClaim
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { ak := "<YOUR AK>" sk := "<YOUR SK>" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateCloudPersistentVolumeClaimsRequest{} request.Namespace = "<namespace>" var listAccessModesSpec = []model.PersistentVolumeClaimSpecAccessModes{ model.GetPersistentVolumeClaimSpecAccessModesEnum().READ_WRITE_MANY, } specbody := &model.PersistentVolumeClaimSpec{ VolumeID: "86b29e16-23db-11e7-9c83-fa163ec08232", StorageType: "bs", AccessModes: listAccessModesSpec, } metadatabody := &model.PersistentVolumeClaimMetadata{ Name: "csms-dev-create", } request.Body = &model.PersistentVolumeClaim{ Spec: specbody, Metadata: metadatabody, Kind: "PersistentVolumeClaim", ApiVersion: "v1", } response, err := client.CreateCloudPersistentVolumeClaims(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
201 |
创建PersistentVolumeClaim作业下发成功。 |
错误码
请参见错误码。