自2023年02月28日起,Container ServiceACK Serverless將下線SLB Ingress,您將無法通過叢集安裝和管理SLB Ingress Controller組件,並不再提供SLB Ingress支援人員。建議您儘快將SLB Ingress遷移到ALB Ingress。本文介紹如何從SLB Ingress遷移到ALB Ingress。
背景資訊
由於SLB對7層支援能力較弱,例如,不支援HTTP標題改寫、重新導向、重寫、限速等,並且需要您自行營運執行個體規格,導致SLB Ingress使用受到了很多限制。因此我們推出了專門面向7層的ALB Ingress網關,該網關提供更為強大的Ingress流量管理方式。
ALB Ingress基於阿里雲應用型負載平衡ALB(Application Load Balancer)。相比於SLB Ingress,ALB Ingress具備處理複雜業務路由(支援Header、Cookie)和認證自動探索的能力,支援HTTP、HTTPS和QUIC協議,更好地滿足在雲原生應用情境下七層流量處理能力的需求。關於ALB與SLB功能對比,請參見Server Load Balancer產品家族介紹。
遷移流程
遷移樣本
本文使用以下Ingress,並將Ingress的端點解析到網域名稱demo.ingress.vip,以此為例進行遷移介紹。
在瀏覽器地址欄中輸入demo.ingress.vip,瀏覽器顯示Welcome to nginx!。
步驟一:建立ALB Ingress
-
安裝ALB Ingress Controller組件。具體操作,請參見管理ALB Ingress Controller組件。
-
建立ALBConfig。
-
使用以下內容,建立albconfig.yaml。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-wz9e2usil7e5an1xi**** - vSwitchId: vsw-wz92lvykqj1siwvif**** listeners: - port: 80 protocol: HTTPzoneMappings:設定ALB Ingress交換器ID,您需要至少指定兩個不同可用性區域交換器ID,且交換器必須與叢集屬於同一VPC。
-
執行以下命令,建立ALBConfig。
kubectl apply -f albconfig.yaml -
執行以下命令,查看ALB執行個體是否建立成功。
kubectl get albconfig <albconfig的名稱>預期輸出:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-eeee6gtqbmrm19**** alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com 27s
-
-
建立IngressClass。
-
使用以下內容,建立ingressclass.yaml。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demoparameters.name:ALBConfig名稱,用於綁定ALBConfig。
-
執行以下命令,建立IngressClass。
kubectl apply -f ingressclass.yaml
-
-
建立ALB Ingress。
-
使用以下內容,建立albingress.yaml。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress-alb namespace: default spec: ingressClassName: alb rules: - host: demo.ingress.vip http: paths: - backend: service: name: nginx port: number: 80 path: / pathType: Prefix-
name:Ingress名稱,與SLB Ingress的名稱不能相同。
-
ingressClassName:IngressClass的名稱。
-
-
執行以下命令,建立ALB Ingress。
kubectl apply -f albingress.yaml -
執行以下命令,擷取ALB Ingress的端點。
kubectl get ing預期輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE demo-ingress slb demo.ingress.vip 120.79.**.** 80 35m demo-ingress-alb alb demo.ingress.vip alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 80 10m 46s從返回結果中擷取ALB Ingress的端點,例如本文為alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 。
-
執行以下命令,使用ALB Ingress訪問Nginx。
curl -H "Host: demo.ingress.vip" http://alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com預期輸出:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> .............
-
步驟二:切流到ALB Ingress
將demo.ingress.vip綁定的SLB端點修改為ALB的端點,實現使用ALB Ingress訪問Nginx服務。
-
登入雲解析控制台。
-
在域名解析頁面,全部域名頁簽下,單擊網域名稱名稱。
-
在解析设置頁面,單擊目標解析記錄操作列下的修改。
-
在修改记录對話方塊將记录值修改為ALB Ingress的端點(本文為alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com),然後單擊確定。
-
在瀏覽器地址欄中輸入demo.ingress.vip。

瀏覽器顯示Welcome to nginx!,說明使用ALB Ingress訪問Nginx服務成功,從SLB Ingress切流到ALB Ingress成功。
步驟三:刪除SLB Ingress
-
刪除SLB Ingress。
-
在叢集管理頁左側導覽列,選擇。
-
在路由頁面上方,選擇命名空間,在SLB Ingress右側操作列,選擇。
-
在彈出的對話方塊,單擊確定。
-
-
卸載SLB Ingress Controller。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
-
在組件管理頁面,單擊其他頁簽,在SLB Ingress Controller卡片,單擊卸載。
-
在彈出的對話方塊,單擊確定。
FAQ
SLB Ingress是否支援平滑遷移到ALB Ingress?
由於ALB與SLB屬於不同的負載平衡網關,不支援平滑遷移。