安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Kubernetes(k8s)CNI(Calico)网络模型

11月7日 先锋客投稿
  一、概述
  Calico是一个联网和网络策略供应商。Calico支持一套灵活的网络选项,因此你可以根据自己的情况选择最有效的选项,包括非覆盖和覆盖网络,带或不带BGP。Calico使用相同的引擎为主机、Pod和(如果使用Istio和Envoy)应用程序在服务网格层执行网络策略。Calico以其性能、灵活性而闻名。Calico的功能更为全面,更为复杂。它不仅提供主机和pod之间的网络连接,还涉及网络安全和管理。CalicoCNI插件在CNI(containernetworkinterface)框架内封装了Calico的功能。
  GitHub地址:https:github。comprojectcalicocalico
  官方文档:https:projectcalico。docs。tigera。ioaboutaboutcalico
  想了解flannel的小伙伴,可以参考我这篇文章:Kubernetes(k8s)CNI(flannel)网络模型原理
  其它CNI插件,可以查看k8s官网:https:kubernetes。iodocsconceptsclusteradministrationaddons二、Calico架构和核心组件
  Calico不使用重叠网络比如flannel和libnetwork重叠网络驱动,它是一个纯三层的方法,使用虚拟路由代替虚拟交换,每一台虚拟路由通过BGP协议传播可达信息(路由)到剩余数据中心;Calico在每一个计算节点利用LinuxKernel实现了一个高效的vRouter来负责数据转发,而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播小规模部署可以直接互联,大规模下可通过指定的BGProutereflector来完成。
  Calico的核心组件:Felix:运行在每一台Host的agent进程,主要负责网络接口管理和监听、路由、ARP管理、ACL管理和同步、状态上报等。etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;BGPClient(BIRD):Calico为每一台Host部署一个BGPClient,使用BIRD实现,BIRD是一个单独的持续发展的项目,实现了众多动态路由协议比如BGP、OSPF、RIP等。在Calico的角色是监听Host上由Felix注入的路由信息,然后通过BGP协议广播告诉剩余Host节点,从而实现网络互通。BGPRouteReflector:在大型网络规模中,如果仅仅使用BGPclient形成mesh全网互联的方案就会导致规模限制,因为所有节点之间俩俩互联,需要N2个连接,为了解决这个规模问题,可以采用BGP的RouterReflector的方法,使所有BGPClient仅与特定RR节点互联并做路由同步,从而大大减少连接数。三、什么是BGP?
  边界网关协议(BGP)是运行于TCP上的一种自治系统的路由协议,也是互联网上一个核心的去中心化自治路由协议。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路,同时在AS级别上可实施策略决策。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。BGP是路由器之间的通信协议,主要用于AS(AutonomousSystem,自治系统)之间的互联。AS内部有多个BGPspeaker,分为ibgp、ebgp,ebgp与其它AS中的ebgp建立BGP连接。AS内部的BGPspeaker通过BGP协议交换路由信息,最终每一个BGPspeaker拥有整个AS的路由信
  可以把calico中的node节点当成一个AS,而node节点中的容器是AS中的router,calico通过BGP解析,将整个网络中容器地址的路由表绘制出来。
  IBGP(InternalBGP):当BGP运行于同一自治系统内部时,被称为IBGP。EBGP(ExternalBGP):当BGP运行于不同自治系统之间时,称为EBGP。
  BGP两种模式:全互联模式(nodetonodemesh)全互联模式,每一个BGPSpeaker都需要和其他BGPSpeaker建立BGP连接,这样BGP连接总数就是N2,如果数量过大会消耗大量连接。如果集群数量超过100台官方不建议使用此种模式。路由反射模式RouterReflection(RR)RR模式中会指定一个或多个BGPSpeaker为RouterReflection,它与网络中其他Speaker建立连接,每个Speaker只要与RouterReflection建立BGP就可以获得全网的路由信息。在calico中可以通过GlobalPeer实现RR模式。三、Calico两种网络模式1)IPIP模式从字面来理解,就是把一个IP数据包又套在一个IP包里,即把IP层封装到IP层的一个tunnel,看起来似乎是浪费,实则不然。它的作用其实基本上就相当于一个基于IP层的网桥!一般来说,普通的网桥是基于mac层的,根本不需IP,而这个ipip则是通过两端的路由做一个tunnel,把两个本来不通的网络通过点对点连接起来。ipip的源代码在内核netipv4ipip。c中可以找到。
  Calico的IPIP模式工作原理如下图:
  Calico使用的这个tunl0设备,是一个IP隧道(IPtunnel)设备
  在上面的例子中,IP包进入IP隧道设备之后,就会被Linux内核的IPIP驱动接管。IPIP驱动会将这个IP包直接封装在一个宿主机网络的IP包中,如下所示:
  2)BGP模式边界网关协议(BorderGatewayProtocol,BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。BGP,通俗的讲就是讲接入到机房的多条线路(如电信、联通、移动等)融合为一体,实现多线单IP,BGP机房的优点:服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统。BGP网络相比较IPIP网络,最大的不同之处就是没有了隧道设备tunl0。前面介绍过IPIP网络pod之间的流量发送tunl0,然后tunl0发送对端设备。BGP网络中,pod之间的流量直接从网卡发送目的地,减少了tunl0这个环节。
  四、安装Calico插件1)通过helm安装Calico
  官方文档:https:projectcalico。docs。tigera。iogettingstartedkuberneteshelm添加源helmrepoaddprojectcalicohttps:projectcalico。docs。tigera。iochartshelmrepoupdate下载helmpullprojectcalicotigeraoperatorversionv3。24。5解压tarxftigeraoperatorv3。24。5。tgz安装,默认命名空间:calicosystemhelminstallcalico。tigeraoperatornamespacetigeraoperatorcreatenamespace检查tigeraoperator所有资源kubectlgetallntigeraoperator2)通过yaml文件安装wgethttps:docs。projectcalico。orgmanifestscalico。yamlkubectlapplyfcalico。yaml查看kubectlgetallnkubesystemgrepcalico3)k8sflannel网络切换calico1、卸载flannel插件1、查看已安装flannel信息catetccninet。d10flannel。conflist2、删除flannel布署资源kubectldeletefkubeflannel。yml3、清除flannel遗留信息,在集群各节点清理flannel网络的残留文件ifconfigcni0downiplinkdeletecni0ifconfigflannel。1downiplinkdeleteflannel。1rmrfvarlibcnirmrfetccninet。d2、开始安装Calico插件下载wgethttps:docs。projectcalico。orgmanifestscalico。yaml安装kubectlapplyfcalico。yaml查看kubectlgetallnkubesystemgrepcalico如果节点NotReady,重启以下容器或者kubelet试试systemctlrestartcontainerddocker
  五、网络策略
  关于网络策略,可以参考我这篇文章:【云原生】k8s中的hostNetwork和NetworkPolicy讲解与实战操作
  六、简单使用
  官方文档:https:projectcalico。docs。tigera。iosecuritykubernetespolicy1)网络策略示例1、允许来自同一命名空间中的Pod的入口流量
  允许来自同一命名空间中的Pod的入口流量,在以下示例中,传入带有标签的Pod的labelcolor:red,仅当它们来自pod带有labelcolor:red,才被允许转到80端口。kind:NetworkPolicyapiVersion:networking。k8s。iov1metadata:name:allowsamenamespacenamespace:defaultspec:podSelector:matchLabels:color:blueingress:from:podSelector:matchLabels:color:redports:port:802、允许来自不同命名空间中的Pod的入口流量
  在以下示例中,仅当传入流量来自带有标签color:red的Pod时,才允许传入流量,在带有标签的命名空间中带有标签shape:square,在端口上80。kind:NetworkPolicyapiVersion:networking。k8s。iov1metadata:name:allowsamenamespacenamespace:defaultspec:podSelector:matchLabels:color:blueingress:from:podSelector:matchLabels:color:rednamespaceSelector:matchLabels:shape:squareports:port:802)固定PodIP
  【示例1】pod
  利用注解cni。projectcalico。orgipAddrsvifixediptestpod。yamlapiVersion:v1kind:Podmetadata:name:myapppodlabels:app:myappannotations:cni。projectcalico。orgipAddrs:〔10。244。1。200〕spec:containers:name:myappcontainerimage:busyboxcommand:〔sh,c,echoHelloKubernetes!sleep3600〕
  【示例2】控制器单pod
  利用注解cni。projectcalico。orgipAddrsvifixediptestdeployment。yamlapiVersion:appsv1kind:Deploymentmetadata:name:fixediptestnamespace:defaultlabels:k8sapp:cloudnativertestspec:replicas:1strategy:type:RollingUpdaterollingUpdate:maxUnavailable:1selector:matchLabels:k8sapp:cloudnativertesttemplate:metadata:labels:k8sapp:cloudnativertestannotations:cni。projectcalico。orgipAddrs:〔10。244。1。220〕spec:containers:name:fixediptestimage:nginx:1。7。9imagePullPolicy:IfNotPresentports:name:httpcontainerPort:80
  【示例3】控制器多pod固定IP池
  需要创建额外IP池(除了默认IP池),利用注解cni。projectcalico。orgipv4pools。
  这里先安装一个客户端工具calicoctlwgethttps:github。comprojectcalicocalicoreleasesdownloadv3。24。5calicoctllinuxamd64mvcalicoctllinuxamd64usrlocalbincalicoctlchmodxusrlocalbincalicoctl
  编排vifixediptestdeployment2。yamlapiVersion:projectcalico。orgv3apiVersion:crd。projectcalico。orgv1kind:IPPoolmetadata:name:newpool1spec:blockSize:31cidr:10。244。3。22024ipipMode:NevernatOutgoing:trueapiVersion:projectcalico。orgv3apiVersion:crd。projectcalico。orgv1kind:IPPoolmetadata:name:newpool2spec:blockSize:31cidr:10。244。4。22124ipipMode:NevernatOutgoing:trueapiVersion:appsv1kind:Deploymentmetadata:name:fixediptest2namespace:defaultlabels:k8sapp:cloudnativertestspec:replicas:3strategy:type:RollingUpdaterollingUpdate:maxUnavailable:1selector:matchLabels:k8sapp:cloudnativertesttemplate:metadata:labels:k8sapp:cloudnativertestannotations:【注意】不能使用单引号cni。projectcalico。orgipv4pools:〔newpool1,newpool2〕spec:containers:name:fixediptestimage:nginx:1。7。9imagePullPolicy:IfNotPresentports:name:httpcontainerPort:80
  查看查看ip池calicoctlgetippoolkubectlgetpodsowide
  【温馨提示】要更改用于Pod的默认IP范围,请修改calico。yaml清单文件中CALICOIPV4POOLCIDR部分。七、CalicoVSFlannel
  目前比较常用的是flannel和calico,flannel的功能比较简单,不具备复杂网络的配置能力,不支持网络策略;calico是比较出色的网络管理插件,单具备复杂网络配置能力的同时,往往意味着本身的配置比较复杂,所以相对而言,比较小而简单的集群使用flannel,考虑到日后扩容,未来网络可能需要加入更多设备,配置更多策略,则使用calico更好。1)Flannel优势:部署简单,性能一般。劣势:没办法实现固定IP的容器漂移,没法做子网隔离,对上层设计依赖程度高,没有IPAM,IP地址浪费,对Docker启动方法有绑定。2)CalicoCalico还以其先进的网络功能而闻名。网络策略是其最受追捧的功能之一。支持固定IP的配置。此外,Calico还可以与服务网格Istio集成,以便在服务网格层和网络基础架构层中解释和实施集群内工作负载的策略。这意味着用户可以配置强大的规则,描述Pod应如何发送和接受流量,提高安全性并控制网络环境。
  两个插件使用的都比较广泛,如果需要设置网络策略,规划更复杂的网络,固定IP等,就建议使用C如果只是简单的使用网络插件的通讯功能就选择Flannel。
  关于Kubernetes(k8s)CNI(Calico)网络模型原理介绍与部署就先到这里了,有疑问的小伙伴,欢迎给我留言,后续会持续更新【云原生大数据】相关的文章,请小伙伴耐心等待
