网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

创建集群

更新时间:2024-12-25 GMT+08:00
分享

功能介绍

该API用于创建一个空集群(即只有控制节点Master,没有工作节点Node)。

说明:
  • 集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径。

接口约束

调用CCE接口创建集群之前,请检查是否已满足如下条件:

  • 创建集群之前,您必须先确保已存在虚拟私有云,否则无法创建集群。若您已有虚拟私有云,可重复使用,无需重复创建。虚拟私有云为CCE集群提供一个隔离的、用户自主配置和管理的虚拟网络环境。若您没有虚拟私有云,请先进行创建,详情请参见创建VPC

  • 创建集群之前,请提前规划好服务网段。容器隧道网络模式的集群在创建之后,无法修改网段参数;vpc网络模式/云原生网络模式的集群在创建后可以新增网段参数/子网参数,不可修改已有网段参数/子网参数,需要重新创建集群才能调整,请谨慎选择。

  • 请确保已正确创建委托,并确保委托未被删除,委托校验失败将导致集群创建失败。建议登录CCE控制台,如没有创建委托,会提示您创建,如已经创建则无提示。

  • 默认情况下,一个账户只能创建5个集群(每个Region下),如果您需要创建更多的集群,请申请增加配额。详情请参见如何申请扩大配额

调用方法

请参见如何调用API

URI

POST /autopilot/v3/projects/{project_id}/clusters

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

项目ID,获取方式请参见如何获取接口URI中参数

约束限制:

不涉及

取值范围:

账号的项目ID

默认取值:

不涉及

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

参数解释:

消息体的类型(格式)

约束限制:

GET方法不做校验

取值范围:

  • application/json

  • application/json;charset=utf-8

  • application/x-pem-file

  • multipart/form-data(注:存在FormData参数时使用)

默认取值:

不涉及

X-Auth-Token

String

参数解释:

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

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表3 请求Body参数

参数

是否必选

参数类型

描述

kind

String

API类型,固定值“Cluster”或“cluster”,该值不可修改。

apiVersion

String

API版本,固定值“v3”,该值不可修改。

metadata

AutopilotClusterMetadata object

集群的基本信息,为集合类的元素类型,包含一组由不同名称定义的属性。

spec

AutopilotClusterSpec object

spec是集合类的元素类型,您对需要管理的集群对象进行详细描述的主体部分都在spec中给出。CCE通过spec的描述来创建或更新对象。

status

AutopilotClusterStatus object

集合类的元素类型,用于记录对象在系统中的当前状态信息,包含了集群状态和本次创建集群作业的jobID

表4 AutopilotClusterMetadata

参数

是否必选

参数类型

描述

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"
}
说明:
  • Annotations不用于标识和选择对象。Annotations中的元数据可以是small或large,structured或unstructured,并且可以包括标签不允许使用的字符。

  • 该字段不会被数据库保存,当前仅用于指定集群待安装插件。

labels

Map<String,String>

集群标签,key/value对格式。

说明:

该字段值由系统自动生成,用于升级时前端识别集群支持的特性开关,用户指定无效。

creationTimestamp

String

集群创建时间

updateTimestamp

String

集群更新时间

表5 AutopilotClusterSpec

参数

是否必选

参数类型

描述

category

String

集群类别。Autopilot集群仅支持Turbo类型。

type

String

集群Master节点架构:

  • VirtualMachine:Master节点为x86架构服务器

flavor

String

集群规格,cce.autopilot.cluster

version

String

集群版本,与Kubernetes社区基线版本保持一致,建议选择最新版本。

在CCE控制台支持创建三种最新版本的集群。可登录CCE控制台创建集群,在“版本”处获取到集群版本。

其它集群版本,当前仍可通过api创建,但后续会逐渐下线,具体下线策略请关注CCE官方公告。

说明:
  • 若不配置,默认创建最新版本的集群。

platformVersion

String

CCE集群平台版本号,表示集群版本(version)下的内部版本。用于跟踪某一集群版本内的迭代,集群版本内唯一,跨集群版本重新计数。不支持用户指定,集群创建时自动选择对应集群版本的最新平台版本。

platformVersion格式为:cce.X.Y

  • X: 表示内部特性版本。集群版本中特性或者补丁修复,或者OS支持等变更场景。其值从1开始单调递增。

  • Y: 表示内部特性版本的补丁版本。仅用于特性版本上线后的软件包更新,不涉及其他修改。其值从0开始单调递增。

description

String

集群描述,对于集群使用目的的描述,可根据实际情况自定义,默认为空。集群创建成功后可通过接口更新指定的集群来做出修改,也可在CCE控制台中对应集群的“集群详情”下的“描述”处进行修改。仅支持utf-8编码。

customSan

Array of strings

