您的位置:首页 > 理论基础 > 计算机网络

k8s网络-以Flannel为例

2020-01-14 19:09 597 查看

k8s网络模型假定了所有的pod都在一个可以直接连通的网络空间中,k8s假定这个网络已经存在。但是如果自己在私有云搭建k8s集群的话,就必须要自己实现了。

1.同一个pod之间的多个容器:lo

共用了同一个网卡,可以直接访问

2.各pod之间的通讯:overlay network

常用的网络方案:
Flannel,它能让所有的容器在集群中拥有一个唯一的虚拟ip地址。他能够在这些ip之间建立一个覆盖网络,通过这个覆盖网络,将数据包原封不动的传递到目标容器内。

1)同一主机(不同pod)
app1到app2直接通过docker0网卡转发请求

2)不在同一主机
从 app1到Backend的一次通信过程
首先构建一个数据包,源地址为10.1.12.2 目的地址10.1.20.3
然后交给docker0,再由docker0提交给Flannel0,然后再到Flanneld。
Flanneld再对数据包进行封装

mac层
outer ip 层 source 192.168.66.11 destination:192.168.66.12
udp //Flanneld转发报文的方式是udp
inner ip 层 source 10.1.12.2 destination:10.1.20.3

而这个目的地址192.168.66.12,是根据存储再etcd中的路由表查找到的。
传送到192.168.66.12,再由其交给Flanneld,在进行拆分,交给Docker0,docker0根据内部ip信息,交给backend。

3.pod与service通信:各节点的Iptables规则

  • 点赞
  • 收藏
  • 分享
  • 文章举报
yyf-404 发布了21 篇原创文章 · 获赞 1 · 访问量 241 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: