在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實現多地域服務暴露。