在ACK Edge集群中使用负载均衡类型Service暴露应用

在Kubernetes集群中,Service是将运行的一组Pod的网络应用进行服务暴露的标准方法,能够解耦前端和后端的关联,从而实现松耦合的微服务设计。Service支持多种类型,例如ClusterIP、NodePort、LoadBalancer等。本文主要为您介绍如何在ACK Edge集群中,通过LoadBalancer(负载均衡)类型Service对外暴露应用。

背景信息

Kubernetes集群支持的所有Service类型。关于负载均衡Service的使用方法请参见

云端应用使用负载均衡类型Service暴露服务

如果业务Pod部署在云端VPC的ECS上,您可以采用负载均衡类型的Service进行服务暴露,云端控制面会自动为您的业务Pod管理CLB的监听以及后端,业务请求通过CLB被均衡发送到后端Pod上。

image

边缘应用使用负载均衡类型Service暴露服务

如果业务Pod部署在边缘侧的服务器上,您可以通过云端ECS的转发能力将请求转发给边缘侧的业务Pod。

重要

您需要提前配置并关注以下事项:

  • 通过专线将云端VPC和边缘侧数据中心进行网络打通。

  • 配置负载均衡型Service的外部流量策略为Cluster,外部流量策略介绍请参见下文外部流量策略

  • 由于需要借助ECS的网络转发能力,如果ECS实例失效,则无法实现流量负载均衡。

image

使用NLB直接暴露云端/边缘的应用(推荐)

如果业务Pod部署在云端或边缘(云下IDC),您可以通过NLB暴露服务。使用前提如下:

  • 云端和边缘已经采用专线实现内网互通。

  • 采用Terway Edge容器网络插件。

您需要为NLB Service添加以下Annotation,以确保将Pod作为NLB后端。

Annotaion

描述

service.beta.kubernetes.io/backend-type: "eni"

将Pod直接挂载到负载均衡后端。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"

后端服务器组类型设置为IP型。

image

外部流量策略

在集群中,当服务类型为LoadBalancer或NodePort时,您才可以设置外部流量策略externalTrafficPolicy,来控制从外部网络到服务的流量路由,此策略有两种模式:Local和Cluster。

说明

流量策略对Terway Edge和Flannel VXLAN插件均有效。

  • Local:流量只转发给本机的Pod,即流量仅在同一个节点的Pod中进行转发。

  • Cluster: 流量可以转发到集群中其他节点上的Pod。

image

类别

Local

Cluster

负载均衡后端挂载行为

仅Pod所在的节点会挂载到负载均衡后端。

所有集群内的节点都将挂载到负载均衡的后端。

负载均衡配额

负载均衡配额消耗较少。关于负载均衡配额的详细介绍,请参见配额限制

集群内所有节点都挂载到负载均衡后端,会大量消耗负载均衡配额。关于负载均衡配额的详细介绍,请参见配额限制

访问负载均衡地址

仅Pod所在节点可以访问负载均衡地址。

集群内任意节点均可访问负载均衡地址。

Pod负载均衡

默认Pod之间负载不均衡。

如果您想要实现Pod之间负载均衡,需要指定策略为wrr,即为Service添加Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wrr"

默认Pod之间负载均衡。

保留来源IP

支持。

不支持。

会话保持

支持。

不支持。

适用场景

对需要保留客户端原始IP地址的应用程序,例如基于原始IP地址的日志记录。

当需要保证服务的高可用性,并且对源IP保存不敏感时,例如大型Web应用集群。

相关文档

关于在ENS中通过负载均衡型Service使用ELB,请参见使用ELB实现多地域服务暴露