将已有ECS实例添加到ACK集群

如果购买ECS实例后需将该云服务器添加到ACK集群中作为Worker节点,或移除Worker节点后需将节点实例重新加入节点池,您可以在容器服务管理控制台自动添加或手动添加节点。添加前,请仔细阅读使用限制、注意事项等。

前提条件

使用限制

实例规格限制

限制项

说明

推荐解决方案

神龙裸金属GPU实例

神龙裸金属GPU实例(ECS规格族为ebmgn7ebmgn7e)不支持自动MIG清理。因此,ACK添加该类型的节点时会重置已有的MIG设置。由于重置时间不定,可能会出现重置时间过长导致自动添加节点失败。

排查失败原因,请参见裸金属实例节点添加失败怎么办?

配额限制

限制项

说明

推荐解决方案

节点配额

需确保您的集群节点配额充足。关于ACK集群的配额限制,请参见配额与限制

如需添加更多节点,前往配额中心调整。

ECS实例限制

限制项

说明

推荐解决方案

所属账号、地域、VPC

仅支持添加同一账号下的ECS实例,且添加的ECS实例必须与集群在同一地域、同一VPC下。

重新创建符合要求的ECS实例或集群。

所属集群

不支持添加已属于其他集群的ECS实例。

如ECS实例已属于其他集群,请先将该节点移除出旧集群,再将节点添加到目标集群中。移除方式,请参见移除节点

网络限制

限制项

说明

推荐解决方案

Terway网络插件

对待添加的ECS实例机型支持的最大Pod数有如下限制。

  • 共享弹性网卡模式:当机型支持的最大Pod数小于等于10时,不允许加入集群。

  • 独占弹性网卡模式:当机型支持的最大Pod数小于等于5时,不允许加入集群。

需要注意的是,不同弹性网卡模式支持的最大Pod数取决于该云服务器机型所支持的最大的弹性网卡(ENI)数。关于如何计算不同弹性网卡模式支持的最大Pod数,请参见使用Terway网络插件;关于如何查看实例规格支持的Pod数量,请参见使用Terway网络插件

对弹性网卡有如下限制。

当添加的节点包含新增可用区时,您需要为Terway更新vSwitch配置,否则Pod IP将从节点主网卡对应的vSwitch分配。

扩容Terway场景下的Pod虚拟交换机

当添加已有节点到节点池时,已有节点上已经绑定的弹性网卡(ENI)会继续保留,Pod IP会从已经绑定的弹性网卡所关联的vSwitch上分配。请确保添加的节点中弹性网卡只包含一个主网卡。

如果有Pod IP不属于您配置的vSwitch,请在集群中移除节点,删除除主网卡外的辅助网卡,再重新加入集群。

当添加已有节点到节点池时,需确保目标ECS实例已绑定集群RAM Role,避免因权限问题无法正确计算MaxPod(节点最大可用Pod数),继而导致弹性网卡数量计算错误。

为RAM用户或RAM角色授予RBAC权限

Flannel网络插件

对集群VPC下的系统路由表自定义路由条目数量存在限制,不能超过每个路由表中可保有的自定义路由条目配额,自定义路由条目的相关信息,请参见路由表概述

配额中心调整。

IPv6双栈

需要为ECS主网卡分配一个IPv6地址。

关于如何为ECS主网卡分配IPv6地址,管理IPv6地址

安全组限制

限制项

说明

推荐解决方案

安全组类型

添加已有ECS实例到节点池时,会将ECS实例加入到节点池安全组中。由于ECS的限制,ECS实例无法同时加入普通安全组和企业安全组。因此,ECS实例已加入的安全组类型必须与节点池安全组类型相同。

您可以单击目标节点池后面的详情,在基本信息页签中查看节点池的安全组信息;可以登录ECS控制台查看ECS实例已加入的安全组信息。关于安全组的详细信息,请参见安全组概述

节点池的安全组不支持修改,安全组的类型也不允许变更。如遇冲突,请通过以下方式解决。

  • 替换安全组,将已有ECS实例的安全组替换为节点池安全组类型。详细信息,请参见安全组与ECS实例关联的管理

  • 将ECS实例移除出不符合要求的安全组后,再次尝试将节点添加到集群或节点池。

安全组规则

ECS实例已有安全组规则不能与即将加入的节点池安全组以及集群安全组规则冲突。

提前将已有节点加入到节点池安全组中。

通过安全组规则检测功能,检测节点池安全组中的每一条规则。安全组规则检测的详细操作步骤,请参见安全组规则检测

安全组数量

添加已有ECS实例到节点池时,会将实例加入到节点池安全组中,需要保证ECS实例加入的安全组数量未超过限制(默认5个)。

关于安全组的数量限制以及如何申请提升ECS实例能够加入的安全组数量,请参见安全组

操作系统限制

仅支持操作系统类型为Alibaba Cloud Linux、Red Hat、Ubuntu和CentOS的ECS实例。推荐您使用Alibaba Cloud Linux 3。关于ACK集群的操作系统支持情况,请参见操作系统镜像概述

注意事项

实例释放

添加到节点池的ECS实例不会随集群或节点池的删除而释放,需手动移除。如需手动移除,请参见移除节点

相关计费

添加到集群中的ECS实例不会随集群或节点池的删除而释放。请您关注ECS计费状态,避免产生额外费用。更多信息,请参见计费概述

实例配置

向节点池中添加已有ECS实例时,其付费类型和规格保持不变。

操作系统与云盘

  • 强烈建议您在操作前做好相关备份,以免数据丢失造成损失。具体操作,请参见创建快照

  • 自动添加节点会根据节点池当前的操作系统替换该节点原有的操作系统;手动添加节点会保留节点原有操作系统。如需保留节点原操作系统,请手动添加节点。

  • 自动添加节点时,原系统盘会被释放,数据盘不会被释放,但数据盘磁盘ID会发生变更,其中存储的数据不受影响。

  • 自动添加节点时,原系统盘的用户快照会保留,自动快照则根据该系统盘属性值“自动快照是否随磁盘释放”的选项来判断是保留还是随磁盘删除。您可以登录ECS管理控制台,在磁盘列表单击修改属性,查看或修改属性值。

  • 为确保快照额度充足,以顺利完成周期性的自动快照策略,您可以删除无需使用的用户快照和自动快照。

自动或手动添加节点

自动或手动添加并不影响您集群已有的节点和应用的运行。自动添加节点会根据节点池当前的操作系统替换该节点原有的操作系统;手动添加节点会保留节点原有操作系统。如需保留ECS实例的原操作系统,请手动添加节点。

说明

为避免兼容性问题,不建议您将已创建服务的ECS实例初始化为Worker节点。

自动添加节点

自动添加节点方式会列出当前账号下可用的ECS实例,在控制台界面进行安装部署,并自动添加到集群。

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

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 节点池页面,单击目标节点池右侧操作列下的更多,然后单击添加已有节点

  4. 选择已有云服务器实例配置向导页面,选择添加方式自动添加,在已有云服务器的列表中,选择所需的ECS云服务器,然后单击下一步

    重要

    如果云服务器列表中无目标ECS云服务器,表明该ECS实例不满足添加到集群的条件。检查具体不满足的原因,请参见上文的使用限制注意事项

    您也可以勾选显示不可用的实例,查看实例无法加入集群的原因。如果勾选后也无法找到对应实例,请检查该实例是否和集群位于同一地域及同一VPC下。

  5. 填写实例信息页面,填写相关信息,然后单击下一步

    配置项

    说明

    集群ID/名称

    当前要添加的集群信息,已默认配置。

    数据盘挂载

    设置是否将容器和镜像存储在数据盘。

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,系统会自动将最后一块数据盘格式化为ext4,用于存放内容/var/lib/docker/var/lib/kubelet(分别为Docker容器运行时和kubelet组件默认对应的数据目录)。

      重要

      被格式化的数据盘内原有数据将会丢失,请提前备份数据。

    • 如果ECS未挂载数据盘,则不会自动挂载新的数据盘。

    保留实例名称

    添加节点时,默认开启保留实例名称。如果您不需要保留实例名称,您可以关闭保留实例名称,此时会按照自定义节点名称指定的规则来重命名节点。

    实例信息

    待添加云服务器实例的实例ID及名称。

  6. 添加已有实例到集群对话框,仔细阅读注意事项,然后单击确定

    成功添加后,您可以在节点池页面的操作列单击目标节点池右侧的详情,然后在节点管理页签查看添加的节点信息。

手动添加节点

重要

手动添加节点不会重置您的操作系统。在手动添加节点前,除使用限制外,还需关注如下限制。

  • 操作系统不支持启用SWAP。

  • 如果将容器和镜像存储在数据盘,则仅支持ext和xfs文件系统。

