ACS集群中Node对象以虚拟节点的形式提供。创建集群时,ACS会自动在所选可用区下创建虚拟节点,每个可用区对应一个虚拟节点。如果您有资源打散分布、保证算力供应、扩充交换机IP等需求,可以创建新的虚拟节点,在保证集群高可用的同时,解决算力库存不足、交换机可用IP不足的问题。
使用场景
默认情况下,在创建ACS集群时,ACS会根据您选择的可用区或者交换机,分别在每个可用区下创建一个对应的虚拟节点。ACS Pod会根据调度策略部署在相应的虚拟节点下,占用交换机的一个私网IP。以下场景,您可能需要创建新的虚拟节点。
集群高可用:某些业务场景(如分布式任务),您可能需要将Pod分散部署到多个不同的可用区,以保证高可用。
算力库存不足:当前虚拟节点对某类算力的供应不足,无法满足您的业务需求,需要添加算力充足的可用区。
可用IP不足:因业务规模扩大,网络规划不足,当前虚拟节点包含的交换机下已经没有足够的可用IP,集群需要添加交换机。
前提条件
已在集群所属VPC下,在新的可用区中创建了新的交换机。关于如何创建交换机,请参见创建和管理交换机。
虚拟节点和可用区一一对应,交换机所属可用区如果已有对应的虚拟节点,则不能重复创建。您可以在集群的虚拟节点页面确认当前已有虚拟节点所对应的可用区。
方式一:通过控制台创建虚拟节点
容器计算服务控制台已支持白屏化创建虚拟节点,您可以通过以下步骤创建虚拟节点,ACS会自动更新交换机配置。
创建新的虚拟节点后,ACS会自动更新acs-profile中的vSwitchIds
配置,添加新的交换机。
登录容器计算服务控制台。
在集群列表页面,单击目标集群名称,进入该集群的管理页面。
在集群管理页面的左侧导航栏,单击虚拟节点。
在虚拟节点页面,单击创建虚拟节点。
在虚拟交换机处,选中交换机,然后单击确认。
相关说明如下:
系统会自动从集群所在VPC中筛选出已有交换机。您也可以单击新建虚拟交换机,至专有网络控制台创建新的交换机。
建议使用资源配置推荐功能,ACS会根据您选择的算力类型,为您推荐算力充足的可用区。
虚拟节点和可用区一一对应,交换机所属可用区如果已有对应的虚拟节点,则不能重复创建。
确认虚拟节点的状态为已生效。
方式二:修改acs-profile的vSwitchIds
配置
虚拟节点与可用区一一对应,如果集群配置的交换机所属可用区没有对应虚拟节点时,系统会自动创建。因此,您可以通过更新acs-profile,在vSwitchIds
中添加交换机,来实现自动创建虚拟节点。
您也可以通过在vSwitchIds
中减少交换机来实现自动删除虚拟节点。操作前,请确保该交换机下没有部署Pod。
登录容器计算服务控制台。
在集群列表页面,单击目标集群名称,进入该集群的管理页面。
修改acs-profile的
vSwitchIds
配置。在左侧导航栏,选择
。在配置项页面的命名空间处,选择kube-system。
找到acs-profile,单击对应的编辑。
在
vSwitchIds
处,输入新的交换机ID,然后单击确定。多个交换机ID之间采用半角逗号(,)隔开。如果新添加的交换机所属可用区并没有对应的虚拟节点,ACS会自动创建。
确认已创建新的虚拟节点。
在左侧导航栏,单击虚拟节点。
在虚拟节点页面确认已自动创建新的虚拟节点,且虚拟节点的状态为已生效。
连接集群。具体操作,请参见获取集群kubeconfig并通过kubectl工具连接集群或在CloudShell上通过kubectl管理Kubernetes集群。
确认当前虚拟节点状态。
kubectl get node
返回示例如下:
NAME STATUS ROLES AGE VERSION virtual-kubelet-cn-shanghai-g Ready agent 17d v1.30.1-alibaba.13+ae02e00117a549 virtual-kubelet-cn-shanghai-l Ready agent 17d v1.30.1-alibaba.13+ae02e00117a549 virtual-kubelet-cn-shanghai-m Ready agent 19d v1.30.1-alibaba.13+ae02e00117a549
修改acs-profile的
vSwitchIds
配置。编辑acs-profile。
kubectl edit cm -n kube-system acs-profile
修改
vSwitchIds
字段值,添加新的交换机ID。多个交换机ID之间采用半角逗号(,)隔开。如果新添加的交换机所属可用区并没有对应的虚拟节点,ACS会自动创建。
data: enableClusterIp: "true" enableHybridMode: "false" enableLinuxArm64Node: "false" enableLogController: "false" enablePVCController: "true" enablePrivateZone: "false" enableReuseSSLKey: "false" enableUpdatePodResourceController: "false" enableWindowsAmd64Node: "false" featureGates: ProtectionFinalizers=false resourceGroupId: "" securityGroupId: sg-uf61931oi1w4te****** selectors: "" slsMachineGroup: "" vSwitchIds: vsw-uf68xih52l5inkm******,vsw-uf67n6lumryq7li******,vsw-uf6i6bsihi3sger******,vsw-uf6g4yjk3kemgei******
修改完成后,保存退出。
确认已创建新的虚拟节点。
kubectl get node
返回示例如下,可以看到已新增一个名为
virtual-kubelet-cn-shanghai-e
的虚拟节点。NAME STATUS ROLES AGE VERSION virtual-kubelet-cn-shanghai-e Ready agent 8s v1.30.1-alibaba.13+ae02e00117a549 virtual-kubelet-cn-shanghai-g Ready agent 17d v1.30.1-alibaba.13+ae02e00117a549 virtual-kubelet-cn-shanghai-l Ready agent 17d v1.30.1-alibaba.13+ae02e00117a549 virtual-kubelet-cn-shanghai-m Ready agent 19d v1.30.1-alibaba.13+ae02e00117a549
- 本页导读 (0)
- 使用场景
- 前提条件
- 方式一:通过控制台创建虚拟节点
- 方式二:修改acs-profile的vSwitchIds配置