首页 > 其他分享 >容器网络之Calico

容器网络之Calico

时间:2023-10-08 23:01:14浏览次数:25  
标签:容器 IP 网络 网卡 cali 规则 Calico

Calico 网络的大概思路,即不走 Overlay 网络,不引入另外的网络性能损耗,而是将转发全部用三层网络的路由转发来实现。

首先,如果全部走三层的路由规则,没必要每台机器都用一个 docker0,从而浪费了一个 IP 地址,而是可以直接用路由转发到 veth pair 在物理机这一端的网卡。同样,在容器内,路由规则也可以这样设定:把容器外面的 veth pair 网卡算作默认网关,下一跳就是外面的物理机。

容器网络之Calico_Calico

Calico 中还实现了灵活配置网络策略 Network Policy,可以灵活配置两个容器通或者不通。这个怎么实现呢?

容器网络之Calico_Calico_02

虚拟机中的安全组,是用 iptables 实现的。Calico 中也是用 iptables 实现的。这个图里的内容是 iptables 在内核处理网络包的过程中可以嵌入的处理点。Calico 也是在这些点上设置相应的规则。

容器网络之Calico_Calico_03

当网络包进入物理机上的时候,进入 PREOUTING 规则,这里面有一个规则是 cali-fip-dnat,这是实现浮动 IP(Floating IP)的场景,主要将外网的 IP 地址 dnat 作为容器内的 IP 地址。在虚拟机场景下,路由器的网络 namespace 里面有一个外网网卡上,也设置过这样一个 DNAT 规则。

接下来可以根据路由判断,是到本地的,还是要转发出去的。

如果是本地的,走 INPUT 规则,里面有个规则是 cali-wl-to-host,wl 的意思是 workload,也即容器,也即这是用来判断从容器发到物理机的网络包是否符合规则的。这里面内嵌一个规则 cali-from-wl-dispatch,也是匹配从容器来的包。如果有两个容器,则会有两个容器网卡,这里面内嵌有详细的规则“cali-fw-cali 网卡 1”和“cali-fw-cali 网卡 2”,fw 就是 from workload,也就是匹配从容器 1 来的网络包和从容器 2 来的网络包。

如果是转发出去的,走 FORWARD 规则,里面有个规则 cali-FORWARD。这里面分两种情况,一种是从容器里面发出来,转发到外面的;另一种是从外面发进来,转发到容器里面的。

第一种情况匹配的规则仍然是 cali-from-wl-dispatch,也即 from workload。第二种情况匹配的规则是 cali-to-wl-dispatch,也即 to workload。如果有两个容器,则会有两个容器网卡,在这里面内嵌有详细的规则“cali-tw-cali 网卡 1”和“cali-tw-cali 网卡 2”,tw 就是 to workload,也就是匹配发往容器 1 的网络包和发送到容器 2 的网络包。

接下来是匹配 OUTPUT 规则,里面有 cali-OUTPUT。接下来是 POSTROUTING 规则,里面有一个规则是 cali-fip-snat,也即发出去的时候,将容器网络 IP 转换为浮动 IP 地址。在虚拟机场景下,路由器的网络 namespace 里面有一个外网网卡上,也设置过这样一个 SNAT 规则。

标签:容器,IP,网络,网卡,cali,规则,Calico
From: https://blog.51cto.com/key3feng/7763104

相关文章

  • pytorch(8-1) 循环神经网络 序列模型
    https://zh.d2l.ai/chapter_recurrent-neural-networks/sequence.html     #%matplotlibinlineimporttorchfromtorchimportnnfromd2limporttorchasd2lfromAPI_Drawimport*T=1000#总共产生1000个点#time[0,1...,999]time=torch.arange(......
  • 8种网络协议
    8种流行的网络协议:HTTP(超文本传输协议)HTTP是用于获取HTML等资源的协议,它使用TCP协议作为底层的支撑协议,它是Web上任何数据交换的基础,是一种客户端-服务器协议。使用场景:浏览器TCP(传输控制协议)TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP是一种面向连接......
  • 网络管理命令1
    一:概述LInux系统中有很多的网络管理命令,比如ip命令。利用网络管理命令我们可以有效的管理网络,当网络出现故障时可以通过这些网络有效的诊断出问题原因。二:ip命令实现网络管理首先来说一下net-tools和iproute这两个工具。早先在Linux系统管理员进行网络配置时主要使用net-tools管理......
  • 以视频融合平台EasyCVR为例探讨视频汇聚平台如何提升网络稳定性
    EasyCVR是一款安防视频监控平台,可进行视频集中存储和云存储,并且拥有强大的可拓展性、灵活的视频能力和轻快的部署。该平台支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,并且支持厂家私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。除了传统安防视频监控的功能外......
  • 数字化校园建设,NTP数字电子时钟(网络时钟系统)方案
    数字化校园建设,NTP数字电子时钟(网络时钟系统)方案数字化校园建设,NTP数字电子时钟(网络时钟系统)方案京准电子科技官微——ahjzsz本系统提供一套支持最新的网络时间协议NTPv4的软件以及其配置方案,为网络中的设备提供NTP服务。系统由三部分组成,分别为嵌入式一级网络时间服务器,二级......
  • 安全工具合集:125个最佳网络安全工具-SecToolsOrg
    SecToolsOrg是什么SecToolsOrg是一个国外网友创建的安全工具网站,收集了125个最佳网络安全工具,网站为英文语言,网站提供评级、评论、搜索、排序和新工具建议表,该站点允许在任何平台上使用开源和商业工具,每款软件工具都有详细的介绍截图等等,感兴趣的同学可以到网站学习。英文页面......
  • 一份安全指南:如何在网络中保护隐私
    2021年10月24日 KallyDev 与社区共同撰写中国人更加开放,或者说对于隐私问题没有那么敏感。如果说他们愿意用隐私来交换便捷性或者效率,很多情况下他们是愿意这么做的。——李彦宏百度CEOGithub原文链接:https://github.com/kallydev/privacy.kallydev.com隐私在人们......
  • 容器初始化配置nginx
    目录#容器初始化,nginx配置apiVersion:"v1"kind:"Pod"metadata:name:nginx-67spec:volumes:-name:guazaiemptyDir:{}initContainers:-name:chesimage:nginx:alpineimagePullPolicy:IfNotPresentargs:["/......
  • Docker网络
    目录Docker网络docker网络类型Briage修改网桥IPHostContainer(K8s使用的模式)None自定义网络模式Docker网络docker网络类型Bridge桥接类似VMwareNATHost容器与宿主机之间网卡共享不支持端口映射,但性能好Container(K8s使用的模式)容器与容器之间......
  • Docker 容器使用与打包镜像
    目录Docker容器使用与打包镜像docker创建容器的流程:docker远程连接方式(不安全)docker为何会启动就退出容器容器名词解析docker常用命令docker使用相关命令-容器容器端口映射使用docker运行nginx做小游戏数据卷映射手动制作镜像手动卡前台方法Docker容器使用与打包镜......