功能介绍
该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作业下发成功。 |
错误码
请参见错误码。