tft每日頭條

 > 生活

 > 4g數據漫遊要開啟嗎

4g數據漫遊要開啟嗎

生活 更新时间:2025-02-04 18:45:22

4g數據漫遊要開啟嗎(邊開飛機邊換引擎)1

容器化部署應用可以降低企業成本,提升研發效率,解放運維人員。據 Gartner 預計,到 2022 年,将有 75% 的企業将在生産中運行容器化應用程序。Kubernetes 是企業部署容器化應用的首選框架。由于 Kubernetes 部署及運維的複雜性,越來越多的客戶選擇将業務從 ECS 或者自建的 Kubernetes 遷移到阿裡雲托管版 Kubernetes —— ACK 中。但是,如何保證業務流量的平滑遷移成為一大挑戰。

Cloud Controller Manager(CCM)是 ACK 的一個系統核心組件,負責對接 Kubernetes 與雲上基礎産品如 CLB、VPC、DNS 等。當 Service 的類型設置為 Type=LoadBalancer 時,CCM 會為該 Service 創建或配置阿裡雲負載均衡 CLB。當 Service 對應的後端 Endpoint 或者集群節點發生變化時,CCM 會自動更新 CLB 的後端虛拟服務器組。此外,CCM 還提供了許多阿裡雲注解,支持豐富的負載均衡能力。

近期 CCM 發布了一個新特性——支持在同一個 CLB 後端挂載集群内節點和集群外 ECS,借助這一特性可以解決業務容器化過程中流量平滑遷移的難題

場景一:應用容器化改造(流量平滑遷移)

對于一個 CLB,支持将流量轉發至集群内及集群外節點

4g數據漫遊要開啟嗎(邊開飛機邊換引擎)2

1)操作步驟

  • 登錄 CLB 控制台創建 CLB,記錄 CLB ID ("lb-xxxxx")
  • 創建 Service

設置 service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners 為 false,不管理監聽信息。

CCM 會自動創建對應的虛拟服務器組。

cat <<EOF |kubectl apply -f - apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxx" service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "false" labels: app: nignx name: my-nginx-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer EOF

  • 登錄 CLB 控制台,創建監聽并關聯虛拟服務器組
  • 登錄 CLB 控制台,手動在虛拟服務器組中添加集群外 ECS 并設置權重

2)預期結果

配置完成後,在 CLB 的虛拟服務組裡既可以看到集群内的節點,也可以看到集群外的 ECS。集群内應用進行擴縮容時,集群外的 ECS 節點不受影響。

4g數據漫遊要開啟嗎(邊開飛機邊換引擎)3

場景二:金絲雀發布

支持金絲雀發布,将流量按比例轉發至集群内及集群外節點

遷移過程中,往往需要逐步将流量從存量 ECS 遷往 Kubernetes 集群中。CCM 支持通過 annotationservice.beta.kubernetes.io/alicloud-loadbalancer-weight為 Kubernetes 集群配置權重,從而實現流量的逐步遷移。

4g數據漫遊要開啟嗎(邊開飛機邊換引擎)4

1)注意事項

  • 不能跨 CLB 複用虛拟服務器組
  • 一個虛拟服務器組隻能與一個端口關聯
  • 集群内節點權重由 CCM 組件設置,集群外 ECS 權重需要用戶手動設置

2)操作步驟

  • 登錄 CLB 控制台創建 CLB、監聽及虛拟服務器組,記錄 CLB ID ("lb-xxxx") 及虛拟服務器組 Id ("rsp-xxx")
  • 手動在虛拟服務器組中添加集群外 ECS 并設置權重
  • 創建 Service

apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx" service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx" # 集群内部權重為20% service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20" name: nginx-svc namespace: default spec: ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx sessionAffinity: None type: LoadBalancer

3)預期結果

配置完成後,在 CLB 的虛拟服務組裡既可以看到集群内的節點,也可以看到集群外的 ECS,集群節點的權重按照 annotation 配置。集群内應用進行擴縮容時,集群外的 ECS 節點不受影響。

場景三:多集群業務流量多活與災備

對于一個 CLB,支持将流量轉發至多個 Kubernetes 集群内

企業用戶會采取多種措施以保障應用的高可用性,如創建多個集群進行備份、容災等。這要求業務流量可以通過一個 CLB 接入多個 Kubernetes 集群中,并且支持為 Kubernetes 集群設置不同的權重,如下圖所示。

4g數據漫遊要開啟嗎(邊開飛機邊換引擎)5

1)注意事項

  • 不能跨 CLB 複用虛拟服務器組
  • 一個虛拟服務器組隻能與一個端口關聯
  • 兩個集群均已配置 Cluster Id,否則兩個集群中的 service 需要不同名稱

2)操作步驟

  • 登錄 CLB 控制台創建 CLB、監聽及虛拟服務器組,記錄 CLB ID ("lb-xxxx") 及虛拟服務器組 Id ("rsp-xxx")
  • 集群 A 中創建 Serivce-A,權重設置為 20%

apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx" service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx" service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20" name: service-A namespace: default spec: ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx sessionAffinity: None type: LoadBalancer

3)預期結果

配置完成後,在 clb 的虛拟服務組裡既可以看到集群 A 内的節點,也可以看到集群 B 的節點。集群節點的權重按照 annotation 自動設置。集群内應用進行擴縮容時,CLB 後端虛拟服務器組會自動更新。

總結

出于降本增效的考慮,越來越多的企業采用容器化方式部署應用。在業務遷移過程中,如何保障業務流量不受損成為一大難題。對于電商類應用而言,業務流量下跌往往會導緻交易量下跌,造成重大損失。遊戲類應用對業務流量也十分敏感,短暫的流量中斷都會明顯地影響遊戲用戶體驗;交通類應用的流量下跌會影響交通流量管制、交通故障排險效率。保障業務流量不受損是保障用戶業務正常運轉的底線。

CCM 發布的支持在同一個 CLB 後端挂載集群内節點和集群外 ECS 的功能,可以一舉解決遷移過程中流量中斷的難題。同時,還支持将業務流量轉發至多個 Kubernetes 集群内,支撐備份、容災等需求,保障業務高可用。

作者 | 顧靜(子白)

本文為阿裡雲原創内容,未經允許不得轉載。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved