使用VPC的多路由表功能

ACK通过CCM(Cloud Controller Manager)组件在VPC路由表中添加合适的路由来连通集群中Pod之间的网络连接。您可以通过更新cloud-config配置文件让ACK集群使用VPC多路由表功能。本文介绍如何让ACK集群使用VPC支持的多路由表。

前提条件

  • 已创建ACK集群:

  • CCM版本需大于v1.9.3.86-g4454991-aliyun。关于如何查看CCM版本的步骤,请参见管理组件

  • ACK集群的网络为Flannel模式。

  • 集群VPC下存在多个路由表。

    说明

    如果集群VPC下仅有一个路由表,则无需配置VPC多路由表。

背景信息

VPC对多个路由表的支持能力,让您可以自行选择ECS关联路由表。由于CCM早期版本中仅提供了VPC单路由表的支持,因此您需要在容器服务控制台升级CCM至最新版本。关于如何升级CCM的版本,请参见管理组件

ACK托管集群配置VPC多路由表

ACK托管集群支持通过控制台方式配置VPC多路由表。

  1. 获取路由表ID。

    1. 登录专有网络管理控制台,在左侧导航栏选择路由表

    2. 路由表页面设置搜索项为专有网络ID,搜索集群VPC,获取集群VPC对应的路由表ID。

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

  3. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  4. 组件管理页面,单击Cloud Controller Manager组件的配置

    配置.png
  5. routeTableIDs文本框中,输入步骤1获取的路由表ID,然后单击确认

    VPC路由表ID必须包含系统路由表,多个路由表使用半角逗号(,)分隔(例如,vtb-t4n788888****,vtb-t4n7k6u3m0n840799****)。路由表.png

ACK专有集群配置VPC多路由表

ACK专有集群可以通过kubectl或控制台方式配置VPC多路由表。

通过kubectl方式

使用kubectl命令方式配置支持VPC多路由表前,确保可以使用kubectl命令链接ACK专有版集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群

  1. 更新配置项cloud-config文件。

    使用命令kubectl edit cm -n kube-system cloud-config修改cloud-config配置项文件,将配置项文件中的${ROUTE_TABLES_IDS}替换为您的VPC路由表ID(必须包含系统路由表),多个路由表使用英文半角逗号(,)分隔(例如,vtb-t4n788888****,vtb-t4n7k6u3m0n840799****)。

    重要

    cloud-config配置项文件的其他参数无需修改,只修改${ROUTE_TABLES_IDS}

    "routeTableIDs": "${ROUTE_TABLES_IDS}"
  2. 执行以下命令重启CCM Pod。

    kubectl -n kube-system delete po -lapp=cloud-controller-manager

    重启完毕后,即可在路由表中看到对应的集群节点条目。

通过控制台方式

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

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

  3. 在kube-system命名空间下,单击配置项cloud-config右侧的YAML编辑

  4. 查看YAML面板的routeTableIDs参数的值中,填写您的VPC路由表ID(必须包含系统路由表),多个路由表使用半角逗号(,)分隔(例如,vtb-t4n788888****,vtb-t4n7k6u3m0n840799****),然后单击确定

    cloud-config
  5. 在集群管理页左侧导航栏,选择工作负载 > 守护进程集

  6. 在kube-system命名空间下,选中应用cloud-controller-manager,在页面下方单击批量重新部署

    重新部署后,即可在路由表中看到对应的集群节点条目。