创建ACK专有集群

ACK专有集群中,您需要创建至少3Master节点以保证高可用性,以及若干Worker节点,以对集群基础设施进行更细粒度的控制,但需要自行规划、维护、升级集群。本文介绍如何通过控制台、API、Terraform、SDK以及CLI等方式创建ACK专有集群

重要

容器服务 Kubernetes 版已于20240821日起停止ACK专有集群的创建。推荐您在生产环境中使用具有更高可靠性、安全性和调度效率的ACK托管集群Pro

准备工作

创建集群前,请确保您已经开通容器服务ACK、为您的阿里云账号或RAM账号授予了ACK系统服务角色(ACK需要这些权限来调用相关服务或执行集群操作),并且开通了相关云产品(例如VPC、负载均衡、NAT网关等)。具体操作,请参见快速创建ACK托管集群

说明

创建集群过程中涉及负载均衡CLB等按量资源的购买,请确保您的账户余额充足,避免因为欠费导致停机。

创建集群

ACK支持通过控制台、API、SDK、Terraform以及CLI方式创建集群。

控制台

步骤一:登录容器服务管理控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 在页面左侧顶部,选择目标资源所在的资源组和地域。image

  3. 集群列表页面,单击创建集群

步骤二:配置集群

单击ACK 专有集群页签,完成集群基础信息配置、网络配置和高级选项配置。

基础信息配置

配置项

描述

集群名称

自定义集群名称。

地域

集群资源(ECS实例、云盘等)所处地域。地域与用户和资源部署地域的距离越近,网络时延越低。

Kubernetes 版本

集群的Kubernetes版本,推荐使用最新版本。请参见ACK版本支持概览了解ACK的版本支持情况。

仅支持创建最近的三个Kubernetes次要版本的集群。
网络配置

配置项

描述

IPv6双栈

仅支持1.22及以上版本,仅支持Terway,不支持与eRDMA功能同时使用

集群同时支持IPv4IPv6协议,但Worker节点与控制面间的通信仍使用IPv4地址。需确保:

  • 集群VPC支持IPv6双栈。

  • 使用Terway共享ENI模式时,节点的实例规格需支持IPv6且支持的IPv4/IPv6地址数量相同。

专有网络

集群的专有网络VPC。为保障高可用,建议选择2个及以上不同可用区。

  • 自动创建:ACK在已选择的可用区下创建对应vSwitch。

  • 使用已有:选择vSwitch,指定集群的可用区,可新建或使用已有vSwitch。

云资源及计费说明:imageVPC

为专有网络配置 SNAT

使用共享VPC时请勿勾选

节点需访问公网(拉取公网镜像或访问外部服务)时勾选此项,ACK将自动配置NAT网关和SNAT规则,确保集群内资源可以访问公网。

  • VPC中没有NAT网关:ACK自动创建NAT网关,新购EIP,并为集群使用的vSwitch配置SNAT规则。

  • VPC已有NAT网关:ACK判断是否需要额外新购EIP以及配置SNAT规则。当无可用EIP时,将自动新购EIP;当不存在VPC级别的SNAT规则时,将为集群使用的vSwitch配置SNAT规则。

若不勾选,也可在创建集群后自行配置NAT网关和SNAT规则,请参见公网 NAT 网关

云资源及计费说明:imageNAT网关imageEIP

交换机

在列表中根据可用区选择已有vSwitch交换机,或单击创建虚拟交换机创建新的vSwitch。集群控制面与默认节点池将使用此处指定的vSwitch。推荐选择多个不同可用区的vSwitch,更好地保障集群高可用。

安全组

使用已有VPC时,支持使用选择已有安全组

安全组应用于集群控制面、默认节点池和未指定自定义安全组的节点池。

