在Kubernetes叢集中,Service是將啟動並執行一組Pod的網路應用進行服務暴露的標準方法,能夠解耦前端和後端的關聯,從而實現松耦合的微服務設計。Service支援多種類型,例如ClusterIP、NodePort、LoadBalancer等。本文主要為您介紹如何在ACK Edge叢集中,通過LoadBalancer(負載平衡)類型Service對外暴露應用。
背景資訊
Kubernetes叢集支援的所有Service類型。關於負載平衡Service的使用方法請參見
雲端應用使用負載平衡類型Service暴露服務
如果業務Pod部署在雲端VPC的ECS上,您可以採用負載平衡類型的Service進行服務暴露,雲端控制面會自動為您的業務Pod管理CLB的監聽以及後端,業務請求通過CLB被均衡發送到後端Pod上。
邊緣應用使用負載平衡類型Service暴露服務
如果業務Pod部署在邊緣側的伺服器上,您可以通過雲端ECS的轉寄能力將請求轉寄給邊緣側的業務Pod。
您需要提前配置並關注以下事項:
通過專線將雲端VPC和邊緣側資料中心進行網路打通。
配置負載平衡型Service的外部流量策略為Cluster,外部流量策略介紹請參見下文外部流量策略。
由於需要藉助ECS的網路轉寄能力,如果ECS執行個體失效,則無法實現流量負載平衡。
使用NLB直接暴露雲端/邊緣的應用(推薦)
如果業務Pod部署在雲端或邊緣(雲下IDC),您可以通過NLB暴露服務。使用前提如下:
雲端和邊緣已經採用專線實現內網互連。
採用Terway Edge容器網路外掛程式。
您需要為NLB Service添加以下Annotation,以確保將Pod作為NLB後端。
Annotaion | 描述 |
| 將Pod直接掛載到負載平衡後端。 |
| 後端伺服器群組類型設定為IP型。 |
外部流量策略
在叢集中,當服務類型為LoadBalancer或NodePort時,您才可以設定外部流量策略externalTrafficPolicy
,來控制從外部網路到服務的流量路由,此策略有兩種模式:Local和Cluster。
流量策略對Terway Edge和Flannel VXLAN外掛程式均有效。
Local:流量只轉寄給原生Pod,即流量僅在同一個節點的Pod中進行轉寄。
Cluster: 流量可以轉寄到叢集中其他節點上的Pod。
類別 | Local | Cluster |
負載平衡後端掛載行為 | 僅Pod所在的節點會掛載到負載平衡後端。 | 所有叢集內的節點都將掛載到負載平衡的後端。 |
負載平衡配額 | 負載平衡配額消耗較少。關於負載平衡配額的詳細介紹,請參見配額限制。 | 叢集內所有節點都掛載到負載平衡後端,會大量消耗負載平衡配額。關於負載平衡配額的詳細介紹,請參見配額限制。 |
訪問負載平衡地址 | 僅Pod所在節點可以訪問負載平衡地址。 | 叢集內任意節點均可訪問負載平衡地址。 |
Pod負載平衡 | 預設Pod之間負載不均衡。 如果您想要實現Pod之間負載平衡,需要指定策略為wrr,即為Service添加Annotation | 預設Pod之間負載平衡。 |
保留來源IP | 支援。 | 不支援。 |
會話保持 | 支援。 | 不支援。 |
適用情境 | 對需要保留用戶端原始IP地址的應用程式,例如基於原始IP地址的日誌記錄。 | 當需要保證服務的高可用性,並且對源IP儲存不敏感時,例如大型Web應用叢集。 |
相關文檔
關於在ENS中通過負載平衡型Service使用ELB,請參見使用ELB實現多地區服務暴露。