网络概述

阿里云容器计算服务ACS集成Kubernetes网络、阿里云VPC、阿里云SLB,提供稳定高性能的容器网络。本文介绍ACS集群网络及阿里云网络底层基础设施的重要概念,如容器网络CNI、Service、Ingress、提供服务发现能力的DNS等。您可以通过了解这些概念,更合理地设计应用部署模型和网络访问的方式。

ACS常见网络能力一览表

分类

常见网络能力

功能支持

参考文档

网络配置管理

IPv4/IPv6双栈

不支持

Pod维度网络配置

支持

Pod指定交换机和安全组

设置Pod安全组

支持

Pod指定交换机和安全组

南北向访问

Pod访问公网

支持

从公网直接访问Pod

支持

使用LoadBalancer服务

支持

通过使用自动创建CLB的服务公开应用

使用Ingress

支持

ALB Ingress管理

Service

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

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

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

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

  • ClusterIP

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

    说明

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

  • LoadBalancer

  • Headless Service

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

  • ExternalName

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

关于Service的负载均衡配置需要注意内容,请参见Service的负载均衡配置注意事项

Ingress

ACS集群中,与Service4层负载均衡不同,Ingress是集群内Service对外暴露7层的访问接入点。您可以通过Ingress资源来配置不同的7层转发规则,例如通过域名或者访问路径来路由到不同的Service上,从而达到7层的负载均衡作用。更多信息,请参见ALB Ingress管理

image

示例

常见的前后端分离的架构方式中,前后端的访问地址分别使用不同的访问路径。对应这种场景,可以采用Ingress,根据7层的访问路径负载到不同的应用实例上。

image

服务发现DNS

ACS使用DNS来实现应用的服务发现能力,例如客户端应用可以通过Service的服务名解析出它的ClusterIP访问,也可以通过StatefulSetPod名解析出PodIP地址。采用DNS服务发现的能力让集群中应用间的调用与IP地址和部署环境相解耦。

集群的CoreDNS会将Service名自动转换成对应的ServiceIP地址,来实现不同部署环境中同样的访问入口。关于集群DNS组件的使用和调优详细信息,请参见DNS原理和配置说明

image

网络底层基础设施

  • VPC

    阿里云专有网络VPC(Virtual Private Cloud)是基于阿里云创建的自定义私有网络,不同的专有网络之间彻底逻辑隔离。您可以在专有网络内创建和管理云产品实例,例如云服务器、云数据库RDS版和负载均衡等。

    下图展示了VPC的基础拓扑。每个VPC至少由三部分组成:私网网段、交换机和路由表。

    image
    • 私网网段:在创建VPC和交换机时,您需要以CIDR地址块的形式指定专有网络使用的私网网段。

    • 路由表:创建VPC后,系统会自动为您创建一张系统路由表并为其添加系统路由来管理VPC的流量。

    • 交换机:您可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。您可以将应用部署在不同可用区的交换机内,提高应用的可用性。

  • SLB

    阿里云负载均衡SLB(Server Load Balancer)通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。阿里云负载均衡SLB的详细介绍,请参见负载均衡SLB产品家族介绍

    负载均衡默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。

    负载均衡由以下三个部分组成:

    • 负载均衡实例

      一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。

    • 监听

      监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。

    • 后端服务器

      一组接收前端请求的ECS实例。您可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。