相较于普通安全组,企业级安全组可以容纳更多私网IP地址数量,但不支持组内互通功能,详细对比请参见安全组分类

  • 自动创建:出方向默认全部允许,入方向基于推荐配置放行。后续如需修改,请确保在入方向已放行100.64.0.0/10网段。

    该网段用于访问阿里云其他服务,以执行镜像拉取、查询ECS基础信息等操作。
  • 使用已有:ACK默认不会为安全组配置额外的访问规则。需自行管理安全组规则,以避免访问异常,请参见配置集群安全组

API server 访问

ACK自动新建一个按量付费的私网CLB实例作为API Server的内网连接端点。请勿删除该CLB实例,删除后API Server将无法访问且无法恢复。

若需使用已有CLB实例,请提交工单申请。选择使用已有专有网络后,可选择负载均衡来源使用已有

可选开启使用 EIP 暴露 API Server

  • 开放:为 API Server 私网 CLB 实例绑定EIP,支持从公网访问API Server,连接并管理集群。

    这并不代表集群内资源可以访问公网。如需让集群内资源访问公网,需勾选为专有网络配置 SNAT
  • 不开放:仅能在VPC内使用KubeConfig连接并操作集群。

如需后续启用,请参见实现从公网访问API Server
20241201日起,新建CLB实例不再支持包年包月付费类型,同时将新增收取实例费,请参见【产品公告】关于取消新增集群API Server负载均衡CLB包年包月付费的公告传统型负载均衡CLB计费项调整公告

云资源及计费说明:imageCLBimageEIP

网络插件

网络插件是集群中Pod之间网络通信的基础。

关于两者的详细对比,请参见容器网络插件TerwayFlannel对比
  • Flannel:社区开源的轻量级网络插件,在ACK中采用了与阿里云VPC深度集成的VPC专有网络模式,通过直接管理VPC路由表实现Pod间通信。

    • 适用场景:配置简单,资源消耗少,适用于节点规模较小(受VPC路由表配额限制)、需要简化网络配置、无需对容器网络进行自定义控制的场景。

  • Terway:阿里云自研的高性能网络插件,基于弹性网卡ENI实现Pod间通信。

    • 适用场景:提供基于eBPF的网络加速、NetworkPolicyPod级别的vSwitch及安全组等能力,适用于对节点规模、网络性能和安全等有较高需求的高性能计算、游戏、微服务等场景。

    • Pod数量限制:每个Pod占用ENI的一个辅助IP地址,单个ENI可分配的IP有限(取决于实例规格)。因此,节点上可运行的Pod数会受到节点的ENI和辅助IP的配额限制。

      使用共享VPC时,仅支持Terway。

    Terway还提供以下能力。

    详细能力介绍请参见使用Terway网络插件
    • DataPathV2

      仅支持在创建集群时配置

      开启DataPathv2加速模式,Terway将使用eBPF技术优化流量转发路径,为网络密集型应用提供更低的延迟和更高的吞吐量。

      仅支持Alibaba Cloud Linux 3(所有版本)、ContainerOS、Ubuntu,且Linux内核版本需为5.10及以上。详细介绍请参见网络加速

    • NetworkPolicy 支持

      公测中,请在配额平台申请

      支持Kubernetes原生的NetworkPolicy,以实现Pod间的“防火墙”,自定义精细的访问控制规则,以提升集群安全性。

    • Trunk ENI 支持

      允许为Pod配置独立的IP、vSwitch和安全组,适用于需要固定IP或需要对特定Pod进行独立网络策略管理的特殊业务场景,请参见Pod配置固定IP及独立虚拟交换机、安全组

容器网段

Flannel需要配置

Pod分配IP地址的地址池。此网段不能与VPCVPC内已有ACK集群使用的网段重叠,且不能与服务网段重叠。

节点 Pod 数量

Flannel需要配置

定义单个节点上可容纳的最大Pod数量。

Pod 交换机

仅在选择使用Terway插件时需要配置。

Pod分配IP的虚拟交换机。每个Pod虚拟交换机分别对应一个Worker节点的虚拟交换机,Pod虚拟交换机和Worker节点的虚拟交换机的可用区需保持一致。