投诉 评论 转载

1415!丢冠三连崩,王霜留洋当陪练2次抢断2次拦截北京时间9月11日上午,美国女足顶级联赛完成了一场第18轮的比赛,中国女足一姐王霜所在的路易斯维尔竞赛再次输球了,以15惨败给了北卡罗来纳勇气,从而在积分榜上继续下跌,目前以2……我们的节日庆六一儿歌选转发原创儿童诗歌儿童诗歌儿童节快乐HAPPYCHILDRENSDAY健康开心快乐HAPPYCHILDRENSDAY六一祝福你永远做个快乐幸福的孩子……9月刚过3天8位星二代近况闫学晶儿媳秀孕肚李咏女儿素颜出镜9月刚刚过去3天,娱乐圈的星二代纷纷闲不住了。闫学晶儿媳大方秀孕肚,陈佩斯儿子送四个孩子上学,朱珠为爱女隆重庆生,闫妮女儿穿着性感现身街头,李咏女儿素颜出镜,宋丹丹儿媳背……跌跌不休半个月后,白酒股集体大反弹11月1日,白酒赛道集体反弹,酒鬼酒、舍得酒业集体涨停,包括贵州茅台在内的5只白酒个股上涨超8。自今年7月份以来,白酒赛道持续深度调整,现在终于迎来触底反弹。业绩整体向好……不限购物平台!菜鸟裹裹上线全网运费险,网购退货均可获赔极目新闻记者周丹9块9一份全网运费险,各个电商平台退换货都可用。不仅操作方便,还省了不少运费。作为资深网购一族,武汉张女士近期在使用菜鸟裹裹时有了新体验。目前,菜鸟……最新爆料沧州明珠商贸城11月13日要复工,怎么回事?沧州明珠商贸城早市入口2022年10月27日,沧州市高新技术产业开发区管委会官方微信号沧州高新区发布重要公告称:2022年10月27日,外地推送新冠肺炎阳性人员在我……Kubernetes(k8s)CNI(Calico)网络模型一、概述Calico是一个联网和网络策略供应商。Calico支持一套灵活的网络选项,因此你可以根据自己的情况选择最有效的选项,包括非覆盖和覆盖网络,带或不带BGP。Cal……霍金的神秘派对实验,只为证明时空穿梭的存在,结果大失所望文科普小助君穿越时空,是多少人心中可望而不可及的梦想。或许在以前人们的眼中,这几乎是一件不可能的事情,甚至是一件连想都不敢想的念头。但随着科技的不断发展,如今的科技程度,……资本运作成就隐形链长中国移动正式入主启明星辰中国移动昨日与启明星辰签署战略合作协议,这是中国移动与启明星辰达成投资合作以来,双方全力促进战略协同的又一突破。根据协议,在保持启明星辰市场化经营机制的基础上,中国移动集……韩国新晋第一夫人挺会穿,遛狗还穿7000元的迪奥鞋,看脸不像美的浮夸,不如美的低调优雅,虽然面对穿衣搭配,我们会有多种选择,但是对于大龄女性而言,穿搭还是应该追求低调有质感。满足了这些需求,你的搭配就会更加分。对于韩国新晋第一夫人……新疆神秘原始的村庄,中国仅存的图瓦人村落之一,美成俄罗斯油画头条创作挑战赛9、10月是去新疆最好的时间,这里有中国最美的秋色,天山、五彩滩、可可托海、喀纳斯、白哈巴、禾木、魔鬼城、胡杨林,只有去过这些地方,才能领略到新疆真正的秋色……欧洲织女星C火箭发射失败损失两颗卫星欧洲织女星C型火箭首次商业发射失败,织女星系列火箭从而停飞,重挫欧洲航天计划。织女星C火箭当地时间12月20日22时47分(北京时间21日9时47分)在位于南美洲的法属圭……
十二指肠胃溃疡的症状有哪些?出现这5种症状小心十二指肠胃溃疡老啤酒厂成网红打卡点!深圳工业旅游新名片,复古前卫又好拍!一喝水,尿就多,是说明肾脏好,还是不好?答案很简单,了解下除了电热毯,还有这些中国产取暖神器火爆欧洲如果破解了大脑神奇的连接组,可以拓展出大脑无限潜能总决赛,我们又来了60多岁的赵贤珠皮肤保养秘诀?睡觉前揉搓手掌,放在眼睛上!窦骁新剧正片质感不如预告!剧情设定古早,陈都灵配音也不贴脸汤普森与怀斯曼能换来谁,勇士再不做交易,卫冕概率接近为零可可与我的成长日记物理学基础研究正停滞不前并不正常抢戏华为Mate50的问界M5EV,真就遥遥领先?什么是红歌五首经典的红歌推荐附歌谱发试卷的那一刻幸福课堂作文2015大学生军训感想1000字端午节可以做什么活动端午节有什么活动做感悟青春作文六篇国庆放假的通知离婚协议自己写有效吗?理想之城人力资源主管苏筱的好友吴红玫工商联工业园区分会会费管理办法辽宁一寺庙内只有女性,日睡4小时仅吃一餐,还严禁香客捐钱怎么调铅和漂浮

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利