ACK通過CCM(Cloud Controller Manager)組件在VPC路由表中添加合適的路由來連通叢集中Pod之間的網路連接。您可以通過更新cloud-config設定檔讓ACK叢集使用VPC多路由表功能。本文介紹如何讓ACK叢集使用VPC支援的多路由表。
前提條件
已建立ACK叢集,網路外掛程式為Flannel,且cloud-controller-manager組件版本符合要求:
ACK託管叢集:叢集為1.18及以上版本,cloud-controller-manager為v2.4.0及以上版本。
ACK專有叢集:cloud-controller-manager為v1.9.3.105-gfd4e547-aliyun及以上。
如需升級叢集,請參見手動升級叢集。如需查看cloud-controller-manager版本及升級組件,請參見Cloud Controller Manager。
叢集VPC下存在多個路由表。
說明如果叢集VPC下僅有一個路由表,則無需配置VPC多路由表。
背景資訊
VPC對多個路由表的支援能力,讓您可以自行選擇ECS關聯路由表。由於CCM早期版本中僅提供了VPC單路由表的支援,因此您需要在Container Service控制台升級CCM至最新版本。關於如何升級CCM的版本,請參見管理組件。
ACK託管叢集配置VPC多路由表
ACK託管叢集支援通過控制台方式配置VPC多路由表。
擷取路由表ID。
登入專用網路管理主控台,在左側導覽列選擇路由表。
在路由表版面設定搜尋項為專用網路ID,搜尋叢集VPC,擷取叢集VPC對應的路由表ID。

登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在組件管理頁面,單擊Cloud Controller Manager組件的配置。

在routeTableIDs文字框中,輸入步驟1擷取的路由表ID,然後單擊確認。
VPC路由表ID必須包含系統路由表,多個路由表使用半形逗號(,)分隔(例如,vtb-t4n788888****,vtb-t4n7k6u3m0n840799****)。

ACK專有叢集配置VPC多路由表
ACK專有叢集可以通過kubectl或控制台方式配置VPC多路由表。
通過kubectl方式
使用kubectl命令方式配置支援VPC多路由表前,確保可以使用kubectl命令連結ACK專有版叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
更新配置項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}"執行以下命令重啟CCM Pod。
kubectl -n kube-system delete po -lapp=cloud-controller-manager重啟完畢後,即可在路由表中看到對應的叢集節點條目。
通過控制台方式
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在kube-system命名空間下,單擊配置項cloud-config右側的YAML編輯。
在查看YAML面板的routeTableIDs參數的值中,填寫您的VPC路由表ID(必須包含系統路由表),多個路由表使用半形逗號(,)分隔(例如,vtb-t4n788888****,vtb-t4n7k6u3m0n840799****),然後單擊確定。

在叢集管理頁左側導覽列,選擇。
在kube-system命名空間下,選中應用cloud-controller-manager,在頁面下方單擊批量重新部署。
重新部署後,即可在路由表中看到對應的叢集節點條目。