重要

Pod虚拟交换机的网段掩码建议不超过19,最大不超过25,否则集群网络可分配的Pod IP地址非常有限,会影响集群的正常使用。

服务网段

Service CIDR,为集群内部Service分配IP地址的地址池。此网段不能与VPCVPC内已有集群使用的网段重复,且不能与容器网段重复。

IPv6 服务网段

需同时开启IPv6双栈

Service网段配置IPv6地址段。需使用ULA地址(fc00::/7范围内),地址前缀长度在/112~/120之间。推荐与服务网段的可用地址数量保持一致。

集群高级配置

展开高级选项(选填),配置集群服务转发模式。

配置项

描述

服务转发模式

选择kube-proxy代理模式,即集群Service如何将请求分发至后端Pod。

  • iptables:基于Linux防火墙规则实现流量转发,使用稳定但性能有限。Service数量增加时,防火墙规则也会成倍增长,导致请求处理变慢,适用于存在少量Service的集群。

  • IPVS:高性能的流量分发方案,采用哈希表方式快速定位目标Pod,处理大量Service请求时延时更低。适用于大规模生产集群或对网络性能要求较高的场景。

展开高级选项(选填),配置集群删除保护、资源组等信息。

展开查看高级选项

配置项

描述

集群删除保护

推荐开启,防止通过控制台或OpenAPI误删除集群。

资源组

将集群归属于选择的资源组,便于权限管理和成本分摊。

一个资源只能归属于一个资源组。

标签

为集群绑定键值对标签,作为云资源的标识。

时区

集群使用的时区。默认为浏览器配置的时区。

集群本地域名

集群内Service使用的顶级域名(标准后缀)。默认为cluster.local,也支持自定义域名。自定义本地域名时,请参见配置集群本地域名(ClusterDomain)有哪些注意事项?

例如,名为my-serviceService位于default命名空间中,其DNS域名为my-service.default.svc.cluster.local

自定义证书 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云盘自定义性能和加密能力

  • 支持自定义性能级别。云盘容量越大,可选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3),详情请参见容量范围与性能级别的关系

  • 系统盘中仅ESS云盘支持加密。选择密钥时,阿里云默认使用服务密钥(Default Service CMK)进行加密;您也可以选择在KMS服务中预先创建的自定义密钥(BYOK)进行加密。

支持选择配置更多系统盘类型,配置与系统盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。

云资源及计费说明:imageECS块存储

部署集

通过ECS控制台创建部署集后,为节点池指定部署集,使得节点池弹出的节点可分散部署在不同的物理服务器上,提升高可用性。

部署集默认支持的节点上限为20 * 可用区数量(可用区数量由vSwitch决定),节点池内最大节点数将受到限制,需确保部署集内配额充足。

后续如需启用,请参见节点池部署集最佳实践
高级选项

配置项

描述

实例元数据访问模式

仅支持1.28及以上版本的集群

配置 ECS 实例的元数据访问模式,在ECS实例内部通过访问元数据服务(Metadata Service)获取ECS实例元数据,包括实例ID、VPC信息、网卡信息等实例属性信息,详情请参见实例元数据

  • 普通模式和加固模式:支持使用普通模式和加固模式两种方式访问实例元数据服务。

  • 仅加固模式:仅支持使用加固模式访问实例元数据服务,请参见使用仅加固模式访问ECS实例元数据

步骤四:配置节点池

单击下一步:节点池配置,完成节点池基础选项配置和高级选项配置。

节点池基础配置

配置项

描述

节点池名称

自定义节点池名称。

容器运行时

如何选型,请参见containerd、安全沙箱、Docker运行时的对比

  • containerd(推荐):社区标准,支持1.20及以上版本。

  • 安全沙箱:提供基于轻量级虚拟化技术的强隔离环境,支持1.31及以下版本。

  • Docker(停止支持):仅支持1.22及以下版本,目前已不支持创建。

