添加已有节点

更新时间: 2023-11-17 11:17:32

您可以通过ACK控制台将已有的ECS实例添加到已创建的Kubernetes集群中,目前仅支持添加Worker节点。本文介绍自动添加节点和手动添加节点两种方式。

前提条件

使用限制

实例限制

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

配额限制

请确保您的集群节点配额充足。如果您需要添加更多节点,请通过配额中心扩大配额。关于ACK集群的配额限制,请参见使用限制

云服务器限制

  • 仅支持添加同一账号下的云服务器。添加的云服务器必须与集群在同一地域、同一VPC下。

  • 不支持添加已属于其他集群的云服务器。如遇相关问题,解决方案请参见节点已属于其他集群

网络限制

  • 如果集群使用了Terway网络插件,则对添加的云服务器机型有一定限制。如遇相关问题,解决方案请参见该实例规格无法支持当前集群的Terway网络模式

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

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

  • 如果集群使用了Flannel网络插件,则集群VPC下的系统路由表自定义路由条目数量,不能超过每个路由表中可保有的自定义路由条目配额,您可以通过配额中心进行调整。自定义路由条目的相关信息,请参见路由表概述

  • 如果集群使用IPv6双栈,则需要为ECS主网卡分配一个IPv6地址。关于如何为ECS主网卡分配IPv6地址,请参见步骤2:分配IPv6地址

安全组限制

  • 云服务器已加入的安全组类型必须与节点池安全组类型相同。有关安全组类型,请参见安全组概述。如果安全组类型不同,解决方案请参见当前节点所属安全组类型与节点池安全组类型不同

  • ECS实例已有安全组规则不应与集群安全组规则冲突。如遇相关问题,解决方案请参见安全组规则冲突

  • 添加已有ECS实例到节点池时,会将实例加入到节点池安全组中,需要保证ECS实例加入的安全组数量未超过限制(默认5个)。ECS实例能够加入的安全组数量,请参见安全组限制。如遇安全组数量超过限制,解决方案请参见安全组数量限制

注意事项

添加已有节点不会影响集群已有节点和业务的运行。

操作系统与云盘

  • 强烈建议您在操作前做好相关备份,以免数据丢失造成损失。

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

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

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

  • 为保持足够的快照额度来顺利完成周期性的自动快照策略,您可以删除不需要的用户快照和自动快照。

弹性网卡限制

当您的网络模式为Terway弹性网卡模式时,需要注意以下内容。如果您使用Flannel模式,请忽略。

  • 当添加的节点包含新增可用区时,您需要为Terway更新vSwitch配置,否则Pod IP将从节点主网卡对应的vSwitch分配。具体操作,请参见扩容Terway场景下的Pod虚拟交换机

  • 当添加已有节点到节点池时,已有节点上已经绑定的弹性网卡(ENI)会继续保留,Pod IP会从已经绑定的弹性网卡所关联的vSwitch上分配。请确保添加的节点,弹性网卡只包含一个主网卡。如果您发现Pod IP来源非您配置的vSwitch,您需要将节点移出集群,并删除除主网卡外的辅助网卡,再重新加入集群。

  • 当添加已有节点到节点池时,请确保目标ECS实例已绑定集群RAM Role,避免因权限问题无法正确计算MaxPod(节点最大可用Pod数),继而导致弹性网卡数量计算错误。具体操作,请参见配置RAM用户或RAM角色RBAC权限

计费

添加到集群中的ECS实例不会随集群或节点池的删除而释放,请您关注ECS计费状态,以免产生不必要的费用。

自动添加节点

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

说明

如果您的集群没有节点池,请先创建节点池,然后再添加已有节点。关于创建节点池的具体操作,请参见操作步骤

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

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

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

  4. 选择已有云服务器实例配置向导页面,选择自动添加已有云服务器实例。

    选择添加方式自动添加,在已有云服务器的列表中,选择所需的ECS云服务器。

    重要

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

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

  5. 单击下一步,完成填写实例信息

    配置项

    说明

    集群ID/名称

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

    数据盘挂载

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

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,系统会自动将最后一块数据盘格式化为ext4,用来存放内容/var/lib/docker/var/lib/kubelet

      重要

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

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

    保留实例名称

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

    实例信息

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

  6. 单击下一步,在添加已有实例到集群对话框,单击确定

手动添加节点

重要

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

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

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

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

说明