集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。Autopilot集群暂不支持。

  1. 不允许出现同名重复。

  2. 格式符合IP和域名格式。

示例:

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

集群的计费方式。

  • 0: 按需计费

默认为“按需计费”。

kubernetesSvcIpRange

String

服务网段参数,kubernetes clusterIP取值范围。创建集群时如若未传参,默认为"10.247.0.0/16"。该参数废弃中,推荐使用新字段serviceNetwork,包含IPv4服务网段。

clusterTags

Array of AutopilotResourceTag objects

集群资源标签

kubeProxyMode

String

服务转发模式:

  • iptables:社区传统的kube-proxy模式,完全以iptables规则的方式来实现service负载均衡。该方式最主要的问题是在服务多的时候产生太多的iptables规则,非增量式更新会引入一定的时延,大规模情况下有明显的性能问题。

说明:

默认使用iptables转发模式。

az

String

可用区(仅查询返回字段)。

CCE支持的可用区请参考地区和终端节点

extendParam

AutopilotClusterExtendParam object

集群扩展字段,可配置多可用区集群、专属CCE集群,以及将集群创建在特定的企业项目下等。

configurationsOverride

Array of AutopilotPackageConfiguration objects

覆盖集群默认组件配置。Autopilot集群暂不支持。

表6 AutopilotHostNetwork

参数

是否必选

参数类型

描述

vpc

String

用于创建控制节点的VPC的ID。

获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,在虚拟私有云的详情页面查找VPC ID。

  • 方法2:通过虚拟私有云服务的API接口查询。

    链接请参见查询VPC列表

subnet

String

用于创建控制节点的subnet的网络ID。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找网络ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表7 AutopilotContainerNetwork

参数

是否必选

参数类型

描述

mode

String

容器网络类型

  • eni:云原生网络2.0,深度整合VPC原生ENI弹性网卡能力,采用VPC网段分配容器地址,支持ELB直通容器,享有高性能,创建集群时指定。

表8 AutopilotEniNetwork

参数

是否必选

参数类型

描述

subnets

Array of AutopilotNetworkSubnet objects

ENI所在子网的IPv4子网ID列表。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找IPv4子网ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表9 AutopilotNetworkSubnet

参数

是否必选

参数类型

描述

subnetID

String

用于创建控制节点和容器的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找IPv4子网ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表10 AutopilotServiceNetwork

参数

是否必选

参数类型

描述

IPv4CIDR

String

kubernetes clusterIP IPv4 CIDR取值范围。创建集群时若未传参,默认为"10.247.0.0/16"。

表11 AutopilotAuthentication

参数

是否必选

参数类型

描述

mode

String

集群认证模式。默认取值为“rbac”。

表12 AutopilotResourceTag

参数

是否必选

参数类型

描述

key

String

Key值。

  • 不能为空,最多支持128个字符

  • 可用UTF-8格式表示的汉字、字母、数字和空格

  • 支持部分特殊字符:_.:/=+-@

  • 不能以"_sys_"开头

value

String

Value值。

  • 可以为空但不能缺省,最多支持255个字符

  • 可用UTF-8格式表示的汉字、字母、数字和空格

  • 支持部分特殊字符:_.:/=+-@

表13 AutopilotClusterExtendParam

参数

是否必选

参数类型

描述

enterpriseProjectId

String

集群所属的企业项目ID。

说明:
  • 需要开通企业项目功能后才可配置企业项目。

upgradefrom

String

记录集群通过何种升级方式升级到当前版本。

表14 AutopilotPackageConfiguration

参数

是否必选

参数类型

描述

name

String

组件名称

configurations

Array of AutopilotConfigurationItem objects

组件配置项

表15 AutopilotConfigurationItem

参数

是否必选

参数类型

描述

name

String

组件配置项名称

value

Object

组件配置项值

表16 AutopilotClusterStatus

参数

是否必选

参数类型

描述

phase

String

集群状态,取值如下

  • Available:可用,表示集群处于正常状态。

  • Unavailable:不可用,表示集群异常,需手动删除。

  • ScalingUp:扩容中,表示集群正处于扩容过程中。

  • ScalingDown:缩容中,表示集群正处于缩容过程中。

  • Creating:创建中,表示集群正处于创建过程中。

  • Deleting:删除中,表示集群正处于删除过程中。

  • Upgrading:升级中,表示集群正处于升级过程中。

  • Resizing:规格变更中,表示集群正处于变更规格中。

  • ResizeFailed:规格变更异常,表示集群变更规格异常。

  • RollingBack:回滚中,表示集群正处于回滚过程中。

  • RollbackFailed:回滚异常,表示集群回滚异常。

  • Hibernating:休眠中,表示集群正处于休眠过程中。

  • Hibernation:已休眠,表示集群正处于休眠状态。

  • Freezing:冻结中,表示集群正处于冻结过程中。

  • Frozen:已冻结,表示集群正处于冻结状态。

  • UnFreezing:解冻中,表示集群正处于解冻过程中。

  • Awaking:唤醒中,表示集群正处于从休眠状态唤醒的过程中。

  • Empty:集群无任何资源(已废弃)

  • Error:错误,表示集群资源异常,可尝试手动删除。