实例和镜像配置

配置项

描述

付费类型

节点池扩容节点时默认采用的付费类型。

  • 按量付费:可按需启用和释放。

  • 包年包月:需配置购买时长以及自动续费

  • 抢占式实例:目前仅支持具有保护期的抢占式实例。需同时配置单台实例上限价格

    当指定实例规格的实时价格低于单台实例的最高出价时,实例将成功创建。保护期(1小时)过后,系统将每5分钟检查一次实例规格的实时价格与库存。若市场价格高于出价或库存不足,抢占式实例将被释放。使用建议,请参见抢占式实例节点池最佳实践

为保证节点池统一,不支持将按量付费包年包月节点池修改为抢占式实例节点池,反之亦然。

实例相关的配置项

节点池扩容时,会从选定的ECS实例规格族中分配,选择更多可用区下的更多实例规格可提升节点扩容成功率,避免规格不可用或库存不足。具体扩容的实例规格由扩缩容策略决定。

  • 具体规格:根据vCPU、内存、规格族、架构等维度指定具体的实例规格。

  • 泛化配置:根据属性(vCPU、内存等)选择待使用或需排除的实例规格列表,进一步提升扩容成功率。请参见使用指定实例属性配置节点池

可参考控制台的弹性强度建议来配置,或在节点池创建后查看节点池弹性强度

关于ACK不支持的实例规格及节点配置建议,请参见ECS实例规格配置建议

云资源及计费说明:imageECS实例imageGPU实例

操作系统

云市场镜像处于灰度发布中。
后续如需升级或更换操作系统,请参见更换操作系统

安全加固

创建节点时,ACK会应用选择的安全基线策略。

  • 不开启:不对ECS实例进行安全加固。

  • 等保加固:阿里云为Alibaba Cloud Linux等保2.0三级版镜像提供了符合等保合规要求的基线检查标准和扫描工具。在确保原生镜像兼容性和性能的同时,进行了等保合规适配,满足《GB/T22239-2019信息安全技术网络安全等级保护基本要求》,详情请参见ACK等保加固使用说明

    但在此模式下,Root用户无法通过SSH远程登录。您可以通过ECS控制台通过VNC连接实例,并创建一个支持SSH登录的普通用户。

  • 阿里云 OS 加固:仅支持Alibaba Cloud Linux 2Alibaba Cloud Linux 3。

登录方式

  • 设置密钥:阿里云SSH密钥对是一种安全便捷的登录认证方式,由公钥和私钥组成,仅支持Linux实例。

    请同时配置登录名rootecs-user)和所需的密钥对

  • 设置密码:配置登录名rootecs-user)和密码。

存储配置

配置项

描述

系统盘

根据业务需求选择云盘类型,包括ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘),配置容量和IOPS等。

可用系统盘类型取决于所选的实例规格族。未展示的云盘类型即为不支持使用。

ESSD云盘自定义性能和加密能力

  • 支持自定义性能级别。云盘容量越大,可选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3),详情请参见容量范围与性能级别的关系

  • 系统盘中仅ESS云盘支持加密。选择密钥时,阿里云默认使用服务密钥(Default Service CMK)进行加密;您也可以选择在KMS服务中预先创建的自定义密钥(BYOK)进行加密。

支持选择配置更多系统盘类型,配置与系统盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。

云资源及计费说明:imageECS块存储

数据盘

根据业务需求选择云盘类型,包括ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘),配置容量和IOPS等。

可用数据盘类型取决于所选的实例规格族。未展示的云盘类型即为不支持使用。

ESSD AutoPL支持

  • 预配置性能:在存储容量大小不变的情况下,可根据实际业务需求灵活配置云盘的预配置性能,从而实现云盘容量与性能的解耦。

  • 性能突发:当业务面临突发的数据读写压力时,云盘会临时提升性能以应对峰值需求,直至业务恢复平稳。

