ACK的节点池及托管节点池中的节点默认不具备自动伸缩能力,您也可以通过使用Terraform工具创建开启自动伸缩功能的节点池。本文介绍如何通过Terraform创建开启自动伸缩功能的节点池。
前提条件
已安装Terraform工具。具体操作,请参见在本地安装和配置Terraform。
自动伸缩功能依赖弹性伸缩(Auto Scaling,旧称ESS)服务。启动节点自动伸缩前,您需要开通弹性伸缩服务,并完成默认角色授权。具体操作,请参见开通弹性伸缩服务。
说明如果您之前已经使用了alicloud_cs_kubernetes_autoscaler组件,默认已开通弹性伸缩服务。
在RAM控制台,为当前集群添加弹性伸缩服务的授权策略。关于如何授权的详细信息,请参见授权。
已为系统运维管理 OOS(CloudOps Orchestration Service)服务授权。您可以通过创建AliyunOOSLifecycleHook4CSRole角色,为OOS服务授权。
单击AliyunOOSLifecycleHook4CSRole。
说明如果当前账号是阿里云账号,单击AliyunOOSLifecycleHook4CSRole即可授权。
如果当前账号是RAM用户,请先确保对应的阿里云账号已授权AliyunOOSLifecycleHook4CSRole,并为RAM用户授予AliyunRAMReadOnlyAccess系统策略。具体操作,请参见为RAM用户授权。
在云资源访问授权页面,单击同意授权。
配置阿里云账号信息。
执行如下命令,创建环境变量,用于存放身份认证信息。
Linux 环境
export ALICLOUD_ACCESS_KEY="************" #替换为阿里云账号的AK信息。 export ALICLOUD_SECRET_KEY="************" #替换为阿里云账号的SK信息。 export ALICLOUD_REGION="cn-beijing" #替换为您集群所在的地域。
Windows 环境
set ALICLOUD_ACCESS_KEY="************" #替换为阿里云账号的AK信息。 set ALICLOUD_SECRET_KEY="************" #替换为阿里云账号的SK信息。 set ALICLOUD_REGION="cn-beijing" #替换为您集群所在的地域。
背景信息
Terraform是一种开源工具,通过Provider来支持新的基础架构,用于安全高效地预览、配置和管理云基础架构和资源。更多信息,请参见什么是Terraform。
在Alibaba Cloud Provider的老版本中,ACK提供了一个名为alicloud_cs_kubernetes_autoscaler的组件。alicloud_cs_kubernetes_autoscaler组件可以实现节点的弹性伸缩,但是其能力受限:
配置复杂,使用成本高。
伸缩的节点都会被放置到默认节点池,自动伸缩的节点未单独维护。
部分配置参数不可更改。
Alibaba Terraform Provider从1.111.0版本开始可通过组件alicloud_cs_kubernetes_node_pool创建开启自动伸缩功能的节点池,优势如下:
配置简单,您只需要配置伸缩组内节点数的上下限。
针对非必须配置,ACK使用默认值的配置,以防误操作带来的基础环境不一致的问题,例如:操作系统镜像。
在ACK控制台中可以直观地观察节点池内节点的变化。
使用Terraform创建开启自动伸缩功能的节点池
如果您的集群之前已经使用alicloud_cs_kubernetes_autoscaler组件,在完成上述为当前集群添加弹性伸缩服务授权后,您需要执行以下步骤平滑切换alicloud_cs_kubernetes_autoscaler至alicloud_cs_kubernetes_node_pool,以创建开启自动伸缩功能的节点池。
如果您未在集群中使用alicloud_cs_kubernetes_autoscaler组件,则跳过以下步骤1和步骤2,请直接进行步骤3的操作。
修改集群的autoscaler-meta配置项。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在配置项页面左上角的命名空间下拉框中,选择kube-system,然后在autoscaler-meta配置项右侧操作列下,单击编辑。
在编辑面板中,修改autoscaler-meta配置项的值。
您需将
taints
值的String类型改成数组类型,即在值文本框中,修改"taints":""
为"taints":[]
。单击确定。
同步节点池。
在集群管理页左侧导航栏,选择 。
在节点池页面右上方,单击同步节点池。
如果您未在集群中使用alicloud_cs_kubernetes_autoscaler组件,请直接进行以下操作。
使用Terraform创建开启自动伸缩功能的节点池。
创建节点池的配置文件。
在已有集群中创建开启自动伸缩功能的节点池,配置示例如下。
如果未创建集群,创建节点池的配置示例如下,需要先创建集群,然后才能创建节点池。
执行
terraform apply
命令完成创建。
完成创建节点池后,在节点池列表中可以看到新建的节点池,该节点池名称下会标注已开启自动伸缩。