手动添加节点方式要求您获取安装命令,登录到对应的ECS云服务器上进行安装。每次只能添加一个ECS云服务器。

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

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 节点池页面,单击目标节点池右侧操作列下的更多,然后单击添加已有节点

  4. 选择已有云服务器实例配置项页面,选择添加方式手动添加,在已有云服务器的列表,选择所需的ECS云服务器,然后单击下一步

  5. 填写实例信息页面,填写相关信息,然后单击下一步

    配置项

    说明

    集群ID/名称

    当前要添加的集群信息,已默认配置。

    数据盘挂载

    设置是否将容器和镜像存储在数据盘。

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,系统会自动将最后一块数据盘格式化为ext4,用于存放内容/var/lib/docker/var/lib/kubelet(分别为Docker容器运行时和kubelet组件默认对应的数据目录)。

      重要

      被格式化的数据盘内原有数据将会丢失,请提前备份数据。

    • 如果ECS未挂载数据盘,则不会自动挂载新的数据盘。

    保留实例名称

    添加节点时,默认开启保留实例名称。如果您不需要保留实例名称,您可以关闭保留实例名称,此时会按照自定义节点名称指定的规则来重命名节点。

    实例信息

    待添加云服务器实例的实例ID及名称。

  6. 添加完成页面,复制执行命令,供下文远程连接ECS实例使用,然后单击完成

  7. 登录ECS管理控制台,单击左侧导航栏中的实例与镜像实例,选择集群所在的地域,选择需要添加的ECS实例。

  8. 单击ECS实例右侧的远程连接。在远程连接与命令对话框,选择远程连接方式后进入ECS远程连接界面。

    关于远程连接方式,请参见下表:

    远程连接方式

    说明

    Workbench远程连接

    关于如何使用Workbench远程连接ECS实例,请参见使用VNC登录实例

    VNC远程连接

    关于如何使用VNC远程连接ECS实例,请参见使用VNC登录实例通过密码认证登录Windows实例

    发送远程命令(云助手)

    推荐使用,发送远程命令可以帮助您在实例内部快速执行命令,即无需远程连接登录实例,即可完成查看硬盘空间、安装软件、启动停止服务等操作。该功能通过云助手的命令执行功能实现。关于如何安装或激活云助手客户端,请参见安装云助手Agent

  9. 在ECS实例远程连接界面,根据页面指导,输入步骤6保存的命令,单击执行开始执行脚本。

    脚本执行成功后,该云服务器添加成功。

    成功添加后,您可以在节点池页面的操作列单击目标节点池右侧的详情,然后在节点管理页签查看添加的节点信息。

常见问题

ECS实例加入集群后,后续ECS升降配是否会对集群业务产生影响?

ECS升降配通常包含修改实例规格、修改公网带宽计费方式、修改公网带宽、修改数据盘计费方式等,详情请参见升降配方式概述。不同的升降配方式对于ECS实例的影响不同。

  • 对于无需重启的升降配操作,请根据实际业务情况判断对业务的影响。

  • 需要重启ECS实例的升降配操作,例如实例规格升降配,会给业务带来有损变更。进行相关操作(升配Worker节点的资源)前,建议先根据实际负载情况,判断是否需要扩容冗余节点用于承接业务Pod,并将需要升降配的节点排水并移除出伸缩组和ACK集群。具体操作,请参见移除节点

    升降配完成后,再重新参见本文将节点添加回集群。

添加已有节点后报错,提示timeout,怎么办?

请排查节点与APIServer CLB的网络是否可以连通,请先排查安全组是否符合要求。添加已有节点时安全组的使用限制,请参见安全组限制。关于网络不通的其他问题,请参见网络管理FAQ

我可以将不同规格的已有节点添加到ACK集群中吗?

可以。您可以在节点池中指定多个实例规格,避免由于实例规格不可用或库存不足,导致节点池弹出节点失败。流程如下。

  1. 编辑或新建节点池,配置所需的节点规格。具体操作,请参见创建节点池编辑节点池

  2. 参见移除节点完成目标节点的移除和排水(请勿同时释放ECS实例)。

  3. 参见本文的使用限制和操作步骤自动或手动添加节点,将不同规格的ECS实例添加到节点池中。

如何跨ACK集群移动节点?

ACK不支持直接跨集群移动节点,但您可以通过添加已有节点的方式来完成。流程如下。

  1. 参见移除节点完成目标节点的移除和排水(请勿同时释放ECS实例)。

  2. 参见本文的使用限制和操作步骤自动或手动添加节点,将目标ECS实例添加到节点池中。

相关文档