ESSD云盘支持

支持自定义性能级别。云盘容量越大,可选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3),详情请参见容量范围与性能级别的关系

  • 挂载数据盘时,所有云盘类型均支持加密。选择密钥时,阿里云默认使用服务密钥(Default Service CMK)进行加密;您也可以选择在KMS服务中预先创建的自定义密钥(BYOK)进行加密。

  • 节点创建过程中,将自动格式化最后一块数据盘,并将/var/lib/container挂载到该数据盘,将/var/lib/kubelet/var/lib/containerd挂载到/var/lib/container

    如需自定义挂载目录,请调整数据盘的初始化配置,最多可选择一块数据盘作为容器运行时占用目录,详情请参见ACK节点池中数据盘可以自定义目录挂载吗?
  • 在需要容器镜像加速、大模型快速加载等场景下,还可以使用快照创建数据盘,提升系统的响应速度和处理能力。

您可以选择配置更多数据盘类型,配置与数据盘不同的磁盘类型,提高扩容成功率。创建节点时,ACK将根据指定的磁盘类型顺序,选择第一个匹配的类型。

一台ECS实例最多可挂载64块数据盘,不同实例规格支持挂载的最多云盘数量不同。对于实例规格支持挂载的云盘数量上限,可以通过DescribeInstanceTypes接口查询(DiskQuantity)。

云资源及计费说明:imageECS块存储

弹性临时盘

白名单功能,提交工单申请

弹性临时盘ECS实例提供高性能、高性价比的临时数据存储空间,适用于存放临时数据(如临时计算中间结果、缓存数据、临时文件等)、高性能计算(对IOPS和吞吐量要求较高)等场景。

仅支持在部分地域和部分ECS实例规格中使用,请参见地域限制实例规格限制

您可以选择是否对弹性临时盘进行初始化设置,自定义其挂载目录。

云资源及计费说明:imageECS块存储

实例数量配置

配置项

描述

期望节点数

节点池应该维持的总节点数量。建议至少配置2个节点,以确保集群组件正常运行。您可以通过调整期望节点数,达到扩容或缩容节点池的目的,请参见扩缩容节点池

如无需创建节点,可填写为0,后续再手动增加。
节点池高级配置

展开高级选项(选填),配置节点扩缩容策略。

配置项

描述

扩缩容策略

配置节点池在节点扩缩容时如何选择实例。

  • 优先级策略:按集群配置的vSwitch优先级(vSwitch顺序由上到下优先级递减)扩缩容。优先级较高的vSwitch所在可用区无法创建实例时,自动使用下一优先级vSwitch。

  • 成本优化策略:按vCPU单价从低到高扩缩容。

    节点池使用抢占式实例时,则抢占式实例优先。支持同时配置按量实例所占比例(%),当抢占式实例规格因库存等原因无法创建时,自动使用按量付费实例来补充。

  • 均衡分布策略:在且仅在多可用区场景下将ECS实例均匀分配至多可用区。如果由于库存不足等原因造成可用区分布不平衡,可再次进行均衡操作。

使用按量实例补充抢占式容量

需同时选择付费类型为抢占式实例。

开启后,如果因价格或库存等原因无法创建足够的抢占式实例,ACK将自动尝试创建按量实例作为补充。

云资源及计费说明:imageECS实例

开启抢占式实例补偿

需同时选择付费类型为抢占式实例。

开启后,当收到抢占式实例将被回收的系统消息时(即抢占式实例被回收前5分钟),ACK将尝试扩容新实例进行补偿。

  • 补偿成功:ACK对旧节点执行排水并从集群中移除。

  • 补偿失败:ACK不会对旧节点执行排水,到期实例仍然会在5分钟后被回收释放。当库存恢复或满足价格条件时,ACK将自动购买实例以保证期望节点数,详情请参见抢占式实例节点池最佳实践