如果您的集群没有节点池,请先创建节点池,然后再添加已有节点。关于创建节点池的具体操作,请参见操作步骤

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

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

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

  4. 选择已有云服务器实例配置项页面,选择手动添加已有云服务器实例。

    选择添加方式手动添加,在已有云服务器的列表中,选择所需的ECS云服务器。

  5. 单击下一步,完成填写实例信息

    配置项

    说明

    集群ID/名称

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

    数据盘挂载

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

    • 如果ECS已挂载数据盘,且最后一块数据盘的文件系统未初始化,系统会自动将最后一块数据盘格式化为ext4,用来存放内容/var/lib/docker/var/lib/kubelet

      重要

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

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

    保留实例名称

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

    实例信息

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

  6. 单击下一步,进入添加完成页面。在添加完成页面复制执行命令,单击完成

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

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

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

    远程连接方式

    说明

    Workbench远程连接

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

    VNC远程连接

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

    发送远程命令(云助手)

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

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

    等待脚本执行成功,该云服务器就添加成功。

执行结果

  1. 在集群管理页左侧导航栏中,选择节点管理 > 节点池

  2. 节点池页面,单击目标节点池右侧操作列的详情

  3. 节点管理页签,可查看刚才添加的节点信息。

节点无法添加到集群的常见原因

节点已属于其他集群

已属于其他集群的节点不能添加到目标集群。如希望将节点添加到目标集群,请先将节点移除出旧集群,再将节点添加到目标集群中。移除方式,请参见移除节点

该实例规格无法支持当前集群的Terway网络模式

如果集群使用了Terway网络插件,则对添加的云服务器机型有一定要求:

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

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

需要注意的是,支持的最大Pod数取决于该云服务器机型所支持的最大的弹性网卡(ENI)数。

  • 共享弹性网卡模式下机型支持的最大Pod数=(ECS机型支持的弹性网卡数-1)×单个弹性网卡支持的私有IP数

  • 独占弹性网卡模式下机型支持的最大Pod数=ECS机型支持的弹性网卡数-1

您可以通过以下方式查看实例规格支持的Pod数量。

  • 方式一:创建节点池时,在实例规格区域,通过Terway兼容性(可支持 Pod 数量)查看某一实例规格支持的Pod数量。

  • 方式二:先参考下列方式获取计算数据,然后手动计算机型支持的Pod数量。

    • 通过文档查询实例规格支持的弹性网卡数量。具体信息,请参见实例规格族

    • 通过OpenAPI进行查询,通过指定已有节点的实例规格InstanceTypes,单击发起调用,返回值中EniQuantity表示实例规格支持的弹性网卡上限,EniPrivateIpAddressQuantity表示单个弹性网卡支持的私有IP数。

如果已有节点不满足上述要求,可以尝试通过资源变配来升级ECS机型,或重新创建满足限制机型的ECS实例。详细信息,请参见资源变配

当前节点所属安全组类型与节点池安全组类型不同

添加已有ECS实例到节点池时,会将ECS实例加入到节点池安全组中。由于ECS的限制,ECS实例无法同时加入普通安全组和企业安全组,因此ECS实例已加入的安全组类型必须与节点池安全组类型相同。您可以单击目标节点池后面的详情,在基本信息页签中查看节点池的安全组信息;可以登录ECS控制台查看ECS实例已加入的安全组信息。关于安全组的详细信息,请参见安全组概述

需要注意的是,节点池的安全组不支持修改,安全组的类型也不允许变更。如果ECS实例的安全组类型与节点池不同,您可以通过下列方式解决。

  • 通过替换安全组的方式,将已有ECS实例的安全组替换为节点池安全组类型。详细信息,请参见替换ECS实例的安全组

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

安全组规则冲突

节点已有安全组规则不应与集群安全组规则冲突,但往往难以进行预检查。您可以提前将已有节点加入到节点池安全组中,并通过安全组规则检测功能,对节点池安全组中的每一条规则进行检测,来避免问题的发生。安全组规则检测的详细操作步骤,请参见安全组规则检测

对于已加入节点池安全组的节点,不会重复添加节点到节点池安全组。

安全组数量限制

ECS实例能够加入的安全组数量有一定限制,如果加入节点池安全组后,超过了安全组数量限制,可以申请提升ECS实例能够加入的安全组数量。了解安全组的数量限制和申请提升ECS实例能够加入的安全组数量的方法,请参见安全组

阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