ACK通過CCM(Cloud Controller Manager)組件在VPC路由表中添加合適的路由來連通叢集中Pod之間的網路連接。您可以通過更新cloud-config設定檔讓ACK叢集使用VPC多路由表功能。本文介紹如何讓ACK叢集使用VPC支援的多路由表。
前提條件
已建立ACK叢集:
建立ACK託管叢集。具體操作,請參見建立Kubernetes託管版叢集。
說明僅1.18及以上版本的ACK託管叢集支援此功能;如果ACK託管叢集版本低於1.18,請提交工單處理。
建立ACK專有叢集。具體操作,請參見建立Kubernetes專有版叢集。
CCM版本需大於v1.9.3.86-g4454991-aliyun。關於如何查看CCM版本的步驟,請參見管理組件。
ACK叢集的網路為Flannel模式。
叢集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,在頁面下方單擊批量重新部署。
重新部署後,即可在路由表中看到對應的叢集節點條目。