抢占式实例的主动释放可能导致业务异常,为提高补偿成功率,建议同时开启使用按量实例补充抢占式容量

云资源及计费说明:imageECS实例

展开高级选项(选填),配置ECS标签、污点等信息。

置项

描述

ECS 标签

ACK自动创建的ECS实例添加标签,作为云资源标识。每台ECS最多可绑定20个标签。如需提高上限,请到配额平台提交申请。由于ACKESS会占用部分标签,您最多可为实例指定17个自定义标签。

展开查看标签占用说明

  • ACK默认占用两个ECS标签。

    • ack.aliyun.com:<您的集群ID>

    • ack.alibabacloud.com/nodepool-id:<您的节点池ID>

  • ESS默认占用1ECS标签:acs:autoscaling:scalingGroupId:<您的节点池伸缩组ID>

  • 开启节点自动伸缩后,弹性伸缩将默认占用两个ECS标签,因此节点池会额外占用两个ECS标签:k8s.io/cluster-autoscaler:truek8s.aliyun.com:true

  • 开启节点自动伸缩后,组件通过ECS标签记录节点的标签和污点,以预检测弹出节点的调度行为。

    • 节点的每个标签会被转为k8s.io/cluster-autoscaler/node-template/label/<标签键>:<标签值>

    • 节点的每个污点会被转为k8s.io/cluster-autoscaler/node-template/taint/<污点键>/<污点值>:<污点效果>

污点 (Taints)

为节点添加键值对污点。有效污点键包含前缀(可选)和名称。如果有前缀,用正斜线(/)分隔。

展开查看详细说明

  • :名称长度为1~63个字符,必须以字母、数字或字符[a-z0-9A-Z]开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

    如果指定前缀,必须为DNS子域,即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,并以正斜线(/)结尾。

  • :污点值可以为空,不超过63个字符,必须以字母、数字或字符[a-z0-9A-Z]开头和结尾,可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

  • Effect

    • NoSchedule:不接受任何新的、不容忍此污点的Pod被调度到该节点,但已在运行的Pod不受影响。

    • NoExecute:不仅不接受任何新的、不容忍此污点的Pod被调度到该节点,还会驱逐节点上任何已在运行的、不容忍此污点的Pod。

    • PreferNoSchedule:ACK会尽量避免将Pod调度到存在其不能容忍污点的节点上,但不会强制执行。

节点标签(Labels)

为节点添加键值对标签。有效Key包含前缀(可选)和名称。如有前缀,前缀和名称之间用正斜线(/)分隔。

展开查看详细说明

  • Key:名称长度为1~63个字符,必须以字母数字字符[a-z0-9A-Z]开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

    如果指定前缀,必须为DNS子域,即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,以正斜线(/)结尾。

    以下前缀由Kubernetes核心组件保留,不支持指定

    • kubernetes.io/

    • k8s.io/

    • kubernetes.io/k8s.io/结尾的前缀。例如test.kubernetes.io/

      以下除外:

      • kubelet.kubernetes.io/

      • node.kubernetes.io

      • kubelet.kubernetes.io/结尾的前缀。

      • node.kubernetes.io结尾的前缀。

  • Value:可以为空,不超过63个字符,必须以字母数字字符[a-z0-9A-Z]开头和结尾,可包含字母、数字、短划线(-)、下划线(_)和英文半角句号(.)。

设置为不可调度

新添加的节点注册到集群时默认会被设置为不可调度。需在节点列表手动调整节点调度状态

本配置仅对1.34以下版本集群生效,详情请参见Kubernetes 1.34版本说明

CPU Policy

指定kubelet节点的CPU管理策略

  • None:默认策略。

  • Static:允许为节点上具有某些资源特征的Pod赋予增强的CPU亲和性和独占性。

推荐使用自定义节点池kubelet配置

自定义节点名称

节点名称由前缀、节点IP地址及后缀三部分组成。开启后,节点名称、ECS实例名称、ECS实例Hostname也将发生变化。

