详情页标题前

阿里云容器服务ACK网络概述-云淘科技

详情页1

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

容器网络CNI

图 1. 容器网络模型阿里云容器服务ACK网络概述-云淘科技

容器化应用会在同一个节点上部署多个业务,而每个业务都需要自己的网络空间。为避免与其他业务网络冲突,需要Pod有自己独立的网络空间,而Pod中应用需要和其他网络进行通信,就需要Pod能够跟不同的网络互相访问。可见容器网络特点如下:

  • 每个Pod都拥有自己独立的网络空间和IP地址。不同Pod的应用可以监听同样的端口而不冲突。

  • Pod可以通过各自的IP地址互相访问。

    集群中Pod可以通过它独立的IP地址与其他应用互通:

    • 同一个集群中,Pod之间相互访问。

    • Pod直接访问同一个VPC下的ECS。

    • 同一个VPC下的ECS直接访问Pod。

    说明

    Pod能直接访问同一个VPC下的ECS和同一个VPC下的ECS能直接访问Pod的前提是您需要正确设置安全组规则。关于如何设置安全组规则,请参见添加安全组规则。

在ACK中,您可以通过两种网络模型实现上述容器网络的能力,分别是Flannel网络模式和Terway网络模式。这两种网络模式采用不同的网络模型,其特点如下:

说明

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

Terway网络模式

Terway网络模式采用的是云原生的网络方案,直接基于阿里云的虚拟化网络中的弹性网卡资源来构建的容器网络。Pod会通过弹性网卡资源直接分配VPC中的IP地址,而不需要额外指定虚拟Pod网段。

Terway网络模式的特点是:

  • 容器和虚拟机在同一层网络,便于业务云原生化迁移。

  • 不依赖封包或者路由表,分配给容器的网络设备本身可以用来通信。

  • 集群节点规模不受路由表或者封包的FDB转发表等配额限制。

  • 不需要额外为容器规划Overlay的网段,多个集群容器之间只要设置安全组开放端口就可以互相通信。

  • 可以直接把容器挂载到SLB后端,无需在节点上使用NodePort进行转发。

  • NAT网关可以对容器进行SNAT,无需节点上对容器网段进行SNAT:容器访问VPC内部资源,所带的源IP都是容器IP,便于审计;容器访问外部网络不依赖conntrack SNAT,降低失败率。

  • Terway网络模式支持通过网络策略(NetworkPolicy)配置Pod间网络访问的规则。

    网络策略(NetworkPolicy)是一种关于Pod间及Pod与其他网络端点间所允许的通信规则的规范。NetworkPolicy资源使用标签选择Pod,并定义选定Pod所允许的通信规则。更多信息,请参见在ACK集群使用网络策略或在ACK Serverless集群使用网络策略Network Policy

  • 在使用Alibaba Cloud Linux系统作为节点的操作系统时,Terway网络模式支持使用更高效的IPvlan+eBPF链路,加速容器网络性能。

Flannel网络模式

Flannel网络模式中Pod的网段独立于VPC的网段。Pod网段会按照掩码均匀划分给每个集群中的节点,每个节点上的Pod会从节点上划分的网段中分配IP地址。Flannel网络基于阿里云VPC的自定义路由能力,来实现跨节点的Pod直接与VPC的互相访问。

Flannel网络模式的特点是:

  • 基于阿里云VPC的Flannel网络无封包,相对默认的Flannel VXLAN性能提升20%。

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

  • 每个节点需要对应一个VPC的路由表条目,一个VPC下的Kubernetes节点数量受限于VPC路由表的配额。

关于阿里云专有网络VPC网段和Kubernetes网段关系,请参见专有网络VPC网段和Kubernetes网段关系。

关于如何选择合适的网络模式,请参见使用Terway网络插件。

ACK常见网络能力一览表

分类

常见网络能力

网络插件

参考文档

Terway

Flannel

网络配置管理

IPv4/IPv6双栈

支持

不支持

  • 创建Kubernetes托管版集群

  • 创建Kubernetes专有版集群

节点维度网络配置

支持

不支持

配置Terway网络下节点级别网络

Pod维度网络配置

支持

不支持

为Pod配置固定IP及独立虚拟交换机、安全组

Pod固定IP

支持

不支持

为Pod配置固定IP及独立虚拟交换机、安全组

Pod QoS

支持

不支持

为Pod配置QoS

网络策略Network Policy

支持

不支持

使用网络策略Network Policy

设置Pod安全组

支持

不支持

  • Pod维度配置:为Pod配置固定IP及独立虚拟交换机、安全组

  • 节点维度配置:为弹性网卡(ENI)配置多个安全组

扩容Pod网段

支持

不支持

  • 扩容Terway场景下的Pod虚拟交换机

  • 为Pod配置固定IP及独立虚拟交换机、安全组

使用VPC的多路由表功能

支持

支持

  • Terway:无需修改

  • Flannel:使用VPC的多路由表功能

南北向访问

Pod访问公网

支持

支持

  • Terway:

    • 为已有集群开启公网访问能力

    • 为Pod挂载独立公网EIP

  • Flannel:为已有集群开启公网访问能力

从公网直接访问Pod

支持