jobID

String

任务ID,集群当前状态关联的任务ID。当前支持:

  • 创建集群时返回关联的任务ID,可通过任务ID查询创建集群的附属任务信息;

  • 删除集群或者删除集群失败时返回关联的任务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

删除状态信息(仅删除请求响应包含)

表17 AutopilotClusterEndpoints

参数

是否必选

参数类型

描述

url

String

集群中 kube-apiserver 的访问地址

type

String

集群访问地址的类型

  • Internal:用户子网内访问的地址

  • External:公网访问的地址

响应参数

状态码: 201

表18 响应Body参数

参数

参数类型

描述

kind

String

API类型,固定值“Cluster”或“cluster”,该值不可修改。

apiVersion

String

API版本,固定值“v3”,该值不可修改。

metadata

AutopilotClusterMetadata object

集群的基本信息,为集合类的元素类型,包含一组由不同名称定义的属性。

spec

AutopilotClusterSpec object

spec是集合类的元素类型,您对需要管理的集群对象进行详细描述的主体部分都在spec中给出。CCE通过spec的描述来创建或更新对象。

status

AutopilotClusterStatus object

集合类的元素类型,用于记录对象在系统中的当前状态信息,包含了集群状态和本次创建集群作业的jobID

表19 AutopilotClusterMetadata

参数

参数类型

描述

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"
}
说明:
  • Annotations不用于标识和选择对象。Annotations中的元数据可以是small或large,structured或unstructured,并且可以包括标签不允许使用的字符。

  • 该字段不会被数据库保存,当前仅用于指定集群待安装插件。

labels

Map<String,String>

集群标签,key/value对格式。

说明:

该字段值由系统自动生成,用于升级时前端识别集群支持的特性开关,用户指定无效。

creationTimestamp

String

集群创建时间

updateTimestamp

String

集群更新时间

表20 AutopilotClusterSpec

参数

参数类型

描述

category

String

集群类别。Autopilot集群仅支持Turbo类型。

type

String

集群Master节点架构:

  • VirtualMachine:Master节点为x86架构服务器

flavor

String

集群规格,cce.autopilot.cluster

version

String

集群版本,与Kubernetes社区基线版本保持一致,建议选择最新版本。

在CCE控制台支持创建三种最新版本的集群。可登录CCE控制台创建集群,在“版本”处获取到集群版本。

其它集群版本,当前仍可通过api创建,但后续会逐渐下线,具体下线策略请关注CCE官方公告。

说明:
  • 若不配置,默认创建最新版本的集群。

platformVersion

String

CCE集群平台版本号,表示集群版本(version)下的内部版本。用于跟踪某一集群版本内的迭代,集群版本内唯一,跨集群版本重新计数。不支持用户指定,集群创建时自动选择对应集群版本的最新平台版本。

platformVersion格式为:cce.X.Y

  • X: 表示内部特性版本。集群版本中特性或者补丁修复,或者OS支持等变更场景。其值从1开始单调递增。

  • Y: 表示内部特性版本的补丁版本。仅用于特性版本上线后的软件包更新,不涉及其他修改。其值从0开始单调递增。

description

String

集群描述,对于集群使用目的的描述,可根据实际情况自定义,默认为空。集群创建成功后可通过接口更新指定的集群来做出修改,也可在CCE控制台中对应集群的“集群详情”下的“描述”处进行修改。仅支持utf-8编码。

customSan

Array of strings

集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。Autopilot集群暂不支持。

  1. 不允许出现同名重复。

  2. 格式符合IP和域名格式。

示例:

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

集群的计费方式。

  • 0: 按需计费

默认为“按需计费”。

kubernetesSvcIpRange

String

服务网段参数,kubernetes clusterIP取值范围。创建集群时如若未传参,默认为"10.247.0.0/16"。该参数废弃中,推荐使用新字段serviceNetwork,包含IPv4服务网段。

clusterTags

Array of AutopilotResourceTag objects

集群资源标签

kubeProxyMode

String

服务转发模式:

  • iptables:社区传统的kube-proxy模式,完全以iptables规则的方式来实现service负载均衡。该方式最主要的问题是在服务多的时候产生太多的iptables规则,非增量式更新会引入一定的时延,大规模情况下有明显的性能问题。

说明:

默认使用iptables转发模式。

az

String

可用区(仅查询返回字段)。

CCE支持的可用区请参考地区和终端节点

extendParam

AutopilotClusterExtendParam object

