全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:Service快速入门

更新时间:Apr 03, 2024

在Kubernetes中,Pod虽然拥有独立的IP,但会被快速地创建和删除,因此无法直接对外提供服务。而服务(Service)能够解耦前端和后端的关联,从而实现松耦合的微服务设计。本文介绍Service的原理、注意事项、以及如何选择不同类型的Service实现对外暴露应用。

Service原理

由于云原生的应用,通常需要敏捷的迭代和快速的弹性,且单一容器和其相关的网络资源的生命周期非常短暂,所以需要固定的访问地址,以及自动负载均衡实现快速的业务弹性。ACK采用Service方式为一组容器提供固定的访问入口,并对这一组容器进行负载均衡。实现原理如下:

  • 创建Service对象时,ACK会分配一个相对固定的Service IP地址。

  • 通过字段selector选择一组容器,以将这个Service的IP地址和端口负载均衡到这一组容器IP和端口上。

注意事项

在使用Service的负载均衡功能之前,建议您先了解相关注意事项。详细信息,请参见Service的负载均衡配置注意事项

使用Service实现对外暴露应用

Service网络支持以下多种模式,分别对接不同来源和类型的客户端的访问:

  • ClusterIP

    • ClusterIP类型的Service用于集群内部的应用间访问,如果您的应用需要暴露到集群内部提供服务,需使用ClusterIP类型的Service进行暴露。

      说明
      • 创建Service时默认的Service类型为ClusterIP。

      • 创建ClusterIP类型的Service时,不会创建负载均衡实例。

  • NodePort

    • NodePort类型的Service将集群中部署的应用向外暴露,通过集群节点上的一个固定端口暴露出去,这样在集群外部就可以通过节点IP和这个固定端口来访问。

  • LoadBalancer

  • Headless Service

    • Headless Service类型的Service是在Service属性中指定clusterIP字段为None类型。采用Headless Service类型后,Service将没有固定的虚拟IP地址,客户端访问Service的域名时会通过DNS返回所有的后端Pod实例的IP地址,客户端需要采用DNS负载均衡来实现对后端的负载均衡。

  • ExternalName

    • ExternalName类型的Service将集群外部的域名映射到集群内部的Service上,例如将外部的数据库域名映射到集群内部的Service名,那么就能在集群内部通过Service名直接访问。

您还可以通过Annotation配置负载均衡。详细信息,请参见通过Annotation配置传统型负载均衡CLB通过Annotation配置网络型负载均衡NLB

外部流量策略功能对比

集群中使用的网络插件不同,外部流量策略功能也不同,以下介绍Terway-Eniip和Flannel网络插件的外部流量策略功能对比。

说明

登录容器服务管理控制台,在集群列表页面单击目标集群的名称,在基本信息页签下集群信息区域可以查看集群的网络模式。

Flannel网络插件

Flannel网络插件下,流量经由节点的NodePort转发到Pod中。

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

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

image

Local和Cluster两种外部流量策略详细的区别如下表所示。

比较项

Local

Cluster

负载均衡后端挂载行为

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

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

负载均衡配额

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

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

访问负载均衡地址

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

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

Pod负载均衡

默认Pod之间负载不均衡。

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

默认Pod之间负载均衡。

保留来源IP

支持。

不支持。

会话保持

支持。

不支持。

Terway-Eniip网络插件

Terway-Eniip网络插件下,无论是Local还是Cluster,流量直接转发到Pod中。

image

Local和Cluster两种外部流量策略详细的区别如下表所示。

比较项

Local

Cluster

负载均衡后端挂载行为

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

负载均衡配额

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

访问负载均衡地址

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

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

Pod负载均衡

默认Pod之间负载均衡。

保留来源IP

支持。

会话保持

支持。

相关文档