在ACK专有集群中,您需要创建至少3个Master节点以保证高可用性,以及若干Worker节点,以对集群基础设施进行更细粒度的控制,但需要自行规划、维护、升级集群。本文介绍如何通过控制台、API、Terraform、SDK以及CLI等方式创建ACK专有集群。
容器服务 Kubernetes 版已于2024年08月21日起停止ACK专有集群的创建。推荐您在生产环境中使用具有更高可靠性、安全性和调度效率的ACK托管集群Pro版。
如需创建ACK托管集群Pro版,请参见创建ACK托管集群。
如需将ACK专有集群迁移至ACK托管集群Pro版,请参见热迁移ACK专有集群至ACK托管集群Pro版。
准备工作
创建集群前,请确保您已经开通容器服务ACK、为您的阿里云账号或RAM账号授予了ACK系统服务角色(ACK需要这些权限来调用相关服务或执行集群操作),并且开通了相关云产品(例如VPC、负载均衡、NAT网关等)。具体操作,请参见快速创建ACK托管集群。
创建集群过程中涉及负载均衡CLB等按量资源的购买,请确保您的账户余额充足,避免因为欠费导致停机。
创建集群
ACK支持通过控制台、API、SDK、Terraform以及CLI方式创建集群。
控制台
步骤一:登录容器服务管理控制台
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在集群列表页面,单击创建集群。
步骤二:配置集群
单击ACK 专有集群页签,完成集群基础信息配置、网络配置和高级选项配置。
基础信息配置
配置项 | 描述 |
集群名称 | 自定义集群名称。 |
地域 | 集群资源(ECS实例、云盘等)所处地域。地域与用户和资源部署地域的距离越近,网络时延越低。 |
Kubernetes 版本 | 集群的Kubernetes版本,推荐使用最新版本。请参见ACK版本支持概览了解ACK的版本支持情况。 仅支持创建最近的三个Kubernetes次要版本的集群。 |
网络配置
配置项 | 描述 |
IPv6双栈 | |
专有网络 | 集群的专有网络VPC。为保障高可用,建议选择2个及以上不同可用区。
云资源及计费说明: |
为专有网络配置 SNAT | 使用共享VPC时请勿勾选 节点需访问公网(拉取公网镜像或访问外部服务)时勾选此项,ACK将自动配置NAT网关和SNAT规则,确保集群内资源可以访问公网。
若不勾选,也可在创建集群后自行配置NAT网关和SNAT规则,请参见公网 NAT 网关。 |
交换机 | 在列表中根据可用区选择已有vSwitch交换机,或单击创建虚拟交换机创建新的vSwitch。集群控制面与默认节点池将使用此处指定的vSwitch。推荐选择多个不同可用区的vSwitch,更好地保障集群高可用。 |
安全组 | |
API server 访问 | ACK自动新建一个按量付费的私网CLB实例作为API Server的内网连接端点。请勿删除该CLB实例,删除后API Server将无法访问且无法恢复。 若需使用已有CLB实例,请提交工单申请。选择使用已有的专有网络后,可选择负载均衡来源为使用已有。 可选开启使用 EIP 暴露 API Server。
如需后续启用,请参见实现从公网访问API Server。 自2024年12月01日起,新建CLB实例不再支持包年包月付费类型,同时将新增收取实例费,请参见【产品公告】关于取消新增集群API Server负载均衡CLB包年包月付费的公告、传统型负载均衡CLB计费项调整公告。 |
网络插件 | 网络插件是集群中Pod之间网络通信的基础。 关于两者的详细对比,请参见容器网络插件Terway与Flannel对比。
|
容器网段 | 仅Flannel需要配置 为Pod分配IP地址的地址池。此网段不能与VPC及VPC内已有ACK集群使用的网段重叠,且不能与服务网段重叠。 |
节点 Pod 数量 | 仅Flannel需要配置 定义单个节点上可容纳的最大Pod数量。 |
Pod 交换机 | 仅在选择使用Terway插件时需要配置。 为Pod分配IP的虚拟交换机。每个Pod虚拟交换机分别对应一个Worker节点的虚拟交换机,Pod虚拟交换机和Worker节点的虚拟交换机的可用区需保持一致。 重要 Pod虚拟交换机的网段掩码建议不超过19,最大不超过25,否则集群网络可分配的Pod IP地址非常有限,会影响集群的正常使用。 |
服务网段 | 即Service CIDR,为集群内部Service分配IP地址的地址池。此网段不能与VPC及VPC内已有集群使用的网段重复,且不能与容器网段重复。 |
IPv6 服务网段 | 需同时开启IPv6双栈 为Service网段配置IPv6地址段。需使用ULA地址( |
集群高级配置
展开高级选项(选填),配置集群服务转发模式。
配置项 | 描述 |
服务转发模式 | 选择kube-proxy代理模式,即集群Service如何将请求分发至后端Pod。
|
展开高级选项(选填),配置集群删除保护、资源组等信息。
展开查看高级选项
配置项 | 描述 |
集群删除保护 | 推荐开启,防止通过控制台或OpenAPI误删除集群。 |
资源组 | 将集群归属于选择的资源组,便于权限管理和成本分摊。 一个资源只能归属于一个资源组。 |
标签 | 为集群绑定键值对标签,作为云资源的标识。 |
时区 | 集群使用的时区。默认为浏览器配置的时区。 |
集群本地域名 | 集群内Service使用的顶级域名(标准后缀)。默认为 例如,名为my-service的Service位于default命名空间中,其DNS域名为 |
自定义证书 SAN | API Server证书中SAN(Subject Alternative Name)字段默认包括集群本地域名、内网IP、公网EIP等字段。如需通过代理服务器、自定义域名或特殊网络环境访问集群,需将这些访问地址添加到SAN字段中。 如需后续启用,请参见自定义集群API Server证书SAN。 |
服务账户令牌卷投影 | 传统模式下Pod的身份凭证永久有效且多个Pod共享,存在安全风险。启用后,每个Pod将获得专属的临时身份凭证,且支持配置自动过期和权限限制。 如需后续启用,请参见使用ServiceAccount Token卷投影。 |
节点服务端口范围 | 创建NodePort类型的Service时,可用的端口范围。 |
集群 CA | 启用后,可以将CA证书添加到集群中,加强服务端和客户端之间信息交互的安全性。 |
步骤三:配置Master节点
单击下一步:Master 配置,完成Master节点配置。
配置项 | 描述 |
Master实例数量 | 指定可用区内部署Master节点的数量。 |
付费类型 | 支持按量付费和包年包月两种付费类型。选择包年包月时,需设置购买时长和是否启用自动续费。 |
实例规格 | 选择Master节点的实例规格族。您可以参见选择Master节点规格获取配置建议。 |
系统盘 | 根据业务需求选择云盘类型,包括ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘),配置容量和IOPS等。 可用系统盘类型取决于所选的实例规格族。未展示的云盘类型即为不支持使用。 ESSD云盘自定义性能和加密能力
支持选择配置更多系统盘类型,配置与系统盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。 云资源及计费说明: |
部署集 | 通过ECS控制台创建部署集后,为节点池指定部署集,使得节点池弹出的节点可分散部署在不同的物理服务器上,提升高可用性。 部署集默认支持的节点上限为 后续如需启用,请参见节点池部署集最佳实践。 |
高级选项
配置项 | 描述 |
实例元数据访问模式 | 仅支持1.28及以上版本的集群 配置 ECS 实例的元数据访问模式,在ECS实例内部通过访问元数据服务(Metadata Service)获取ECS实例元数据,包括实例ID、VPC信息、网卡信息等实例属性信息,详情请参见实例元数据。
|
步骤四:配置节点池
单击下一步:节点池配置,完成节点池基础选项配置和高级选项配置。
节点池基础配置
配置项 | 描述 |
节点池名称 | 自定义节点池名称。 |
容器运行时 | 如何选型,请参见containerd、安全沙箱、Docker运行时的对比。
|
实例和镜像配置
配置项 | 描述 | |
付费类型 | 节点池扩容节点时默认采用的付费类型。
为保证节点池统一,不支持将按量付费、包年包月节点池修改为抢占式实例节点池,反之亦然。 | |
实例相关的配置项 | 节点池扩容时,会从选定的ECS实例规格族中分配,选择更多可用区下的更多实例规格可提升节点扩容成功率,避免规格不可用或库存不足。具体扩容的实例规格由扩缩容策略决定。
可参考控制台的弹性强度建议来配置,或在节点池创建后查看节点池弹性强度。 关于ACK不支持的实例规格及节点配置建议,请参见ECS实例规格配置建议。 | |
操作系统 | 云市场镜像处于灰度发布中。
后续如需升级或更换操作系统,请参见更换操作系统。 | |
安全加固 | 创建节点时,ACK会应用选择的安全基线策略。
| |
登录方式 |
|
存储配置
配置项 | 描述 | |
系统盘 | 根据业务需求选择云盘类型,包括ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘),配置容量和IOPS等。 可用系统盘类型取决于所选的实例规格族。未展示的云盘类型即为不支持使用。 ESSD云盘自定义性能和加密能力
支持选择配置更多系统盘类型,配置与系统盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。 云资源及计费说明: | |
数据盘 | 根据业务需求选择云盘类型,包括ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘),配置容量和IOPS等。 可用数据盘类型取决于所选的实例规格族。未展示的云盘类型即为不支持使用。 ESSD AutoPL支持
ESSD云盘支持 支持自定义性能级别。云盘容量越大,可选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3),详情请参见容量范围与性能级别的关系。
您可以选择配置更多数据盘类型,配置与数据盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。 一台ECS实例最多可挂载64块数据盘,不同实例规格支持挂载的最多云盘数量不同。对于实例规格支持挂载的云盘数量上限,可以通过DescribeInstanceTypes接口查询(DiskQuantity)。 云资源及计费说明: | |
弹性临时盘 | 白名单功能,提交工单申请 弹性临时盘为ECS实例提供高性能、高性价比的临时数据存储空间,适用于存放临时数据(如临时计算中间结果、缓存数据、临时文件等)、高性能计算(对IOPS和吞吐量要求较高)等场景。 仅支持在部分地域和部分ECS实例规格中使用,请参见地域限制、实例规格限制。 您可以选择是否对弹性临时盘进行初始化设置,自定义其挂载目录。 云资源及计费说明: |
实例数量配置
配置项 | 描述 |
期望节点数 | 节点池应该维持的总节点数量。建议至少配置2个节点,以确保集群组件正常运行。您可以通过调整期望节点数,达到扩容或缩容节点池的目的,请参见扩缩容节点池。 如无需创建节点,可填写为0,后续再手动增加。 |
节点池高级配置
展开高级选项(选填),配置节点扩缩容策略。
配置项 | 描述 |
扩缩容策略 | 配置节点池在节点扩缩容时如何选择实例。
|
使用按量实例补充抢占式容量 | 需同时选择付费类型为抢占式实例。 开启后,如果因价格或库存等原因无法创建足够的抢占式实例,ACK将自动尝试创建按量实例作为补充。 云资源及计费说明: |
开启抢占式实例补偿 | 需同时选择付费类型为抢占式实例。 开启后,当收到抢占式实例将被回收的系统消息时(即抢占式实例被回收前5分钟),ACK将尝试扩容新实例进行补偿。
抢占式实例的主动释放可能导致业务异常,为提高补偿成功率,建议同时开启使用按量实例补充抢占式容量。 云资源及计费说明: |
展开高级选项(选填),配置ECS标签、污点等信息。
置项 | 描述 |
ECS 标签 | 为ACK自动创建的ECS实例添加标签,作为云资源标识。每台ECS最多可绑定20个标签。如需提高上限,请到配额平台提交申请。由于ACK和ESS会占用部分标签,您最多可为实例指定17个自定义标签。 展开查看标签占用说明
|
污点 (Taints) | 为节点添加键值对污点。有效污点键包含前缀(可选)和名称。如果有前缀,用正斜线(/)分隔。 展开查看详细说明
|
节点标签(Labels) | 为节点添加键值对标签。有效Key包含前缀(可选)和名称。如有前缀,前缀和名称之间用正斜线(/)分隔。 展开查看详细说明
|
设置为不可调度 | 新添加的节点注册到集群时默认会被设置为不可调度。需在节点列表手动调整节点调度状态。 本配置仅对1.34以下版本集群生效,详情请参见Kubernetes 1.34版本说明。 |
CPU Policy | 指定kubelet节点的CPU管理策略。 推荐使用自定义节点池kubelet配置。 |
自定义节点名称 | 节点名称由前缀、节点IP地址及后缀三部分组成。开启后,节点名称、ECS实例名称、ECS实例Hostname也将发生变化。 例如,节点IP地址为192.XX.YY.55,指定前缀为aliyun.com,后缀为test。
|
实例元数据访问模式 | 仅支持1.28及以上版本的集群 配置 ECS 实例的元数据访问模式,在ECS实例内部通过访问元数据服务(Metadata Service)获取ECS实例元数据,包括实例ID、VPC信息、网卡信息等实例属性信息,详情请参见实例元数据。
|
实例预自定义数据 | 节点加入集群前,将运行指定的实例预自定义User-Data脚本。 例如,指定实例预自定义数据为
节点初始化时此配置的生效逻辑,请参见节点初始化流程介绍。 |
实例自定义数据 | 节点加入集群后,将运行指定的实例自定义User-Data脚本。 例如,指定实例自定义数据为
节点初始化时此配置的生效逻辑,请参见节点初始化流程介绍。 创建集群或扩容节点成功不代表实例自定义脚本执行成功。可登录节点执行 |
云监控插件 | |
公网 IP | ACK将为节点分配IPv4公网IP地址。 本配置仅对节点池中新增的节点生效,不对节点池存量节点生效。已有节点如需访问公网,需配置并绑定EIP,请参见将EIP绑定至ECS实例。 云资源及计费说明: |
自定义安全组 | 为节点池指定普通安全组或企业级安全组。ACK默认不会为安全组配置额外的访问规则。需自行管理安全组规则,避免访问异常,请参见配置集群安全组。 每台ECS实例支持加入的安全组存在上限,请确保安全组配额充足。 |
RDS 白名单 | 将节点IP添加至RDS实例的白名单。 |
步骤五:配置组件
单击下一步:组件配置,完成组件配置。
配置项 | 描述 | ||||||
Ingress | Ingress管理着集群外部访问集群内部服务的方式。如需将集群内应用或API暴露给公网访问时,则需安装。 目前提供三种实例作为集群 Ingress 入口网关。
关于三者的详细对比,请参见Ingress管理。 | ||||||
服务发现 | 安装NodeLocal DNSCache,在节点上缓存DNS解析结果,以提升域名解析性能和稳定性,加速集群内部的服务间调用。 | ||||||
存储插件 | 基于CSI存储插件实现数据的持久化存储,可使用阿里云云盘、NAS、OSS、CPFS等存储卷资源。 选择默认创建NAS和CNFS后,ACK会默认创建通用型NAS文件系统并使用容器网络文件系统CNFS进行管理。 云资源及计费说明: | ||||||
容器监控 | 您可以使用阿里云Prometheus查看集群预先配置的监控大盘和监控性能指标。更多信息,请参见阿里云Prometheus监控。 | ||||||
日志服务 | 使用已有SLS Project或新建一个SLS Project,用于收集集群应用日志。 同时将启用集群API Server审计功能,收集对Kubernetes API的请求以及请求结果。 如需后续启用,请参见采集ACK集群容器日志、使用集群API Server审计功能。
云资源及计费说明: | ||||||
集群巡检 | 启用智能运维的集群巡检功能,定期扫描集群内配额、资源水位、组件版本等,确保集群配置符合最佳实践,并提前暴露潜在风险。 |
API
调试入口
请求示例
创建一个ACK专有集群的请求示例如下,完整的参数说明请参见CreateCluster - 创建集群。
POST /clusters
<公共请求头>
{
"cluster_type": "Kubernetes", //指定集群的类型为ACK专有集群。#required
"name": "ACK专有集群",
"region_id": "cn-hongkong", //集群所属地域为香港地域。#required
"kubernetes_version": "1.32.1-aliyun.1", //创建的集群版本,建议选择最新版本。
"snat_entry": true, // 为专有网络配置SNAT规则,以开启集群公网访问。
"endpoint_public_access": false, //集群不开启API server公网访问。
"cloud_monitor_flags": false, //集群不安装云监控组件。
"deletion_protection": false, //未开启集群删除保护。
"proxy_mode": "ipvs", //选择高性能的kube-proxy代理模式IPVS。
"timezone": "Asia/Shanghai",
"tags": [],
"addons": [ //安装的集群组件。
{
"name": "terway-eniip", //集群的网络类型为Terway方式。集群创建后不可修改。
"config": "{\"IPVlan\":\"false\",\"NetworkPolicy\":\"false\",\"ENITrunking\":\"false\"}"
},
{
"name": "csi-plugin"
},
{
"name": "csi-provisioner"
},
{
"name": "storage-operator",
"config": "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"false\"}"
},
{
"name": "nginx-ingress-controller",
"disabled": true
}
],
"node_port_range": "30000-32767",
"pod_vswitch_ids": [ //Terway网络类型的集群,需要指定Pod所在的虚拟交换,因为Pod独占一个机器IP。
"vsw-j6cwz95vspl56gl******",
"vsw-j6c1tgut51ude2v******"
],
"login_password": "******",
"charge_type": "PostPaid",
"master_instance_charge_type": "PostPaid",
"cpu_policy": "none",
"service_account_issuer": "https://kubernetes.default.svc",
"api_audiences": "https://kubernetes.default.svc",
"master_count": 3, //设置Master节点数量为3。
"master_vswitch_ids": [ //设置Master节点的交换机列表。
"vsw-j6cwz95vspl56gl******",
"vsw-j6c1tgut51ude2v******",
"vsw-j6c1tgut51ude2v******"
],
"master_instance_types": [ //设置Master节点的实例规格。
"ecs.u1-c1m2.xlarge",
"ecs.c7.xlarge",
"ecs.c7.xlarge"
],
"master_system_disk_category": "cloud_essd", //Master节点系统盘选择ESSD云盘。
"master_system_disk_size": 120, //设置系统盘大小为120 GiB。
"master_system_disk_performance_level": "PL1", //系统盘单盘IOPS性能上限为5万。
"vpcid": "vpc-j6c6njo385se80n******", //集群的专有网络ID须在网络规划时确定,创建后不可修改。#required
"worker_vswitch_ids": [
"vsw-j6cwz95vspl56gl******",
"vsw-j6c1tgut51ude2v******"
],
"is_enterprise_security_group": true,
"ip_stack": "ipv4",
"service_cidr": "172.16.xx.xx/16",
"nodepools": [
{
"nodepool_info": {
"name": "default-nodepool"
},
"scaling_group": {
"system_disk_category": "cloud_essd",
"system_disk_size": 120,
"system_disk_performance_level": "PL0",
"system_disk_encrypted": false,
"data_disks": [
{
"category": "cloud_auto",
"size": 200,
"encrypted": "false",
"bursting_enabled": false
}
],
"tags": [],
"soc_enabled": false,
"security_hardening_os": false,
"vswitch_ids": [
"vsw-j6cwz95vspl56gl******",
"vsw-j6c1tgut51ude2v******"
],
"instance_types": [
"ecs.g6.xlarge"
],
"instance_patterns": [],
"login_password": "******",
"instance_charge_type": "PostPaid",
"security_group_ids": [],
"platform": "AliyunLinux",
"image_id": "aliyun_3_x64_20G_alibase_20241218.vhd",
"image_type": "AliyunLinux3",
"desired_size": 3, //创建一个期望节点数为3的节点池。
"multi_az_policy": "BALANCE"
},
"kubernetes_config": {
"cpu_policy": "none",
"cms_enabled": false,
"unschedulable": false,
"runtime": "containerd", //设置容器运行时为containerd 1.6.36。集群创建后不可修改。
"runtime_version": "1.6.36"
}
}
]
}
重点参数说明
在调用CreateCluster接口创建ACK专有集群时,您需要重点关注如下参数的差异化配置:
参数 | 描述 | 配置示例 |
cluster_type | 集群类型。创建ACK专有集群时,该参数必须配置为 | "cluster_type": "Kubernetes" |
Terraform
具体操作,请参见通过Terraform创建ACK专有集群。
SDK
具体操作,请参见Java SDK调用示例。
CLI
具体操作,请参见通过CLI创建ACK集群。
相关操作
查看集群基本信息
在集群列表页面的操作列,单击详情,然后单击基本信息和连接信息页签,查看集群的基本信息和连接信息。其中:
API Server 公网端点:Kubernetes的API Server对公网提供服务的地址和端口,可以通过此服务在用户终端使用kubectl等工具管理集群。
绑定公网IP和解绑公网IP功能:
绑定公网IP:您可以选择在已有EIP列表中绑定EIP或者新建EIP。
绑定公网IP操作会导致API Server短暂重启,请避免在此期间操作集群。
解绑公网IP:解绑公网IP后您将无法通过公网访问API Server。
解绑公网IP操作会导致API Server短暂重启,请避免在此期间操作集群。
API Server 内网端点:Kubernetes的API Server对集群内部提供服务的地址和端口,此IP为负载均衡的地址。
查看集群日志信息
您可以单击操作列的更多>运维管理>查看日志,进入日志中心页面查看集群的日志信息。
查看集群节点信息
您可以获取集群KubeConfig并通过kubectl工具连接集群,执行
kubectl get node
查看集群的节点信息。
配额与限制
如集群规模较大或账号资源较多,请遵循使用ACK集群时涉及的配额与限制。详细信息,请参见配额与限制。
使用限制:包括ACK配置限制(例如账号余额等)和单集群容量限制(单集群内不同Kubernetes资源的最大容量)。
配额限制与提升方式:ACK集群配额限制和ACK依赖云产品(例如ECS、VPC等)的配额限制。如需提升配额,请参见文档获取提升方式。