例如,节点IP地址为192.XX.YY.55,指定前缀为aliyun.com,后缀为test。

  • Linux节点:节点名称、ECS实例、ECS实例Hostname均为aliyun.com192.XX.YY.55test。

  • Windows节点:其Hostname固定为IP地址,使用-代替IP地址中的.,且不包含前缀和后缀。

    因此,对应的ECS实例Hostname192-XX-YY-55,节点名称、ECS实例名称均为aliyun.com192.XX.YY.55test。

实例元数据访问模式

仅支持1.28及以上版本的集群

配置 ECS 实例的元数据访问模式,在ECS实例内部通过访问元数据服务(Metadata Service)获取ECS实例元数据,包括实例ID、VPC信息、网卡信息等实例属性信息,详情请参见实例元数据

  • 普通模式和加固模式:支持使用普通模式和加固模式两种方式访问实例元数据服务。

  • 仅加固模式:仅支持使用加固模式访问实例元数据服务,请参见使用仅加固模式访问ECS实例元数据

实例预自定义数据

节点加入集群前,将运行指定的实例预自定义User-Data脚本

例如,指定实例预自定义数据为echo "hello world",则节点实际运行脚本如下。

#!/bin/bash
echo "hello world"
[节点初始化脚本]
节点初始化时此配置的生效逻辑,请参见节点初始化流程介绍

实例自定义数据

节点加入集群后,将运行指定的实例自定义User-Data脚本

例如,指定实例自定义数据为echo "hello world",则节点实际运行脚本如下。

#!/bin/bash
[节点初始化脚本]
echo "hello world"
节点初始化时此配置的生效逻辑,请参见节点初始化流程介绍
创建集群或扩容节点成功不代表实例自定义脚本执行成功。可登录节点执行grep cloud-init /var/log/messages查看执行日志。

云监控插件

可在云监控控制台查看并监控节点和应用运行状态。

本配置仅对节点池中新增的节点生效,不对节点池存量节点生效。

已有节点如需启用,请通过云监控控制台安装。

云资源及计费说明:image云监控

公网 IP

ACK将为节点分配IPv4公网IP地址。

本配置仅对节点池中新增的节点生效,不对节点池存量节点生效。已有节点如需访问公网,需配置并绑定EIP,请参见EIP绑定至ECS实例

云资源及计费说明:imageECS公网

自定义安全组

为节点池指定普通安全组或企业级安全组。ACK默认不会为安全组配置额外的访问规则。需自行管理安全组规则,避免访问异常,请参见配置集群安全组

每台ECS实例支持加入的安全组存在上限,请确保安全组配额充足。

RDS 白名单

将节点IP添加至RDS实例的白名单。

步骤五:配置组件

单击下一步:组件配置,完成组件配置。

配置项

描述

Ingress

Ingress管理着集群外部访问集群内部服务的方式。如需将集群内应用或API暴露给公网访问时,则需安装。

目前提供三种实例作为集群 Ingress 入口网关。

ALB Ingress

将流量交由阿里云应用型负载均衡ALB处理,具备丰富的路由策略,与WAF等云产品深度集成,支持弹性伸缩,适用于大规模、高流量生产业务或有企业级可靠性需求的场景。

可新建ALB实例,也可使用(仅使用已有VPC时)当前VPC下未被其他集群关联的ALB实例。

如需后续启用,请参见创建ALB Ingress

云资源及计费说明:imageALB计费概述

Nginx Ingress

兼容社区版Nginx Ingress Controller并进行了优化。

可新建CLB实例,也可使用当前VPC下未被其他集群关联的CLB实例。

如需后续启用,请参见创建并使用Nginx Ingress对外暴露服务

云资源及计费说明:imageCLB

MSE Ingress

基于MSE云原生网关实现,提供服务治理、认证鉴权、灰度发布等高级能力,适用于需要对微服务流量进行精细化管控的场景。

