网络管理概述

ACK Edge集群支持将云下IDC服务设备以及边缘设备接入到阿里云容器服务平台,并提供云上的ACK功能,同时可以管理自有的计算资源,本文介绍ACK Edge集群网络的重要概念和网络模型,包括云边连接网络、容器网络CNI、Service和Ingress等。通过了解这些概念,您可以更合理地设计应用部署以及网络访问方式。

云边网络连接类型

ACK Edge集群提供两种网络接入类型:公网型和专线型。

  • 公网接入:本地IDC设备或边缘设备通过公网NAT或公网网卡访问云上托管的ACK控制面和阿里云产品,实现控制面网络通信以及云产品的访问。

  • 专线接入:本地IDC或边缘设备通过专线、VPN、或其他网络方案打通,本地IDC计算设备或边缘设备通过专线访问云上托管的ACK控制面和阿里云云产品。下图以阿里云高速通道为例。

image

云边运维通信组件

ACK Edge集群采用了中心云管理IDC或边缘设备的架构,由于计算设备通常分散在多个地域及不同的网络域中,因此中心云与边缘侧无法直接通信。

为满足中心云对边缘侧运维、监控的需求,可以采用以下两种解决方案:

  • 专线通信:通过专线的方案连接中心云VPC以及边缘侧的IDC或边缘设备,实现云边通过专线进行私网通信。

  • 公网隧道:通过云边运维通信组件Raven在云边之间的公网上构建反向隧道,通过反向隧道实现运维监控流量通信。要求边缘侧IDC或设备具有访问公网的能力。更多详细信息,请参见跨域运维通信组件Raven

容器网络CNI

image

Kubernetes本身并未实现容器间的网络互联能力,但是它通过容器网络接口(CNI)对容器间的网络做出了标准化的定义:

  • Pod在容器网络中的状态随着Pod生命周期而变化。例如,Pod创建后需要加入网络,销毁后需要退出网络。

  • Pod在容器网络中拥有唯一的IP地址,以便于识别身份。

  • Pod可以与集群内的端点与集群外的端点互相访问。

容器网络插件(CNI Plugins)负责容器网络的具体实现。容器网络插件决定了Pod IP地址分配的机制、是否使用Overlay网络、集群内流量的转发链路、对Pod的访问控制机制等容器网络特性。目前已经有很多知名的开源容器网络插件,如Calico、Flannel、Cilium等。

ACK Edge集群支持两种容器网络插件:Flannel与Terway Edge。这两种插件拥有不同的特性,请参照下方介绍,在创建集群前完成容器网络插件的选型。

重要

集群创建完成后,不支持Terway Edge与Flannel之间的变更切换。

Flannel网络模式(Overlay容器网络)

ACK Edge集群中Flannel采用了VXLAN模式,在三层主机网络上构建一层VXLAN容器网络,实现跨主机的Pod互访。

Flannel网络模式中Pod的网段独立于VPC的网段。Pod网段会按照掩码均匀划分给每个集群中的节点,每个节点上的Pod会从节点上划分的网段中分配IP地址。具有以下特点:

  • Pod网段独立于VPC的虚拟网段。

  • 容器间数据包会通过主机进行VXLAN封包以进行传输。

  • 开箱即用,无需外部网络设备的额外配置。

关于Flannel网络插件详细信息,请参见Flannel网络插件

Terway Edge网络模式(Underlay容器网络)

ACK Edge集群中,Terway Edge版在云端节点池中采用云原生的网络方案,直接基于阿里云VPC中的弹性网卡资源构建容器网络,Pod会通过弹性网卡直接分配VPC中的IP地址。在边缘节点池中则需要指定一个虚拟的Pod网段容器会从这个虚拟的Pod网段中获取IP地址。具有以下特点:

  • 云端Pod网段与ECS同位于VPC网段中,在同一网络平面。

  • 边缘Pod网段独立于主机网络网段。

  • 容器间通信无需封包,相比于Overlay容器网络效率更高。

  • 需要配置外部网络设备的路由,实现容器网络包的传输。

  • 支持集群外主机、容器、云产品通过Pod IP直接访问集群内容器。

关于Terway Edge网络插件详细信息,请参见Terway Edge网络插件

Service概述

Service是可以对一组容器提供固定访问入口的服务暴露方式,支持以下多种模式,以满足不同来源和类型的客户端访问需求。

类型

说明

ClusterIP

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

说明

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

NodePort

NodePort类型的Service通过集群节点上的一个固定端口,将应用向外部暴露,您就可以在集群外部通过节点的IP地址和端口访问集群内的应用。

LoadBalancer

LoadBalancer类型的Service同样是将集群内部部署的应用向外暴露,它通过阿里云的负载均衡进行暴露的,相对于NodePort方式,有更高的可用性和性能。关于如何通过LB类型的Service服务暴露,请参见使用负载均衡类型的Service暴露应用

Headless Service

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

ExternalName

ExternalName类型的Service会在集群中将一个内部服务名称映射到一个外部域名。这种映射使得集群内的Pod可以通过Service Name来访问外部域名。

ACK Edge集群中,由于计算资源通常分布在不同的网络域,针对分布式场景为您提供了以下能力。

类型

说明

Service的服务拓扑

当客户端和被访问的服务端Pod位于不同网络域时,通信将无法完成,采用Service服务拓扑能力后,客户端的请求只达到本网络域或本节点上的后端Pod,相关操作,请参见节点池服务拓扑管理

NodePort Service的端口隔离

为了让多个网络域的NodePort Service进行端口隔离,您可以对所监听端口进行隔离,相关操作,请参见NodePort端口监听隔离

Ingress概述

ACK Edge集群中,与Service的4层负载均衡不同,Ingress是集群内Service对外暴露7层的访问接入点,用于为集群中的多个Service提供统一的入口。您可以通过Ingress资源来配置不同的7层的转发规则,例如通过域名或者访问路径来路由到不同的Service上,从而达到7层的负载均衡作用。更多信息,请参见Ingress概述

image