更新指定的集群
功能介绍
该API用于更新指定的集群。
集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径。
调用方法
请参见如何调用API。
URI
PUT /autopilot/v3/projects/{project_id}/clusters/{cluster_id}
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
参数解释: 项目ID,获取方式请参见如何获取接口URI中参数。 约束限制: 不涉及 取值范围: 账号的项目ID 默认取值: 不涉及 |
cluster_id |
是 |
String |
参数解释: 集群ID,获取方式请参见如何获取接口URI中参数。 约束限制: 不涉及 取值范围: 集群ID 默认取值: 不涉及 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
参数解释: 消息体的类型(格式) 约束限制: GET方法不做校验 取值范围:
默认取值: 不涉及 |
X-Auth-Token |
是 |
String |
参数解释: 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
spec |
是 |
具体集群参数 |
|
metadata |
否 |
集群基本信息,包含与名称相关的字段 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
description |
否 |
String |
集群的描述信息。
|
customSan |
否 |
Array of strings |
集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。Autopilot集群暂不支持。
示例: SAN 1: DNS Name=example.com SAN 2: DNS Name=www.example.com SAN 3: DNS Name=example.net SAN 4: IP Address=93.184.216.34 |
eniNetwork |
否 |
AutopilotEniNetworkUpdate object |
云原生网络2.0网络配置,包含集群的容器子网信息。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
subnets |
否 |
Array of AutopilotNetworkSubnet objects |
IPv4子网ID列表。 允许新增子网,删除已有子网。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
subnetID |
是 |
String |
用于创建控制节点和容器的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:
|
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
kind |
String |
API类型,固定值“Cluster”或“cluster”,该值不可修改。 |
apiVersion |
String |
API版本,固定值“v3”,该值不可修改。 |
metadata |
AutopilotClusterMetadata object |
集群的基本信息,为集合类的元素类型,包含一组由不同名称定义的属性。 |
spec |
AutopilotClusterSpec object |
spec是集合类的元素类型,您对需要管理的集群对象进行详细描述的主体部分都在spec中给出。CCE通过spec的描述来创建或更新对象。 |
status |
AutopilotClusterStatus object |
集合类的元素类型,用于记录对象在系统中的当前状态信息,包含了集群状态和本次创建集群作业的jobID |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
集群名称。 命名规则:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围4-128位,且不能以中划线(-)结尾。 |
uid |
String |
集群ID,资源唯一标识,创建成功后自动生成,填写无效。在创建包周期集群时,响应体不返回集群ID。 |
alias |
String |
集群显示名,用于在 CCE 界面显示,该名称创建后可修改。 命名规则:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围4-128位,且不能以中划线(-)结尾。 显示名和其他集群的名称、显示名不可以重复。 在创建集群、更新集群请求体中,集群显示名alias未指定或取值为空,表示与集群名称name一致。在创建集群等响应体中,集群显示名alias未配置时将不返回。 |
annotations |
Map<String,String> |
集群注解,由key/value组成: "annotations": { "key1" : "value1", "key2" : "value2" }
说明:
|
labels |
Map<String,String> |
集群标签,key/value对格式。
说明:
该字段值由系统自动生成,用于升级时前端识别集群支持的特性开关,用户指定无效。 |
creationTimestamp |
String |
集群创建时间 |
updateTimestamp |
String |
集群更新时间 |
参数 |
参数类型 |
描述 |
---|---|---|
category |
String |
集群类别。Autopilot集群仅支持Turbo类型。 |
type |
String |
集群Master节点架构:
|
flavor |
String |
集群规格,cce.autopilot.cluster |
version |
String |
集群版本,与Kubernetes社区基线版本保持一致,建议选择最新版本。 在CCE控制台支持创建三种最新版本的集群。可登录CCE控制台创建集群,在“版本”处获取到集群版本。 其它集群版本,当前仍可通过api创建,但后续会逐渐下线,具体下线策略请关注CCE官方公告。
说明:
|
platformVersion |
String |
CCE集群平台版本号,表示集群版本(version)下的内部版本。用于跟踪某一集群版本内的迭代,集群版本内唯一,跨集群版本重新计数。不支持用户指定,集群创建时自动选择对应集群版本的最新平台版本。 platformVersion格式为:cce.X.Y
|
description |
String |
集群描述,对于集群使用目的的描述,可根据实际情况自定义,默认为空。集群创建成功后可通过接口更新指定的集群来做出修改,也可在CCE控制台中对应集群的“集群详情”下的“描述”处进行修改。仅支持utf-8编码。 |
customSan |
Array of strings |
集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。Autopilot集群暂不支持。
示例: SAN 1: DNS Name=example.com SAN 2: DNS Name=www.example.com SAN 3: DNS Name=example.net SAN 4: IP Address=93.184.216.34 |
enableSnat |
Boolean |
集群是否配置SNAT,仅Autopilot集群创建接口使用和返回。开启后您的集群可以通过NAT网关访问公网,默认使用所选的VPC中已有的NAT网关,否则系统将会为您自动创建一个默认规格的NAT网关并绑定弹性公网IP,自动配置SNAT规则。 |
enableSWRImageAccess |
Boolean |
集群是否配置镜像访问,仅Autopilot集群创建接口使用和返回。为确保您的集群节点可以从容器镜像服务中拉取镜像,默认使用所选VPC中已有的SWR和OBS终端节点,否则将会为您自动新建SWR和OBS终端节点。 |
enableAutopilot |
Boolean |
是否为Autopilot集群。 |
ipv6enable |
Boolean |
集群是否使用IPv6模式。Autopilot集群暂不支持。 |
hostNetwork |
AutopilotHostNetwork object |
节点网络参数,包含了虚拟私有云VPC和子网的ID信息,而VPC是集群内节点之间的通信依赖,所以是必选的参数集。 |
containerNetwork |
AutopilotContainerNetwork object |
容器网络参数,包含了容器网络类型和容器网段的信息。 |
eniNetwork |
AutopilotEniNetwork object |
云原生网络2.0网络配置。 |
serviceNetwork |
AutopilotServiceNetwork object |
服务网段参数,包含IPv4 CIDR。 |
authentication |
AutopilotAuthentication object |
集群认证方式相关配置。Autopilot集群暂不支持。 |
billingMode |
Integer |
集群的计费方式。
默认为“按需计费”。 |
kubernetesSvcIpRange |
String |
服务网段参数,kubernetes clusterIP取值范围。创建集群时如若未传参,默认为"10.247.0.0/16"。该参数废弃中,推荐使用新字段serviceNetwork,包含IPv4服务网段。 |
clusterTags |
Array of AutopilotResourceTag objects |
集群资源标签 |
kubeProxyMode |
String |
服务转发模式:
说明:
默认使用iptables转发模式。 |
az |
String |
可用区(仅查询返回字段)。 CCE支持的可用区请参考地区和终端节点 |
extendParam |
AutopilotClusterExtendParam object |
集群扩展字段,可配置多可用区集群、专属CCE集群,以及将集群创建在特定的企业项目下等。 |
configurationsOverride |
Array of AutopilotPackageConfiguration objects |
覆盖集群默认组件配置。Autopilot集群暂不支持。 |
参数 |
参数类型 |
描述 |
---|---|---|
vpc |
String |
用于创建控制节点的VPC的ID。 获取方法如下:
|
subnet |
String |
用于创建控制节点的subnet的网络ID。获取方法如下:
|
参数 |
参数类型 |
描述 |
---|---|---|
mode |
String |
容器网络类型
|
参数 |
参数类型 |
描述 |
---|---|---|
subnets |
Array of AutopilotNetworkSubnet objects |
ENI所在子网的IPv4子网ID列表。获取方法如下:
|
参数 |
参数类型 |
描述 |
---|---|---|
subnetID |
String |
用于创建控制节点和容器的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:
|
参数 |
参数类型 |
描述 |
---|---|---|
IPv4CIDR |
String |
kubernetes clusterIP IPv4 CIDR取值范围。创建集群时若未传参,默认为"10.247.0.0/16"。 |
参数 |
参数类型 |
描述 |
---|---|---|
key |
String |
Key值。
|
value |
String |
Value值。
|
参数 |
参数类型 |
描述 |
---|---|---|
enterpriseProjectId |
String |
集群所属的企业项目ID。
说明:
|
upgradefrom |
String |
记录集群通过何种升级方式升级到当前版本。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
组件名称 |
configurations |
Array of AutopilotConfigurationItem objects |
组件配置项 |
参数 |
参数类型 |
描述 |
---|---|---|
phase |
String |
集群状态,取值如下
|
jobID |
String |
任务ID,集群当前状态关联的任务ID。当前支持:
说明:
任务信息具有一定时效性,仅用于短期跟踪任务进度,请勿用于集群状态判断等额外场景。 |
reason |
String |
集群变为当前状态的原因,在集群在非“Available”状态下时,会返回此参数。 |
message |
String |
集群变为当前状态的原因的详细信息,在集群在非“Available”状态下时,会返回此参数。 |
endpoints |
Array of AutopilotClusterEndpoints objects |
集群中 kube-apiserver 的访问地址。 |
isLocked |
Boolean |
CBC资源锁定 |
lockScene |
String |
CBC资源锁定场景 |
lockSource |
String |
锁定资源 |
lockSourceId |
String |
锁定的资源ID |
deleteOption |
Object |
删除配置状态(仅删除请求响应包含) |
deleteStatus |
Object |
删除状态信息(仅删除请求响应包含) |
请求示例
仅更新集群描述
{ "spec" : { "description" : "new description" } }
响应示例
状态码: 200
表示更新指定集群成功。
{ "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "name" : "s00842745-128-3-r0", "uid" : "c82a7d44-1cc4-11ef-8460-0255ac101780", "creationTimestamp" : "2024-05-28 07:34:56.917029 +0000 UTC", "updateTimestamp" : "2024-06-04 13:12:35.749294 +0000 UTC", "labels" : { "FeatureGates" : "arpOptimization,elbv3,xGPU" }, "annotations" : { "enableAutopilot" : "true", "feature:supportNodePoolScaleGroup" : "true" }, "alias" : "s00842745-128-3-r0" }, "spec" : { "category" : "Turbo", "type" : "VirtualMachine", "flavor" : "cce.autopilot.cluster", "version" : "v1.28", "platformVersion" : "cce.3.0", "description" : "new description", "hostNetwork" : { "vpc" : "f9122377-7b2e-49c9-ab9e-bf0bfdd807b4", "subnet" : "6b757878-c428-4e76-a7e9-5e3853778d5d" }, "containerNetwork" : { "mode" : "eni" }, "eniNetwork" : { "eniSubnetId" : "b04a4b46-9f99-44a1-9a98-de52e549e68b", "subnets" : [ { "subnetID" : "b04a4b46-9f99-44a1-9a98-de52e549e68b" } ] }, "serviceNetwork" : { "IPv4CIDR" : "10.247.0.0/16" }, "authentication" : { "mode" : "rbac" }, "billingMode" : 0, "kubernetesSvcIpRange" : "10.247.0.0/16", "kubeProxyMode" : "iptables", "az" : "cn-north-7c", "extendParam" : { "enterpriseProjectId" : "5ebc44c1-617b-4d93-8d49-895b8a457a1f", "upgradefrom" : "" } }, "status" : { "phase" : "Available", "endpoints" : [ { "url" : "https://c82a7d44-1cc4-11ef-8460-0255ac101780.cluster.cce.cn-north-7.myhuaweicloud.com:5443", "type" : "Internal" } ] } }
SDK代码示例
SDK代码示例如下。
仅更新集群描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
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.*; public class UpdateAutopilotClusterSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); UpdateAutopilotClusterRequest request = new UpdateAutopilotClusterRequest(); request.withClusterId("{cluster_id}"); AutopilotClusterInformation body = new AutopilotClusterInformation(); AutopilotClusterInformationSpec specbody = new AutopilotClusterInformationSpec(); specbody.withDescription("new description"); body.withSpec(specbody); request.withBody(body); try { UpdateAutopilotClusterResponse response = client.updateAutopilotCluster(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()); } } } |
仅更新集群描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# coding: utf-8 import os 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__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateAutopilotClusterRequest() request.cluster_id = "{cluster_id}" specbody = AutopilotClusterInformationSpec( description="new description" ) request.body = AutopilotClusterInformation( spec=specbody ) response = client.update_autopilot_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
仅更新集群描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateAutopilotClusterRequest{} request.ClusterId = "{cluster_id}" descriptionSpec:= "new description" specbody := &model.AutopilotClusterInformationSpec{ Description: &descriptionSpec, } request.Body = &model.AutopilotClusterInformation{ Spec: specbody, } response, err := client.UpdateAutopilotCluster(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
表示更新指定集群成功。 |
错误码
请参见错误码。