欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Kubernetes Pod 是如何获取 IP 地址的.docx

    • 资源ID:1464704       资源大小:93.20KB        全文页数:10页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Kubernetes Pod 是如何获取 IP 地址的.docx

    KUberneteS网络模里的核心要求之一是每个Pod都拥有自己的IP地址并可以使用该IP地址进行通信。很多人刚开始使用KUberneteS时,还不消楚如何为每个Pod分配IP地址。他们了解各种组件如何独立工作,但不清烬这些组件如何加合在一起使用。例如他们了解什么是CNI插件,但是不知道它们是如何被调用的“本文就介绍了各种网络组件在Kubemetes集群中是如何交互的,以及如何帮助每个Pod都获取IP地址。在Kubernetes中有多种网络设署方法,以及containerruntime的各种选项.这篇文章将使用Flannel作为networkprovider,并使用Containered作为containerruntime.背景棱念容叁网络同一主机上的容善在同主机上运行的容洪通过IP地址相互通信的方法之一是使用1.inuxBridge,即在Kubernetes(和Docker)世界中,创建veth(虚拟以太网)设备。该Velh设备的端连接在容涔网络命名空间,另一端连接到主机网络上的1.inUXBridRce同一主机上的所有容器都将这vethpair的一端连接到1.inuxBridge,它的可以通过Bridge使用IP地址相互通侑.1.inuxBridge也戢分配了一个IP地址,它充当从目的地到不同打点的Pod流出流量的网关.不同主机上的容导在不同I:机上运行的容器可以通过其IP地址相互通信的方式之一是使用数据包封装(PaCketenCaPSUlatiOn)。FIannel通过vxlan使用该功能,vxlan将原始数据包封装在UDP数据包中并将其发送到目的地。在Kubernetes柒群中,Flannel会在每个节点上创建一个vxlan设备和一些路由表.祗个发往不同主机上的容器的数据包都会通过vxlan设备,并封装在UDP数据包中.在目标位置,它会提取封装的数据包,然后将数据过路由到目的地Pod.注意:这只是配置容器之间网络的方法之一.CRICRK容器运行时接口)是一个插件接口,允许kubelet使用不同的containerruntimes.各种containerruntimes都实现了CRlAPI,这使用户可以在Kubernetes安装中使用他们想要的containerruntimes.CNlCNI(容洪网络接口)项目包含一个为1.inUX容涔提供基于通用插件网络解决方案的规则.它由各种插件组成,这些插件在配置Pod网络时执行不同的功能.CNl插件是遵循CNI规范的Ur执行文件。为节点子网分配PodIP地址如果要求所有I>od具有IP地址,那么就要确保整个集群中的所有Pod的IP地址是唯一的。这可以通过为每个节点分配一个唯一的子网来实现,即从子网中为Pod分配节点IP地址,节点IPAM控制寿当nodciPaBl假递给kube-controlIvrnnanager的一controllers命令行标志时,它将为每个节点分配来自集群Cn)R(集群网络的IP范围)的专用子网(PodeIDR).由于这些POdClDR是不相交的子网,因此它可以为每个Pod分配唯一的IP地址。当Kubernetes节点首次在集群上注册时,公被分配一个podCIDR.要更改分配给集群中节点的podClDR.需要先注储节点,然后使用应用于KUbernCteS控制平面的任何配置更改来屯新注册节点.PodCIDR可以使用以下命令列出节点的名称:$kubectlgetno<nodeName>-ojsonIjq,.spec.podCIDR'1.244.24Kubelet-,CkmtainerRuntime和CNI插件交互当在节点上调度Pod时,一启动Pod就会发生根多事情。这迎我们仅关注与Pod配置网络有关的动态,旦在节点上调度了Pod,将配置网络并启动应用程序容器,Ol(?)IuMMCitoCRiIMtn»crMtpodMpodnetMCrtK(7)IUMMM8v<-/p911Q0tMCM7K«taMC4*CMu9nZH0konCorMtner参考:容器式cri插件架构COntainerRuntiae与CNI插件的交互每个networkprovider都有一个CNI插件,containerruntime公调用该插件,在Pod启动时配置网络.使用容渊化作为containerruntime.容活化CRI插件将调用CNI插件.每个networkprovider都在每个Kubernetes节点上安装一个代理,以配置Pod网络。安装networkprovideragent后,它会随CNI一起配置或者在节点上创建,CRI插件金使用它来确定要iB)用哪个CNI插件。CNl配置文件的位置是可配置的默认值为etccninet.d<Config-file>.集群管理员需要在每个节点上交付CNI插件.CNI插件的位司也是可配置的,默认值为optcnibin,如果使用Containerd作为containerruntime.则可以在Containerdconfig部分Fplugins,*io.Containerd.grpc.vl.cri*.cni'指定CNI配置和CNI插件的路径.本文中我们将Flannel作为networkprovider,这里简单介绍一下Flannel的设置,Flanneld是Flannel守护程序,通常install-cni作为带有初始化容器的守护程序安装在Kubernetes柒群上。insiall-cni容器创建CNl配理文件在每个节点Jtetccnint.d10-fIannel.conflist<.Flanneld创建一个vxlan设备,从apisener获取网络无数据,并监控Pod上的更新.创建Pod时,它将在整个集群中为所有Pod分配路由,这些路由允许Pod通过IP地址相互连接,ContainerdCRI插件和CNI插件之间的交互可以如下所示:KubemetesNodeMCcet.<10rIarwwlCrMfUmelMv3RBnnei6PMlnCOnigUmggMgfCNIPlUglCrti0tCMcMaMtMiorvwconimentaMigttiothepodMtMenogeAjgnamew9tfewayIRM>vsBorecnObrw>0eOUlMa2nuMmvrllb0*lwcMQrBcftlOX:<WM4.lJ4t*MM*,c.M.l如上所述,kubelet调用ContaineredCRI插件创建容器,再调用CNI插件为容器配置网络.NetworkproviderCNI插件调用其他基本CNI插件来配置网络。CNl插件之间的交互如I下所述.CNI插件之间的交互有多种CNl插件可帮助配置主机上容器之间的网络,本文主要讨论以下3个插件,FlannelCNI插件当使用Flannel作为networkprovider时,ContaincredCRl插件使用CNI配置文件,调用FlannelCNl插件:eccninei.d10flannel.conflist.$catetccninet.dl-fIannel.conflist"name":"cni"r"plugins":"type":"flannel""delegate":"ipMasq":falset"hairpinMode":true,wIsDefaultGatewaym:true)FannelCNl插件与Flanneld结合使用,当Flanneld启动时,它将从apiserver中获取pdClDR和其他与网络相关的详细信息,并将它们存储在文件中runflannelsubnet.env.F1.ANNE1.-NETWORK=1.244.0.0/16F1.ANNE1._SUBNET=10.244.0.1/24F1.ANNE1._MTU=1450F1.ANNE1._IPMASQ=falseElannelCNI插件使用runfIannel/subnet.env的信息来配置和调用BridgeCNI插件.BridgeCHI插件同annulCNI插件使用以下配置调用BridgeCNI插件:"name":"cni0""type":"bridge""mtu":1450r"ipMasq":false',isGateway,*:true,11ipam":"type":"host-local","subnet":"10.244.0.0/24")BridgeCNl插件第一次调用时,它会创建,个1.inuxBridge"name”:*Cni0"在配置文件中,然后为每个Pod创建vethpair.其一端在容器的网络命名空间中,另一端连接到主机网络上的1.inuxBridge.使用BridgeCNI插件,主机上的所有容器都连接到主机网络上的1.inUXBridge.配置完Vethpair后,Bridge插件将调用主机本地IPAMCNl插件。我们可以在CNIconfig中配置要使用的IPAM插件,CRl插件用于调用FlannelCNl插件。主机本地IPAMCNI插件BridgeCNl插件使用以下配置调用主机本地IPAMCNI插件:"name":',cni0n"ipam":"type":"host-local",subnet":',10.244.024h."dataDir":nvarlibcninetworks,主机本地IPAMdP地址管理)插件从中返回容器的IP地址,SUbnet将分配的IP本地存储在主机下datal)ir指定的目录中varlibcninetworks<network-namc=cniO><ip>varlibcninetworks<nctwork-uamekni><ip>文件包含IP分配到的容器ID.调用时,主机本地IPAM插件返回以下有效负我:,ip4,':"ip":"10.244.4.2""gateway":"10.244.4.3m,"dns":总结Kube-Controller-Inanager为每个节点分花一个PodCU)Re从POdCn)R中的子网值为节点上的POd分配了IP地址。由于所有节点上的POdCIDR是不相交的子网,因此它允许为鹤个pod分配唯一的IP地址.Kubernetes集群管理员可配置和安装kublet.containerruntime,networkprovider,并在每个节点上分发CNI插件.Networkprovideragent启动时,将生成CNI配区,在节点上两度Pod后,kubelet会潮用CRl插件来创建Pod。在容器情况下,容器的CRl插件调用CNI配置中指定的CNl插件来配置Pod网络。所有这些都公影峋Pod获取【P地址.

    注意事项

    本文(Kubernetes Pod 是如何获取 IP 地址的.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开