云原生网络
云原生网络的基本目标是满足云原生服务的网络端点(容器)和服务间的互通性、安全性和负载均衡要求。Kubernetes已经成为容器编排的事实标准,容器网络也需与Kubernetes的调度机制相匹配。容器网络接口CNI(Conteinre Network Interface)是现行的网络接口标准, CNI接口只实现创建、删除容器时的调用方法,其他所有的网络能力都交给网络厂商去增值。这在一定程度上加速了网络方案的繁荣,但是给用户的方案选型造成了较大困扰。大部分的用户场景都是基于网络的通讯协议进行方案选择,根据网络协议的不同,可将网络方案分为路由模式、Overlay和L2方案三种。
null | 路由模式 | Overlay模式 | L2模式 |
---|---|---|---|
优势 | 网络性能高 支持Kubernetes原生负载均衡和网络策略机制 *符合传统网络的监管要求 |
物理网络无侵入 支持Kubernetes原生负载均衡和网络策略机制 |
网络性能高 可直接用于IaaS层网络通信,易于迁移 *符合传统的监管需求 |
缺点 | *大规模应用场景需要交换机与BGP打通 | 存在封装影响性能 排查问题难,需引入额外排查工具 *无法与传统的网络监管模式兼容 |
网络管理依赖于物理网络 大部分方案无法复用Kubernetes的网络优势 |
可选方案 | Calico BGP Flannel Host Gateway Kube-router Contiv BGP |
Calico IPIP,VXLAN Flannel VXLAN, UDP WEAVE Canal *SDN方案 |
Lunix Bridge Macvlan SRIOV OVS Bridge Contiv Vlan Ovn-kubernetes |
自CNI标准发布到2020年,云原生网络已经演进近6年时间。也积累了大量的用户落地案例和大规模的实践案例。未来对于云原生网络的演进,依旧会在用户落地场景方向上深度演进。总结起来主要是以下几个趋势:
互访场景需求加速容器网络与主机网络互通。 随着云原生的普及,服务端点(容器)的规模快速增长(十万甚至百万),互访场景越来越丰富,比如:跨集群、跨VPC、混合云互访等,这要求容器端点具有与宿主节点(虚机)相同的互通能力,容器成为VPC中的一等公民,容器(POD)和服务(ClusterIP)具有独立VPC的子网地址,甚至具有独立的直通网口(如:ENI),这样在获得更高转发性能、更低损耗的同时,具有了更好的隔离性,通过在容器挂接的网口配置安全组规则,能够实现容器级别的微分段network policy。当然,这给vpc网络的支持的网口规模(10w+)和发放速度(秒级)提出了的挑战。另外,以GKE为代表的厂商,推出container-native的分布式负载均衡,将云原生业务的东西向负载均衡能力下沉到VPC网络中,消除了原来节点内iptables/ipvs占用的内存和计算开销,具有更好的资源效率,相信这也会成为未来的趋势。
云原生网络方案将聚焦解决特定场景的问题。 平台的安全问题在所有的平台演进和建设过程中一直扮演着非常重要,但是不十分紧急的角色。因此,在容器安全建设上,大部分组织都是采取防守和被动姿态。但是本身在近几年陆续爆出大量的基于容器平台的安全隐患以及在工信部和网信办联合组织的“护网行动”的大背景之下,容器安全已经成为云原生底座无法绕开的一个问题。 容器网络安全则在整个底座安全里面扮演了非常重要的角色,因此也将成为之后的CNI网络演进的方向和趋势。
网络安全将成为云原生技术底座的重要组成部分。 平台的安全问题在所有的平台演进和建设过程中一直扮演着非常重要,但是不十分紧急的角色。因此,在容器安全建设上,大部分组织都是采取防守和被动姿态。但是本身在近几年陆续爆出大量的基于容器平台的安全隐患以及在工信部和网信办联合组织的“护网行动”的大背景之下,容器安全已经成为云原生底座无法绕开的一个问题。 容器网络安全则在整个底座安全里面扮演了非常重要的角色,因此也将成为之后的CNI网络演进的方向和趋势。
SDN在大规模网络场景下的应用会越来越突出。 在底层网络SDN的趋势之下,容器网络管理作为未来用户第二个网络管理平面,其实更需要SDN的技术应用。SDN本身的两大特点: 1. 网络可编程 2. 数据平面和管理平台分离。首先,用户可以基于这两大特点来进行自己的网络管理平台的开发和编程,和传统的网络管理平面进行便利的兼容和对接。其次,SDN带来的丰富的网络管理功能和细粒度的网络管控,都可以支撑在大规模场景的网络精细化管理。