集群扩展字段,可配置多可用区集群、专属CCE集群,以及将集群创建在特定的企业项目下等。

configurationsOverride

Array of AutopilotPackageConfiguration objects

覆盖集群默认组件配置。Autopilot集群暂不支持。

表21 AutopilotHostNetwork

参数

参数类型

描述

vpc

String

用于创建控制节点的VPC的ID。

获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,在虚拟私有云的详情页面查找VPC ID。

  • 方法2:通过虚拟私有云服务的API接口查询。

    链接请参见查询VPC列表

subnet

String

用于创建控制节点的subnet的网络ID。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找网络ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表22 AutopilotContainerNetwork

参数

参数类型

描述

mode

String

容器网络类型

  • eni:云原生网络2.0,深度整合VPC原生ENI弹性网卡能力,采用VPC网段分配容器地址,支持ELB直通容器,享有高性能,创建集群时指定。

表23 AutopilotEniNetwork

参数

参数类型

描述

subnets

Array of AutopilotNetworkSubnet objects

ENI所在子网的IPv4子网ID列表。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找IPv4子网ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表24 AutopilotNetworkSubnet

参数

参数类型

描述

subnetID

String

用于创建控制节点和容器的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:

  • 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找IPv4子网ID。

  • 方法2:通过虚拟私有云服务的查询子网列表接口查询。

    链接请参见查询子网列表

表25 AutopilotServiceNetwork

参数

参数类型

描述

IPv4CIDR

String

kubernetes clusterIP IPv4 CIDR取值范围。创建集群时若未传参,默认为"10.247.0.0/16"。

表26 AutopilotAuthentication

参数

参数类型

描述

mode

String

集群认证模式。默认取值为“rbac”。

表27 AutopilotResourceTag

参数

参数类型

描述

key

String

Key值。

  • 不能为空,最多支持128个字符

  • 可用UTF-8格式表示的汉字、字母、数字和空格

  • 支持部分特殊字符:_.:/=+-@

  • 不能以"_sys_"开头

value

String

Value值。

  • 可以为空但不能缺省,最多支持255个字符

  • 可用UTF-8格式表示的汉字、字母、数字和空格

  • 支持部分特殊字符:_.:/=+-@

表28 AutopilotClusterExtendParam

参数

参数类型

描述

enterpriseProjectId

String

集群所属的企业项目ID。

说明:
  • 需要开通企业项目功能后才可配置企业项目。

upgradefrom

String

记录集群通过何种升级方式升级到当前版本。

表29 AutopilotPackageConfiguration

参数

参数类型

描述

name

String

组件名称

configurations

Array of AutopilotConfigurationItem objects

组件配置项

表30 AutopilotConfigurationItem

参数

参数类型

描述

name

String

组件配置项名称

value

Object

组件配置项值

表31 AutopilotClusterStatus

参数

参数类型

描述

phase

String

集群状态,取值如下

  • Available:可用,表示集群处于正常状态。

  • Unavailable:不可用,表示集群异常,需手动删除。

  • ScalingUp:扩容中,表示集群正处于扩容过程中。

  • ScalingDown:缩容中,表示集群正处于缩容过程中。

  • Creating:创建中,表示集群正处于创建过程中。

  • Deleting:删除中,表示集群正处于删除过程中。

  • Upgrading:升级中,表示集群正处于升级过程中。

  • Resizing:规格变更中,表示集群正处于变更规格中。

  • ResizeFailed:规格变更异常,表示集群变更规格异常。

  • RollingBack:回滚中,表示集群正处于回滚过程中。

  • RollbackFailed:回滚异常,表示集群回滚异常。

  • Hibernating:休眠中,表示集群正处于休眠过程中。

  • Hibernation:已休眠,表示集群正处于休眠状态。

  • Freezing:冻结中,表示集群正处于冻结过程中。

  • Frozen:已冻结,表示集群正处于冻结状态。

  • UnFreezing:解冻中,表示集群正处于解冻过程中。

  • Awaking:唤醒中,表示集群正处于从休眠状态唤醒的过程中。

  • Empty:集群无任何资源(已废弃)

  • Error:错误,表示集群资源异常,可尝试手动删除。

jobID

String

任务ID,集群当前状态关联的任务ID。当前支持:

  • 创建集群时返回关联的任务ID,可通过任务ID查询创建集群的附属任务信息;

  • 删除集群或者删除集群失败时返回关联的任务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

删除状态信息(仅删除请求响应包含)

表32 AutopilotClusterEndpoints

参数

参数类型

描述

url

String

集群中 kube-apiserver 的访问地址

type

String

集群访问地址的类型

  • Internal:用户子网内访问的地址

  • External:公网访问的地址

请求示例

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

/autopilot/v3/projects/{project_id}/clusters

