在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实现多地域服务暴露。