相关文章推荐
酒量小的小刀
·
《法国政治制度史》【价格目录书评正版】_中图 ...
·
4 月前
·
讲道义的烈酒
·
地质勘探类类专业都学什么
·
8 月前
·
想旅行的烤土司
·
gameplay #gaming #snk ...
·
9 月前
·
傻傻的香烟
·
法国大革命之(六)路易十六,断头台- 知乎
·
1 年前
·
难过的领结
·
个人外汇业务政策问答(第二期)_经常项目_国 ...
·
1 年前
·
小百科
›
k8s之calico网络模式- Hexo
Calico(网络)
路由
路由模式
k8s
calico
眉毛粗的筷子
9 月前
聂伟星
<div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav ml-auto text-center"><li class="nav-item"><a class="nav-link" href="/"><i class="iconfont icon-home-fill"/> 首页</a></li><li class="nav-item"><a class="nav-link" href="/archives/"><i class="iconfont icon-archive-fill"/> 归档</a></li><li class="nav-item"><a class="nav-link" href="/categories/"><i class="iconfont icon-category-fill"/> 分类</a></li><li class="nav-item"><a class="nav-link" href="/tags/"><i class="iconfont icon-tags-fill"/> 标签</a></li><li class="nav-item"><a class="nav-link" href="/about/"><i class="iconfont icon-user-fill"/> 关于</a></li><li class="nav-item"><a class="nav-link" href="/links/"><i class="iconfont icon-link-fill"/> 友链</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="iconfont icon-books"/> 文档</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="https://www.niewx.cn/mybook/"><i class="iconfont icon-notebook"/> 运维笔记 </a><a class="dropdown-item" target="_blank" rel="noopener" href="https://cloud.tencent.com/developer/column/87421"><i class="iconfont icon-addrbook"/> 云+社区文档 </a><a class="dropdown-item" href="https://www.niewx.cn/question/"><i class="iconfont icon-notebook"/> 运维问题集锦</a></div></li><li class="nav-item"><a class="nav-link" href="/playlist/"><i class="iconfont icon-music"/> 音乐</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="iconfont icon-douban-fill"/> 豆瓣</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="/books"><i class="iconfont icon-book"/> 书籍 </a><a class="dropdown-item" href="/movies"><i class="iconfont icon-youtube-fill"/> 电影 </a><a class="dropdown-item" href="/games"><i class="iconfont icon-switch-fill"/> 游戏</a></div></li><li class="nav-item" id="search-btn"><a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search"> <i class="iconfont icon-search"/> </a></li><li class="nav-item" id="color-toggle-btn"><a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle"> <i class="iconfont icon-dark" id="color-toggle-icon"/> </a></li></ul></div></div></nav><div id="banner" class="banner" parallax="true" style="background:url(/img/default.png) no-repeat center center;background-size:cover"><div class="full-bg-img"><div class="mask flex-center" style="background-color:rgba(0,0,0,.3)"><div class="banner-text text-center fade-in-up"><div class="h2"><span id="subtitle" data-typed-text="k8s之calico网络模式"/></div><div class="mt-3"><span class="post-meta mr-2"><i class="iconfont icon-author" aria-hidden="true"/> VashonNie </span><span class="post-meta"><i class="iconfont icon-date-fill" aria-hidden="true"/> <time datetime="2022-04-04 16:51" pubdate="">2022年4月4日 下午</time></span></div><div class="mt-1"><span class="post-meta mr-2"><i class="iconfont icon-chart"/>2.2k 字 </span><span class="post-meta mr-2"><i class="iconfont icon-clock-fill"/>19 分钟 </span><span id="leancloud-page-views-container" class="post-meta" style=""><i class="iconfont icon-eye" aria-hidden="true"/> <span id="leancloud-page-views"/> 次</span></div></div></div></div></div></div></header><main><div class="container-fluid nopadding-x"><div class="row nomargin-x"><div class="side-col d-none d-lg-block col-lg-2"/><div class="col-lg-8 nopadding-x-md"><div class="container nopadding-x-md" id="board-ctn"><div id="board"><article class="post-content mx-auto"><h1 style="">k8s之calico网络模式</h1><div class="markdown-body"><p>Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在 Internet 中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术,其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。我们尝试把 Host 当作 Internet 中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。</p><h1 id="calico架构介绍"><a href="#calico架构介绍" class="headerlink" title="calico架构介绍"/>calico架构介绍</h1><p>适用场景:k8s环境中的pod之间需要隔离</p><p>设计思想:Calico 不使用隧道或 NAT 来实现转发,而是巧妙的把所有二三层流量转换成三层流量,并通过 host 上路由配置完成跨 Host 转发。</p><p>设计优势:</p><ul><li>更优的资源利用</li></ul><p>二层网络通讯需要依赖广播消息机制,广播消息的开销与 host 的数量呈指数级增长,Calico 使用的三层路由方法,则完全抑制了二层广播,减少了资源开销。</p><p>另外,二层网络使用 VLAN 隔离技术,天生有 4096 个规格限制,即便可以使用 vxlan 解决,但 vxlan 又带来了隧道开销的新问题。而 Calico 不使用 vlan 或 vxlan 技术,使资源利用率更高。</p><ul><li>可扩展性</li></ul><p>Calico 使用与 Internet 类似的方案,Internet 的网络比任何数据中心都大,Calico 同样天然具有可扩展性。</p><ul><li>简单而更容易debug</li></ul><p>因为没有隧道,意味着 workloads 之间路径更短更简单,配置更少,在 host 上更容易进行 debug 调试。</p><ul><li>更少的依赖</li></ul><p>Calico 仅依赖三层路由可达。</p><ul><li>可适配性</li></ul><p>Calico 较少的依赖性使它能适配所有 VM、Container、白盒或者混合环境场景。</p><p><img src="/img/2022-04-04-calico-network-mode-of-k8s/1.png" srcset="/img/loading.gif" lazyload="" alt="upload-image"/></p><p>Calico网络模型主要工作组件:</p><ol><li><p>Felix:运行在每一台 Host 的 agent 进程,主要负责网络接口管理和监听、路由、ARP 管理、ACL 管理和同步、状态上报等。Felix会监听ECTD中心的存储,从它获取事件,比如说用户在这台机器上加了一个IP,或者是创建了一个容器等。用户创建pod后,Felix负责将其网卡、IP、MAC都设置好,然后在内核的路由表里面写一条,注明这个IP应该到这张网卡。同样如果用户制定了隔离策略,Felix同样会将该策略创建到ACL中,以实现隔离。</p></li><li><p>etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;</p></li><li><p>BGP Client(BIRD):Calico 为每一台 Host 部署一个 BGP Client,使用 BIRD 实现,BIRD 是一个单独的持续发展的项目,实现了众多动态路由协议比如 BGP、OSPF、RIP 等。在 Calico 的角色是监听 Host 上由 Felix 注入的路由信息,然后通过 BGP 协议广播告诉剩余 Host 节点,从而实现网络互通。实现,BIRD是一个标准的路由程序,它会从内核里面获取哪一些IP的路由发生了变化,然后通过标准BGP的路由协议扩散到整个其他的宿主机上,让外界都知道这个IP在这里,你们路由的时候得到这里来。</p></li><li><p>BGP Route Reflector:在大型网络规模中,如果仅仅使用 BGP client 形成 mesh 全网互联的方案就会导致规模限制,因为所有节点之间俩俩互联,需要 N^2 个连接,为了解决这个规模问题,可以采用 BGP 的 Router Reflector 的方法,使所有 BGP Client 仅与特定 RR 节点互联并做路由同步,从而大大减少连接数。</p></li></ol><h1 id="calico网络模式"><a href="#calico网络模式" class="headerlink" title="calico网络模式"/>calico网络模式</h1><ul><li>IPIP</li></ul><p>从字面来理解,就是把一个IP数据包又套在一个IP包里,即把 IP 层封装到 IP 层的一个 tunnel。它的作用其实基本上就相当于一个基于IP层的网桥!一般来说,普通的网桥是基于mac层的,根本不需 IP,而这个 ipip 则是通过两端的路由做一个 tunnel,把两个本来不通的网络通过点对点连接起来。</p><p>calico默认是采用的ipip模式。对应的通讯方式如下</p><p><img src="/img/2022-04-04-calico-network-mode-of-k8s/2.png" srcset="/img/loading.gif" lazyload="" alt="upload-image"/></p><ul><li>BGP</li></ul><p>边界网关协议(Border Gateway Protocol, BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。BGP,通俗的讲就是讲接入到机房的多条线路(如电信、联通、移动等)融合为一体,实现多线单IP,BGP 机房的优点:服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统。</p><p>如果要使用BGP模式,calico.yaml文件中,将CALICO_IPV4POOL_IPIP的值修改成 “off”,就能够替换成BGP网络。BGP对应的通讯方式如下</p><p><img src="/img/2022-04-04-calico-network-mode-of-k8s/3.png" srcset="/img/loading.gif" lazyload="" alt="upload-image"/></p><h1 id="k8s部署calico"><a href="#k8s部署calico" class="headerlink" title="k8s部署calico"/>k8s部署calico</h1><p>k8s中部署calico,只需要下载对应的yaml,然后apply这个yaml即可。</p><figure class="highlight 1c"><table><tr><td class="gutter"><pre><span class="line">1</span><br/><span class="line">2</span><br/></pre></td><td class="code"><pre><code class="hljs 1c"><span class="hljs-meta"># wget https:<span class="hljs-comment">//docs.projectcalico.org/manifests/calico.yaml</span></span><br/><span class="hljs-meta"># kubectl apply -f calico.yaml</span><br/></code></pre></td></tr></table></figure></div><hr/><div><div class="post-metas my-3"><div class="post-meta mr-3 d-flex align-items-center"><i class="iconfont icon-category"/> <span class="category-chains"><span class="category-chain"><a href="/categories/Kubernetes/" class="category-chain-item">Kubernetes</a></span></span></div><div class="post-meta"><i class="iconfont icon-tags"/> <a href="/tags/Kubernetes/">#Kubernetes</a> <a href="/tags/calico/">#calico</a></div></div><div class="license-box my-3"><div class="license-title"><div>k8s之calico网络模式</div><div>https://www.niewx.cn/2022/04/04/2022-04-04-calico-network-mode-of-k8s/</div></div><div class="license-meta"><div class="license-meta-item"><div>作者</div><div>VashonNie</div></div><div class="license-meta-item license-meta-date"><div>发布于</div><div>2022年4月4日</div></div><div class="license-meta-item"><div>许可协议</div><div><a target="_blank" href="https://creativecommons.org/licenses/by-nc/4.0/"><span class="hint--top hint--rounded" aria-label="BY - 署名"><i class="iconfont icon-by"/> </span></a><a target="_blank" href="https://creativecommons.org/licenses/by-nc/4.0/"><span class="hint--top hint--rounded" aria-label="NC - 非商业性使用"><i class="iconfont icon-nc"/></span></a></div></div></div><div class="license-icon iconfont"/></div><div class="post-prevnext my-3"><article class="post-prev col-6"><a href="/2022/04/08/nginx-ingress-configuration-https-two-way-authentication/" title="nginx-ingress配置https双向认证"><i class="iconfont icon-arrowleft"/> <span class="hidden-mobile">nginx-ingress配置https双向认证</span> <span class="visible-mobile">上一篇</span></a></article><article class="post-next col-6"><a href="/2022/04/01/2022-04-01-ephemeral-storage-of-k8s/" title="k8s之ephemeral-storage存储"><span class="hidden-mobile">k8s之ephemeral-storage存储</span> <span class="visible-mobile">下一篇</span> <i class="iconfont icon-arrowright"/></a></article></div></div><article id="comments" lazyload=""><div id="valine"/><noscript>Please enable JavaScript to view the comments</noscript></article></article></div></div></div><div class="side-col d-none d-lg-block col-lg-2"><aside class="sidebar" style="margin-left:-1rem"><div id="toc"><p class="toc-header"><i class="iconfont icon-list"/> 目录</p><div class="toc-body" id="toc-body"/></div></aside></div></div></div><a id="scroll-top-button" aria-label="TOP" href="#" role="button"><i class="iconfont icon-arrowup" aria-hidden="true"/></a><div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"><div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"><div class="modal-content"><div class="modal-header text-center"><h4 class="modal-title w-100 font-weight-bold">搜索</h4><button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button></div><div class="modal-body mx-3"><div class="md-form mb-5"><input type="text" id="local-search-input" class="form-control validate"/> <label data-error="x" data-success="v" for="local-search-input">关键词</label></div><div class="list-group" id="local-search-result"/></div></div></div></div></main><footer><div class="footer-inner"><div id="music_div" style="position:fixed;bottom:0;left:30px"><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="110" src="//music.163.com/outchain/player?type=0&id=919444742&auto=1&height=90"/></div><div class="footer-content"><a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"/> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a><div><span id="timeDate">载入天数...</span> <span id="times">载入时分秒...</span></div></div><div class="statistics"><span id="leancloud-site-pv-container" style="">总访问量 <span id="leancloud-site-pv"/> 次 </span><span id="leancloud-site-uv-container" style="">总访客数 <span id="leancloud-site-uv"/> 人</span></div></div></footer><link rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css"/><noscript><div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div></noscript></body>
推荐文章
酒量小的小刀
·
《法国政治制度史》【价格目录书评正版】_中图网(原中国图书网)
4 月前
讲道义的烈酒
·
地质勘探类类专业都学什么
8 月前
想旅行的烤土司
·
gameplay #gaming #snk #neogeo #retrogaming #arcadegames ...
9 月前
傻傻的香烟
·
法国大革命之(六)路易十六,断头台- 知乎
1 年前
难过的领结
·
个人外汇业务政策问答(第二期)_经常项目_国家外汇管理局门户网站
1 年前