可新建MSE云原生网关实例,也可使用(仅使用已有VPC时)当前VPC下未被其他集群关联的实例。

如需后续启用,请参见通过MSE Ingress访问容器服务

云资源及计费说明:image普通实例计费概述

关于三者的详细对比,请参见Ingress管理

服务发现

安装NodeLocal DNSCache,在节点上缓存DNS解析结果,以提升域名解析性能和稳定性,加速集群内部的服务间调用。

存储插件

基于CSI存储插件实现数据的持久化存储,可使用阿里云云盘、NAS、OSS、CPFS等存储卷资源。

选择默认创建NASCNFS后,ACK会默认创建通用型NAS文件系统并使用容器网络文件系统CNFS进行管理。

云资源及计费说明:imageNAS

容器监控

您可以使用阿里云Prometheus查看集群预先配置的监控大盘和监控性能指标。更多信息,请参见阿里云Prometheus监控

日志服务

使用已有SLS Project或新建一个SLS Project,用于收集集群应用日志。

同时将启用集群API Server审计功能,收集对Kubernetes API的请求以及请求结果。

如需后续启用,请参见采集ACK集群容器日志使用集群API Server审计功能

云资源及计费说明:imageSLS

集群巡检

启用智能运维的集群巡检功能,定期扫描集群内配额、资源水位、组件版本等,确保集群配置符合最佳实践,并提前暴露潜在风险。

步骤六:确认配置和计费信息

单击下一步:确认配置

确认配置页面,确认集群的配置信息,包括功能配置、资源计费、云产品依赖检查等,并阅读服务协议。

您可以在创建页面下方查看集群涉及的费用总览,也可以查看ACK和各产品的计费文档,请参见计费概述云产品资源费用

说明

一个包含多节点的集群创建时间约为十分钟。

您还可以在确认配置页面的右上角单击同等代码,生成当前集群配置对应的TerraformSDK示例参数。

API

调试入口

CreateCluster调试入口

请求示例

创建一个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专有集群时,该参数必须配置为Kubernetes

"cluster_type": "Kubernetes"

Terraform

具体操作,请参见通过Terraform创建ACK专有集群

SDK

具体操作,请参见Java SDK调用示例

CLI

具体操作,请参见通过CLI创建ACK集群

相关操作

  • 查看集群基本信息

    集群列表页面的操作列,单击详情,然后单击基本信息连接信息页签,查看集群的基本信息和连接信息。其中:

    • API Server 公网端点:KubernetesAPI Server对公网提供服务的地址和端口,可以通过此服务在用户终端使用kubectl等工具管理集群。

      绑定公网IP解绑公网IP功能:

      • 绑定公网IP:您可以选择在已有EIP列表中绑定EIP或者新建EIP。

        绑定公网IP操作会导致API Server短暂重启,请避免在此期间操作集群。

      • 解绑公网IP:解绑公网IP后您将无法通过公网访问API Server。

        解绑公网IP操作会导致API Server短暂重启,请避免在此期间操作集群。

    • API Server 内网端点:KubernetesAPI Server对集群内部提供服务的地址和端口,此IP为负载均衡的地址。

  • 查看集群日志信息

    您可以单击操作列的更多>运维管理>查看日志,进入日志中心页面查看集群的日志信息。

  • 查看集群节点信息

    您可以获取集群KubeConfig并通过kubectl工具连接集群,执行kubectl get node查看集群的节点信息。

配额与限制

如集群规模较大或账号资源较多,请遵循使用ACK集群时涉及的配额与限制。详细信息,请参见配额与限制

  • 使用限制:包括ACK配置限制(例如账号余额等)单集群容量限制(单集群内不同Kubernetes资源的最大容量)。

  • 配额限制与提升方式:ACK集群配额限制和ACK依赖云产品(例如ECS、VPC等)的配额限制。如需提升配额,请参见文档获取提升方式。