现在,你知道每个pod有自己唯一的IP地址,可以通过一个扁平的、非 NAT网络和其他pod通信。Kubernetes是如何做到这一点的?简单来说,Kubernetes不负责这块。网络是由系统管理员或者Container Network Interface(CNI)插件建立的,而非Kubernetes本身。
Kubernetes并不会要求你使用特定的网络技术,但是授权pod(或者更准确地说,其容器)不论是否运行在同一个工作节点上,可以互相通信。pod用于通信的网络必须是:pod自己认为的IP地址一定和所有其他节点认为该pod拥有的IP地址一致。
查看图 1114。当pod A连接(发送网络包)到pod B时,pod B获取到的源IP地址必须和pod A自己认为的IP地址一致。其间应该没有网络地址转换(NAT) *** 作——pod A发送到pod B的包必须保持源和目的地址不变。
这很重要,保证运行在pod内部的应用网络的简洁性,就像运行在同一个网关机上一样。pod没有NAT使得运行在其中的应用可以自己注册在其他pod中。
image
图1114 Kubernetes规定pod必须通过非NAT网络进行连接
例如,有客户端pod X和pod Y,为所有通过它们注册的pod提供通知服务。pod X连接到pod Y并且告诉pod Y,“你好,我是pod X,IP地址为1234,请把更新发送到这个IP地址”。提供服务的pod可以通过收到的IP地址连接第一个pod。
pod到节点及节点到pod通信也应用了无NAT通信。但是当pod和internet上的服务通信时,pod发送包的源IP不需要改变,因为pod的IP是私有的。向外发送包的源IP地址会被改成主机工作节点的IP地址。
构建一个像样的Kubernetes集群包含按照这些要求建立网络。有不同的方法和技术来建立,在给定场景中它们都有其优点和缺点。因此,我们不会深入探究特定的技术,会阐述跨pod网络通用的工作原理。
在 113 节,我们看到创建了pod的IP地址以及网络命名空间,由基础设施容器(暂停容器)来保存这些信息,然后pod容器就可以使用网络命名空间了。pod网络接口就是生成在基础设施容器的一些东西。让我们看一下接口是如何被创建的,以及如何连接到其他pod的接口,如图 1115 所示。
[上传失败(image-d2fcf3-1627950575030)]
图1115 同一节点上pod通过虚拟Ethernet接口对连接到同一个桥接
同节点pod通信
基础设施容器启动之前,会为容器创建一个虚拟Ethernet接口对(一个veth pair),其中一个对的接口保留在主机的命名空间中(在节点上运行ifconfig命令时可以看到vethXXX的条目),而其他的对被移入容器网络命名空间,并重命名为eth0。两个虚拟接口就像管道的两端(或者说像Ethernet电缆连接的两个网络设备)——从一端进入,另一端出来,等等。
主机网络命名空间的接口会绑定到容器运行时配置使用的网络桥接上。从网桥的地址段中取IP地址赋值给容器内的eth0 接口。应用的任何运行在容器内部的程序都会发送数据到eth0 网络接口(在容器命名空间中的那一个),数据从主机命名空间的另一个veth接口出来,然后发送给网桥。这意味着任何连接到网桥的网络接口都可以接收该数据。
如果pod A发送网络包到pod B,报文首先会经过pod A的veth对到网桥然后经过pod B的veth对。所有节点上的容器都会连接到同一个网桥,意味着它们都能够互相通信。但是要让运行在不同节点上的容器之间能够通信,这些节点的网桥需要以某种方式连接起来。
不同节点上的pod通信
有多种连接不同节点上的网桥的方式。可以通过overlay或underlay网络,或者常规的三层路由,我们会在后面看到。
跨整个集群的pod的IP地址必须是唯一的,所以跨节点的网桥必须使用非重叠地址段,防止不同节点上的pod拿到同一个IP。如图 1116 所示的例子,节点A上的网桥使用 10110/24 IP段,节点B上的网桥使用 10120/24 IP段,确保没有IP地址冲突的可能性。
图 1116 显示了通过三层网络支持跨两个节点pod通信,节点的物理网络接口也需要连接到网桥。节点 A的路由表需要被配置成图中所示,这样所有目的地为 10120/24 的报文会被路由到节点B,同时节点B的路由表需要被配置成图中所示,这样发送到 10110/24 的包会被发送到节点A。
图1116 为了让不同节点上的pod能够通信,网桥需要以某种方式连接
按照该配置,当报文从一个节点上容器发送到其他节点上的容器,报文先通过veth pair,通过网桥到节点物理适配器,然后通过网线传到其他节点的物理适配器,再通过其他节点的网桥,最终经过veth pair到达目标容器。
仅当节点连接到相同网关、之间没有任何路由时上述方案有效。否则,路由器会扔包因为它们所涉及的pod IP是私有的。当然,也可以配置路由使其在节点间能够路由报文,但是随着节点数量增加,配置会变得更困难,也更容易出错。因此,使用SDN(软件定义网络)技术可以简化问题,SDN可以让节点忽略底层网络拓扑,无论多复杂,结果就像连接到同一个网关上。从pod发出的报文会被封装,通过网络发送给运行其他pod的网络,然后被解封装、以原始格式传递给pod。
为了让连接容器到网络更加方便,启动一个项目容器网络接口(CNI)。CNI允许Kubernetes可配置使用任何CNI插件。这些插件包含
我们不会去深入探究这些插件的细节,如果想要了解更多,可以参考 https://kubernetesio/docs/concepts/cluster-administration/addons/ 。
安装一个网络插件并不难,只需要部署一个包含DaemonSet以及其他支持资源的YAML。每个插件项目首页都会提供这样一个YAML文件。如你所想,DaemonSet用于往所有集群节点部署一个网络代理,然后会绑定CNI接口到节点。但是,注意Kubetlet需要用 --network-plugin=cni 命令启动才能使用CNI。
关于SDN 技术在传送网中的应用论文
一、SDN 的内涵及其主要特征
现阶段,各界人士所讨论的SDN 可以分为广义的与侠义的两种不同定义。在广义角度来讲SDN 指的是上层的应用性开放资源的界面,用以对短剑变成的控制以及基础网络的实现。从狭义上讲SDN 就是专门的指符合开放网络的基金会定义出的基于标准的转发面开放协议借以实现软件定义网络的开放构架。SDN 的核心是用将网络设备的控制面和数据面相分离的方法来灵活的对网络流量进行控制,将其作为应用创新以及核心网络的良好平台。SDN 主要是由控制器以及openflow 交换机两部分组成。控制器通过对交换机数据的收集和统计为SDN 分配转发的路径。交换机再讲指令转发到相对应的端口。Openflow 交换机使SDN 构架得以实现,基于承载分离和控制的思想,将转发表发送到转发设备。
二、SDN 的技术核心
首先,网络 *** 作系统是SDN 技术的关键要素。网络 *** 作系统也可以叫做网络控制器,它体现了网络的核心智能功能,运用控制器调度以及管理转发面来对策略进行转发,通过对转发面的控制来运行网络控制器上的业务。其次,转发面的抽象建模也是SDN 的关键核心要素之一。第三,openflow 这个转发面的控制协议起着是重要的控制和定义交换机的行为的作用。第四,应用开放界面实现了策略管理和用户之间的灵活协同,使用户体验得到充分的提升。SDN 具有体现设备基础资源的核心特点,可以模拟出一个抽象的网络 *** 作系统。SDN 把IT 技术与移动通信网络技术相融合,对通讯网络的基础构架进行了改变为实现网络集中控制以及可编程性的提高提供了模型。
三、SDN 技术在UTN 中的应用
中国联通的UTN 方案可以使宽带的供应能力得到进一步的提升,更能对运营商的实际需求得到满足,组网能力的提高以及载体方案的灵活多变有利于提供给运营商一个方便、智能、易用的综合承载网络。UTN 承载着灵活多变的业务模式,借以实现全业务的承载和接入。在UTN 的运行过程中面临着很多的挑战。首先3G/LTE 网络需要大量的基站才能得以发展,其单个本地网所对应的移动性的网络承载节点就成千上万。
目前,电信运营商把提升网络的效率与减低综合承载成本放在一个重要的位置来抓。SND 技术在UTN中的应用为IP 与光协同的问题提供了解决思路。SDN 技术有着控制以及转发相分离,控制平面通用化和集中化以及控制器具有可编程性的软件等基本特征,SDN 在UTN 中的应用,可以通过对SDN 技术的引入来实现网络转发平面以及控制平面的解耦,可以抽象虚拟网络设备,对逻辑节点的数目可以大幅度的削减,从逻辑上将物理网络分成多个网络。通过SDN 技术的应用,网络模式已经由协议模式转变为业务模式,借以实现对不同该业务的协同运营维护和管理。SDN 在UTN中的应用可以对网络设备进行简化,使设备成本得到缩减,有利于引入新业务,提高网络的自动化运营维护管理能力,降低运营维护成本。
大量的接入点是对UTN 进行维护的时候遇到的最大问题。SDN 在UTN 中的该应用,首先要从虚拟接入环来完成。SND 在UTN 中的应用可以使接入设备的管理和自动注册功能得以实现,减少了人员投入,降低了运行维护的费用,同时也实现了网络故障的降低以及网络稳定性的提高。目前由于SDN 的在UTN 中应用还处于初级阶段,还有一些需要解决的问题。首先,基础设施以及SDN 控制器之间的控制协议的研发还在进行中。其次,集中控制层面是否会产生网络稳定性的降低还有待进一步的确认。第三,在向SDN 方向发展的过程中如何使新的网络设备与原有的设备之间实现共存也是一个需要解决的问题。
四、SDN 在OTN 中的应用
传统OTN 的特点是刚性带宽管道、固定速率界面。这与当前的众多新业务实时变化、具有突发性的流量模式并不匹配,“刚性”特征不够灵活,无法根据流量需求适时进行网络资源的动态调整,因此,需要更灵活,更开放的网络架构,实时调整,按需分配。SDN 在OTN 中的应用,可以达到使用软件来调整光传输资源其动态的目的,符合业务发展的根本需求,能够有效的使网络利用率得到提高。SDN 的可编程性意味着可以根据实际需求进行改变。传送层的特征和可编程能力取决于组件的可编程能力,进而使节点设备的可编程性变得灵活多变,这些能力可以促进上层开放,这样整个网络的软件定义特征就会得到充分的加强,提升网络整体资源利用效率以及性能,借以对更多的应用加以支持。SDN在OTN 中的应用,通过软件对通用的硬件的灵活配置,对各种因素进行权衡借以找到最佳的传输方式,使单板类型逐渐减少,降低设备的运营和维护成本,有利于维护人员技术要求的降低,有利于业务的开展和部署。
;创建完整的分支网络需要一定的前期规划、组织和资源投入。以下是一些可能有帮助的步骤:
1 制定策略和计划:根据公司的战略和目标,制定建立完整分支网络的策略和计划。计划中需要涉及地点、规模、资源需求等规划。
2 搜寻适当的地点:根据公司的目标市场和需求,筛选合适的地区和城市。需要考虑市场需求、地区人口和消费水平、竞争程度等因素。
3 资源投入和组织:建立分行需要充足的资金投入和专业的组织体系。需要考虑用户需求、员工队伍、IT设施等一系列因素。
4 申请许可证和招聘员工:需要申请许可证并招聘合适的员工。招聘的标准和方法需要在前期的规划过程中就决定,以保证招聘的员工能够符合分行所需的专业素质和团队精神。
5 优化分行的管理和业务:建立良好的分行管理和业务流程,以保证分行能够顺利运营
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)