不支持

  • 为Pod挂载独立公网EIP

  • 为Pod配置IPv6公网带宽

  • 使用网关DNAT规则直接访问Pod

使用LoadBalancer服务

支持

支持

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

使用Ingress

支持

支持

Ingress概述

Service

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

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

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

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

    • ClusterIP

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

    说明

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

    • NodePort

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

    • LoadBalancer

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

    • 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

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

图 2. Ingress和Service关系阿里云容器服务ACK网络概述-云淘科技

示例

常见的前后端分离的架构方式中,前后端的访问地址分别使用不同的访问路径。对应这种场景,可以采用Ingress,根据7层的访问路径将负载分配到不同的应用实例上。阿里云容器服务ACK网络概述-云淘科技

服务发现DNS

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

集群的Coredns会将Service名自动转换成对应的Service的IP地址,来实现不同部署环境中相同的访问入口。关于集群DNS组件的使用和调优详细信息,请参见DNS原理和配置说明。阿里云容器服务ACK网络概述-云淘科技

网络底层基础设施

    • VPC

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

        每个VPC都由一个路由器、至少一个私网网段和至少一个交换机组成。阿里云容器服务ACK网络概述-云淘科技

        • 私网网段

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

          您可以使用下表中标准的私网网段及其子网作为VPC的私网网段,也可以使用自定义地址段作为VPC的私网网段。更多信息,请参见网络规划。

          网段

          说明

          192.168.0.0/16

          可用私网IP数量(不包括系统保留地址):65,532

          172.16.0.0/12

          可用私网IP数量(不包括系统保留地址):1,048,572

          10.0.0.0/8

          可用私网IP数量(不包括系统保留地址):16,777,212

          自定义地址段

          除100.64.0.0/10、224.0.0.0/4、127.0.0.0/8、169.254.0.0/16及其子网外的自定义地址段。

        • 虚拟路由器

          虚拟路由器(vRouter)是专有网络的枢纽。作为专有网络中重要的功能组件,它可以连接专有网络内的各个交换机,同时也是连接专有网络和其他网络的网关设备。每个专有网络创建成功后,系统会自动创建一个虚拟路由器。每个虚拟路由器至少关联一张路由表。

          更多信息,请参见路由表概述。

        • 交换机

          交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源。创建专有网络后,您可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。您可以将应用部署在不同可用区的交换机内,提高应用的可用性。

          更多信息,请参见创建和管理交换机。

    • SLB

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

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

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

        • 负载均衡实例

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

        • 监听

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

        • 后端服务器

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

相关文档

  • 管理配额

  • 使用网络策略Network Policy

  • Kubernetes集群网络规划

  • 使用Terway网络插件

  • 创建安全组

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/168170.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云RDS数据库设置白名单-云淘科技

    创建RDS实例后,您需要设置RDS实例的白名单,以允许外部设备访问该RDS实例。 操作场景 IP白名单指允许访问RDS实例的IP清单。设置IP白名单可以让RDS实例得到高级别的访问安全保护,建议您定期维护白名单。 通常需要设置IP白名单的场景如下: 场景1 创建RDS实例后,您需要将外部IP地址添加至IP白名单中,外部设备才可以正常访问该RDS实例。 场景2…

    2023年12月9日
  • 阿里云ECS云服务器eRDMA概述-云淘科技

    本文主要为您介绍什么是eRDMA、eRDMA的功能优势、应用场景以及规格等。 功能简介 什么是eRDMA 弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA),是阿里云自研云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion Control )算法,享有传统RDMA网…

    阿里云服务器 2023年12月9日
  • 阿里云日志服务SLS网络质量分析-云淘科技

    网络质量分析器应用提供网络质量分析报表,用于展示数据延迟、丢包率、探测次数、日活用户等变化趋势,帮助您了解App的网络质量情况。 数据筛选条件 网络质量分析器应用会根据您设置的条件,展示对应的网络质量数据。例如趋势分析图表的筛选条件如下图所示。 趋势分析网络质量分析器应用会根据您设置的条件,展示指定条件下数据延迟、丢包率、探测次数的变化趋势。 延迟:统计指定…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云人工智能平台PAI创建带有ACK灵骏托管版的集群-云淘科技

    阿里云容器服务ACK灵骏托管版集群是容器服务Kubernetes版(ACK)针对智能计算灵骏提供的集群类型,提供全托管和高可用控制面板的标准Kubernetes集群服务,支持以灵骏计算节点作为Kubernetes集群的工作节点。本文为您介绍如何创建带有ACK灵骏托管版的集群。 前提条件 已根据业务需求购买所需灵骏产品(计算节点、灵骏连接),具体操作,请参见购…

    2023年12月10日
  • 阿里云RDS数据库临时混访方案(同时保留经典网络和专有网络地址)-云淘科技

    为满足日益增多的网络迁移需求,RDS新增了网络混访功能,可实现在无访问中断的情况下将经典网络平滑迁移到VPC上。 背景信息 以往将RDS实例从经典网络迁移到VPC时,经典网络的内网地址会变为VPC的内网地址(连接字符串没有变化,背后的IP地址有变化),会造成1次30秒内的闪断,而且经典网络中的ECS将不能再通过内网访问该RDS实例,为了能够平滑迁移网络,RD…

    阿里云数据库 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。