雲邊協同的情境中,邊緣單元下的服務呈現本地流量閉環的特性,即流量優先在邊緣節點池內完成處理。本文介紹如何在ACK Edge叢集的雲端節點池和邊緣節點池部署Nginx Ingress Controller,為邊緣單元下的服務提供負載平衡等功能。
背景資訊
阿里雲Container Service Edge 版採用非侵入方式增強,提供邊緣自治、邊緣單元、邊緣流量管理、原生營運API支援等能力。它以原生方式支援邊緣計算情境下的應用統一生命週期管理和統一資源調度。您可以快速將自己的邊緣節點接入到叢集中。
注意事項
在雲端節點池和邊緣節點池部署ack-ingress-nginx-v1時注意事項如下:
ACK Edge叢集為1.19及以上版本。
支援在同一個ACK Edge叢集上多次部署, 每次需唯一的發布名稱。建議每次部署選擇獨立的命名空間以便管理。
首次部署時若不修改參數配置,則ack-ingress-nginx-v1預設部署到ACK Edge叢集的預設節點池。
操作步驟
登入Container Service管理主控台,在左側導覽列選擇。
在應用市場的應用目錄頁簽,搜尋並選中ack-ingress-nginx-v1。
在ack-ingress-nginx-v1組件頁面,單擊右上方的一鍵部署。
在彈出面板中,選擇叢集、命名空間,並填寫發布名稱。
說明在節點池部署ack-ingress-nginx-v1時,建議發布名稱以ack-ingress-nginx-v1-{節點池名稱}格式命名。例如:ack-ingress-nginx-v1-edge-hangzhou。
單擊下一步進入參數配置頁面,設定參數資訊。
您可以在Container Service管理主控台叢集管理頁左側導覽列中,選擇,查看節點池列表,找到對應的雲端節點池ID和邊緣節點池ID,用於後續配置
nodeSelector。在雲端節點池部署時需設定如下參數:
在
nodeSelector配置項中加入雲端節點池的Label:alibabacloud.com/nodepool-id: {節點池ID}。說明nodeSelector欄位只需保留alibabacloud.com/nodepool-id: {節點池ID}資訊。
在
ingressClassResource配置項中設定name和controllerValue。說明在同一個ACK Edge叢集中多次部署ack-ingress-nginx-v1時,每次部署的
name和controllerValue要確保唯一。命名規範建議如下:name:ack-nginx-{節點池名稱},例如:ack-nginx-edge-hangzhou。controllerValue:"k8s.io/ack-ingress-nginx-{節點池名稱}",例如:"k8s.io/ack-ingress-nginx-edge-hangzhou"。

在邊緣節點池部署時需設定如下參數:
在
nodeSelector配置項中加入邊緣端節點池的Label:alibabacloud.com/nodepool-id: {節點池ID}。說明nodeSelector欄位只需保留alibabacloud.com/nodepool-id: {節點池ID}資訊。
將
global. edgeNodePool設定為true。ack-ingress-nginx-v1會自動進行如下操作:自動將邊緣節點側部署的Nginx Ingress Controller的Service的Type類型由LoadBalancer改為NodePort模式。若您需要將邊緣側的服務對公網進行訪問,則需要單獨配置帶有公網IP的負載平衡器。
Nginx Ingress Controller使用的鏡像,會自動變為公網地址的鏡像,避免邊緣側節點無法拉取內網鏡像。

在
ingressClassResource配置項中設定name和controllerValue。說明在同一個ACK Edge叢集中多次部署ack-ingress-nginx-v1時,每次部署的
name和controllerValue要確保唯一。命名規範建議如下:name:ack-nginx-{節點池名稱},例如:ack-nginx-edge-hangzhou。controllerValue:"k8s.io/ack-ingress-nginx-{節點池名稱}",例如:"k8s.io/ack-ingress-nginx-edge-hangzhou"。

單擊確定完成安裝。
在叢集管理頁左側導覽列中,選擇。
在Helm頁面可以看到Nginx Ingress Controller服務已經部署成功。