{
  "kind" : "Cluster",
  "apiVersion" : "v3",
  "metadata" : {
    "name" : "test-cluster-autopilot",
    "annotations" : {
      "cluster.install.addons/install" : "[{\"addonTemplateName\":\"coredns\",\"values\":{\"flavor\":{\"category\":[\"Autopilot\"],\"is_default\":true,\"name\":\"autopilot-flavor1\",\"replicas\":2,\"resources\":[{\"limitsCpu\":1,\"limitsMem\":\"2Gi\",\"name\":\"coredns\",\"requestsCpu\":1,\"requestsMem\":\"2Gi\"}]}}},{\"addonTemplateName\":\"metrics-server\",\"values\":{\"flavor\":{\"category\":[\"Autopilot\"],\"description\":\"custom resources in autopilot cluster\",\"is_default\":true,\"name\":\"autopilot-flavor1\",\"replicas\":2,\"resources\":[{\"limitsCpu\":1,\"limitsMem\":\"2Gi\",\"name\":\"metrics-server\",\"requestsCpu\":1,\"requestsMem\":\"2Gi\"}]}}}]"
    }
  },
  "spec" : {
    "category" : "Turbo",
    "flavor" : "cce.autopilot.cluster",
    "type" : "VirtualMachine",
    "version" : "v1.28",
    "hostNetwork" : {
      "vpc" : "c6549063-d459-4ae1-9550-b5fec6741b0f",
      "subnet" : "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    },
    "extendParam" : {
      "enterpriseProjectId" : "0"
    },
    "containerNetwork" : {
      "mode" : "eni"
    },
    "description" : "",
    "billingMode" : 0,
    "eniNetwork" : {
      "subnets" : [ {
        "subnetID" : "186f9322-50c5-4e5a-91e3-47da86959afc"
      } ]
    },
    "enableSWRImageAccess" : true,
    "enableSnat" : true,
    "serviceNetwork" : {
      "IPv4CIDR" : "10.247.0.0/16"
    }
  }
}

响应示例

状态码: 201

表示创建集群作业下发成功。

{
  "kind" : "Cluster",
  "apiVersion" : "v3",
  "metadata" : {
    "name" : "test-cluster-autopilot",
    "uid" : "e18f8b25-2270-11ef-a160-0255ac100100",
    "creationTimestamp" : "2024-06-04 12:49:28.773718231 +0000 UTC",
    "updateTimestamp" : "2024-06-04 12:49:28.773718305 +0000 UTC",
    "annotations" : {
      "jobid" : "e1c49157-2270-11ef-a160-0255ac100100",
      "resourceJobId" : "e18fa26f-2270-11ef-a160-0255ac100100"
    }
  },
  "spec" : {
    "category" : "Turbo",
    "type" : "VirtualMachine",
    "flavor" : "cce.autopilot.cluster",
    "version" : "v1.28",
    "platformVersion" : "cce.4.0",
    "hostNetwork" : {
      "vpc" : "c6549063-d459-4ae1-9550-b5fec6741b0f",
      "subnet" : "3b18c2d5-b352-4f59-b421-c2d2d48a1333"
    },
    "containerNetwork" : {
      "mode" : "eni"
    },
    "eniNetwork" : {
      "subnets" : [ {
        "subnetID" : "186f9322-50c5-4e5a-91e3-47da86959afc"
      } ]
    },
    "serviceNetwork" : {
      "IPv4CIDR" : "10.247.0.0/16"
    },
    "authentication" : {
      "mode" : "rbac"
    },
    "billingMode" : 0,
    "kubernetesSvcIpRange" : "10.247.0.0/16",
    "kubeProxyMode" : "iptables",
    "extendParam" : {
      "enterpriseProjectId" : "0"
    },
    "enableSWRImageAccess" : true,
    "enableSnat" : true
  },
  "status" : {
    "phase" : "Creating",
    "jobID" : "e1c49157-2270-11ef-a160-0255ac100100"
  }
}

SDK代码示例

SDK代码示例如下。

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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;
import java.util.Map;
import java.util.HashMap;

public class CreateAutopilotClusterSolution {

    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();
        CreateAutopilotClusterRequest request = new CreateAutopilotClusterRequest();
        AutopilotCluster body = new AutopilotCluster();
        AutopilotClusterExtendParam extendParamSpec = new AutopilotClusterExtendParam();
        extendParamSpec.withEnterpriseProjectId("0");
        AutopilotServiceNetwork serviceNetworkSpec = new AutopilotServiceNetwork();
        serviceNetworkSpec.withIpv4CIDR("10.247.0.0/16");
        List<AutopilotNetworkSubnet> listEniNetworkSubnets = new ArrayList<>();
        listEniNetworkSubnets.add(
            new AutopilotNetworkSubnet()
                .withSubnetID("186f9322-50c5-4e5a-91e3-47da86959afc")
        );
        AutopilotEniNetwork eniNetworkSpec = new AutopilotEniNetwork();
        eniNetworkSpec.withSubnets(listEniNetworkSubnets);
        AutopilotContainerNetwork containerNetworkSpec = new AutopilotContainerNetwork();
        containerNetworkSpec.withMode(AutopilotContainerNetwork.ModeEnum.fromValue("eni"));
        AutopilotHostNetwork hostNetworkSpec = new AutopilotHostNetwork();
        hostNetworkSpec.withVpc("c6549063-d459-4ae1-9550-b5fec6741b0f")
            .withSubnet("xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
        AutopilotClusterSpec specbody = new AutopilotClusterSpec();
        specbody.withCategory(AutopilotClusterSpec.CategoryEnum.fromValue("Turbo"))
            .withType(AutopilotClusterSpec.TypeEnum.fromValue("VirtualMachine"))
            .withFlavor("cce.autopilot.cluster")
            .withVersion("v1.28")
            .withDescription("")
            .withEnableSnat(true)
            .withEnableSWRImageAccess(true)
            .withHostNetwork(hostNetworkSpec)
            .withContainerNetwork(containerNetworkSpec)
            .withEniNetwork(eniNetworkSpec)
            .withServiceNetwork(serviceNetworkSpec)
            .withBillingMode(0)
            .withExtendParam(extendParamSpec);
        Map<String, String> listMetadataAnnotations = new HashMap<>();
        listMetadataAnnotations.put("cluster.install.addons/install", "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]");
        AutopilotClusterMetadata metadatabody = new AutopilotClusterMetadata();
        metadatabody.withName("test-cluster-autopilot")
            .withAnnotations(listMetadataAnnotations);
        body.withSpec(specbody);
        body.withMetadata(metadatabody);
        body.withApiVersion("v3");
        body.withKind("Cluster");
        request.withBody(body);
        try {
            CreateAutopilotClusterResponse response = client.createAutopilotCluster(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());
        }
    }
}

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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 = CreateAutopilotClusterRequest()
        extendParamSpec = AutopilotClusterExtendParam(
            enterprise_project_id="0"
        )
        serviceNetworkSpec = AutopilotServiceNetwork(
            i_pv4_cidr="10.247.0.0/16"
        )
        listSubnetsEniNetwork = [
            AutopilotNetworkSubnet(
                subnet_id="186f9322-50c5-4e5a-91e3-47da86959afc"
            )
        ]
        eniNetworkSpec = AutopilotEniNetwork(
            subnets=listSubnetsEniNetwork
        )
        containerNetworkSpec = AutopilotContainerNetwork(
            mode="eni"
        )
        hostNetworkSpec = AutopilotHostNetwork(
            vpc="c6549063-d459-4ae1-9550-b5fec6741b0f",
            subnet="xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        )
        specbody = AutopilotClusterSpec(
            category="Turbo",
            type="VirtualMachine",
            flavor="cce.autopilot.cluster",
            version="v1.28",
            description="",
            enable_snat=True,
            enable_swr_image_access=True,
            host_network=hostNetworkSpec,
            container_network=containerNetworkSpec,
            eni_network=eniNetworkSpec,
            service_network=serviceNetworkSpec,
            billing_mode=0,
            extend_param=extendParamSpec
        )
        listAnnotationsMetadata = {
            "cluster.install.addons/install": "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]"
        }
        metadatabody = AutopilotClusterMetadata(
            name="test-cluster-autopilot",
            annotations=listAnnotationsMetadata
        )
        request.body = AutopilotCluster(
            spec=specbody,
            metadata=metadatabody,
            api_version="v3",
            kind="Cluster"
        )
        response = client.create_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)

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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.CreateAutopilotClusterRequest{}
	enterpriseProjectIdExtendParam:= "0"
	extendParamSpec := &model.AutopilotClusterExtendParam{
		EnterpriseProjectId: &enterpriseProjectIdExtendParam,
	}
	iPv4CIDRServiceNetwork:= "10.247.0.0/16"
	serviceNetworkSpec := &model.AutopilotServiceNetwork{
		IPv4CIDR: &iPv4CIDRServiceNetwork,
	}
	var listSubnetsEniNetwork = []model.AutopilotNetworkSubnet{
        {
            SubnetID: "186f9322-50c5-4e5a-91e3-47da86959afc",
        },
    }
	eniNetworkSpec := &model.AutopilotEniNetwork{
		Subnets: listSubnetsEniNetwork,
	}
	containerNetworkSpec := &model.AutopilotContainerNetwork{
		Mode: model.GetAutopilotContainerNetworkModeEnum().ENI,
	}
	hostNetworkSpec := &model.AutopilotHostNetwork{
		Vpc: "c6549063-d459-4ae1-9550-b5fec6741b0f",
		Subnet: "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	}
	categorySpec:= model.GetAutopilotClusterSpecCategoryEnum().TURBO
	typeSpec:= model.GetAutopilotClusterSpecTypeEnum().VIRTUAL_MACHINE
	versionSpec:= "v1.28"
	descriptionSpec:= ""
	enableSnatSpec:= true
	enableSWRImageAccessSpec:= true
	billingModeSpec:= int32(0)
	specbody := &model.AutopilotClusterSpec{
		Category: &categorySpec,
		Type: &typeSpec,
		Flavor: "cce.autopilot.cluster",
		Version: &versionSpec,
		Description: &descriptionSpec,
		EnableSnat: &enableSnatSpec,
		EnableSWRImageAccess: &enableSWRImageAccessSpec,
		HostNetwork: hostNetworkSpec,
		ContainerNetwork: containerNetworkSpec,
		EniNetwork: eniNetworkSpec,
		ServiceNetwork: serviceNetworkSpec,
		BillingMode: &billingModeSpec,
		ExtendParam: extendParamSpec,
	}
	var listAnnotationsMetadata = map[string]string{
        "cluster.install.addons/install": "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]",
    }
	metadatabody := &model.AutopilotClusterMetadata{
		Name: "test-cluster-autopilot",
		Annotations: listAnnotationsMetadata,
	}
	request.Body = &model.AutopilotCluster{
		Spec: specbody,
		Metadata: metadatabody,
		ApiVersion: "v3",
		Kind: "Cluster",
	}
	response, err := client.CreateAutopilotCluster(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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;
import java.util.Map;
import java.util.HashMap;

public class CreateAutopilotClusterSolution {

    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();
        CreateAutopilotClusterRequest request = new CreateAutopilotClusterRequest();
        AutopilotCluster body = new AutopilotCluster();
        AutopilotClusterExtendParam extendParamSpec = new AutopilotClusterExtendParam();
        extendParamSpec.withEnterpriseProjectId("0");
        AutopilotServiceNetwork serviceNetworkSpec = new AutopilotServiceNetwork();
        serviceNetworkSpec.withIpv4CIDR("10.247.0.0/16");
        List<AutopilotNetworkSubnet> listEniNetworkSubnets = new ArrayList<>();
        listEniNetworkSubnets.add(
            new AutopilotNetworkSubnet()
                .withSubnetID("186f9322-50c5-4e5a-91e3-47da86959afc")
        );
        AutopilotEniNetwork eniNetworkSpec = new AutopilotEniNetwork();
        eniNetworkSpec.withSubnets(listEniNetworkSubnets);
        AutopilotContainerNetwork containerNetworkSpec = new AutopilotContainerNetwork();
        containerNetworkSpec.withMode(AutopilotContainerNetwork.ModeEnum.fromValue("eni"));
        AutopilotHostNetwork hostNetworkSpec = new AutopilotHostNetwork();
        hostNetworkSpec.withVpc("c6549063-d459-4ae1-9550-b5fec6741b0f")
            .withSubnet("xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
        AutopilotClusterSpec specbody = new AutopilotClusterSpec();
        specbody.withCategory(AutopilotClusterSpec.CategoryEnum.fromValue("Turbo"))
            .withType(AutopilotClusterSpec.TypeEnum.fromValue("VirtualMachine"))
            .withFlavor("cce.autopilot.cluster")
            .withVersion("v1.28")
            .withDescription("")
            .withEnableSnat(true)
            .withEnableSWRImageAccess(true)
            .withHostNetwork(hostNetworkSpec)
            .withContainerNetwork(containerNetworkSpec)
            .withEniNetwork(eniNetworkSpec)
            .withServiceNetwork(serviceNetworkSpec)
            .withBillingMode(0)
            .withExtendParam(extendParamSpec);
        Map<String, String> listMetadataAnnotations = new HashMap<>();
        listMetadataAnnotations.put("cluster.install.addons/install", "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]");
        AutopilotClusterMetadata metadatabody = new AutopilotClusterMetadata();
        metadatabody.withName("test-cluster-autopilot")
            .withAnnotations(listMetadataAnnotations);
        body.withSpec(specbody);
        body.withMetadata(metadatabody);
        body.withApiVersion("v3");
        body.withKind("Cluster");
        request.withBody(body);
        try {
            CreateAutopilotClusterResponse response = client.createAutopilotCluster(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());
        }
    }
}

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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 = CreateAutopilotClusterRequest()
        extendParamSpec = AutopilotClusterExtendParam(
            enterprise_project_id="0"
        )
        serviceNetworkSpec = AutopilotServiceNetwork(
            i_pv4_cidr="10.247.0.0/16"
        )
        listSubnetsEniNetwork = [
            AutopilotNetworkSubnet(
                subnet_id="186f9322-50c5-4e5a-91e3-47da86959afc"
            )
        ]
        eniNetworkSpec = AutopilotEniNetwork(
            subnets=listSubnetsEniNetwork
        )
        containerNetworkSpec = AutopilotContainerNetwork(
            mode="eni"
        )
        hostNetworkSpec = AutopilotHostNetwork(
            vpc="c6549063-d459-4ae1-9550-b5fec6741b0f",
            subnet="xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        )
        specbody = AutopilotClusterSpec(
            category="Turbo",
            type="VirtualMachine",
            flavor="cce.autopilot.cluster",
            version="v1.28",
            description="",
            enable_snat=True,
            enable_swr_image_access=True,
            host_network=hostNetworkSpec,
            container_network=containerNetworkSpec,
            eni_network=eniNetworkSpec,
            service_network=serviceNetworkSpec,
            billing_mode=0,
            extend_param=extendParamSpec
        )
        listAnnotationsMetadata = {
            "cluster.install.addons/install": "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]"
        }
        metadatabody = AutopilotClusterMetadata(
            name="test-cluster-autopilot",
            annotations=listAnnotationsMetadata
        )
        request.body = AutopilotCluster(
            spec=specbody,
            metadata=metadatabody,
            api_version="v3",
            kind="Cluster"
        )
        response = client.create_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)

创建一个v1.28版本的Autopilot集群,计费模式为按需计费,。

 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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.CreateAutopilotClusterRequest{}
	enterpriseProjectIdExtendParam:= "0"
	extendParamSpec := &model.AutopilotClusterExtendParam{
		EnterpriseProjectId: &enterpriseProjectIdExtendParam,
	}
	iPv4CIDRServiceNetwork:= "10.247.0.0/16"
	serviceNetworkSpec := &model.AutopilotServiceNetwork{
		IPv4CIDR: &iPv4CIDRServiceNetwork,
	}
	var listSubnetsEniNetwork = []model.AutopilotNetworkSubnet{
        {
            SubnetID: "186f9322-50c5-4e5a-91e3-47da86959afc",
        },
    }
	eniNetworkSpec := &model.AutopilotEniNetwork{
		Subnets: listSubnetsEniNetwork,
	}
	containerNetworkSpec := &model.AutopilotContainerNetwork{
		Mode: model.GetAutopilotContainerNetworkModeEnum().ENI,
	}
	hostNetworkSpec := &model.AutopilotHostNetwork{
		Vpc: "c6549063-d459-4ae1-9550-b5fec6741b0f",
		Subnet: "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	}
	categorySpec:= model.GetAutopilotClusterSpecCategoryEnum().TURBO
	typeSpec:= model.GetAutopilotClusterSpecTypeEnum().VIRTUAL_MACHINE
	versionSpec:= "v1.28"
	descriptionSpec:= ""
	enableSnatSpec:= true
	enableSWRImageAccessSpec:= true
	billingModeSpec:= int32(0)
	specbody := &model.AutopilotClusterSpec{
		Category: &categorySpec,
		Type: &typeSpec,
		Flavor: "cce.autopilot.cluster",
		Version: &versionSpec,
		Description: &descriptionSpec,
		EnableSnat: &enableSnatSpec,
		EnableSWRImageAccess: &enableSWRImageAccessSpec,
		HostNetwork: hostNetworkSpec,
		ContainerNetwork: containerNetworkSpec,
		EniNetwork: eniNetworkSpec,
		ServiceNetwork: serviceNetworkSpec,
		BillingMode: &billingModeSpec,
		ExtendParam: extendParamSpec,
	}
	var listAnnotationsMetadata = map[string]string{
        "cluster.install.addons/install": "[{"addonTemplateName":"coredns","values":{"flavor":{"category":["Autopilot"],"is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"coredns","requestsCpu":1,"requestsMem":"2Gi"}]}}},{"addonTemplateName":"metrics-server","values":{"flavor":{"category":["Autopilot"],"description":"custom resources in autopilot cluster","is_default":true,"name":"autopilot-flavor1","replicas":2,"resources":[{"limitsCpu":1,"limitsMem":"2Gi","name":"metrics-server","requestsCpu":1,"requestsMem":"2Gi"}]}}}]",
    }
	metadatabody := &model.AutopilotClusterMetadata{
		Name: "test-cluster-autopilot",
		Annotations: listAnnotationsMetadata,
	}
	request.Body = &model.AutopilotCluster{
		Spec: specbody,
		Metadata: metadatabody,
		ApiVersion: "v3",
		Kind: "Cluster",
	}
	response, err := client.CreateAutopilotCluster(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

201

表示创建集群作业下发成功。

错误码

请参见错误码

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容