cni k8s 插件安装_k8s的网络模型和CNI插件

c61c339a502fe980dc77f89df86586a1.png

第二步:  CNI bridge 插件会通过Infra容器的 Network Namespace 文件,进入到这个Network Namespace 里面,然后创建一对 Veth Pair 设备.

紧接着,它会把这个 Veth Pair 的其中一端,“移动”到宿主机上 等于在容器中执行

9ecc5221ba1f4ce404c735986928c3b4.png

第三步: CNI bridge 插件就可以把 vethb4963f3 设备连接在 CNI 网桥上

5777fcc7f8bc4b38da599b8aeaf7eebd.png

在将 vethb4963f3 设备连接在 CNI 网桥之后,CNI bridge 插件还会为它设置 Hairpin Mode(发夹模式)这是因为,在默认情况下,网桥设备是不允许一个数据包从一个端口进来后,再从这个端口发出去的.但是,它允许你为这个端口开启 Hairpin Mode,从而取消这个限制

Flannel 插件要在 CNI 配置文件里声明 hairpinMode=true 这样,将来这个集群里的 Pod 才可以通过它自己的 Service 访问到自己

第四步:CNI bridge 插件会调用 CNI ipam 插件,从 ipam.subnet 字段规定的网段里为容器分配一个可用的 IP 地址.然后,CNI bridge 插件就会把这个 IP 地址添加在容器的eth0网卡上,同时为容器设置默认路由

290651d0b0581b17f0152aeb6586b8e0.png

第五步: CNI bridge 插件会为CNI 网桥添加IP地址.这相当于在宿主机上执行

b8f00a15d63ec37ede4e54044a9f016e.png

最后一步: CNI 插件会把容器的IP地址等信息返回给 dockershim,然后被 kubelet 添加到 Pod 的 Status 字段

kubernetes网络隔离机制

Pod默认都是“允许所有”(Accept All)的,即:Pod可以接收来自任何发送方的请求;或者,向任何接收方发送请求

一旦Pod被NetworkPolicy 选中,那么这个Pod就会进入“拒绝所有”(Deny All)的状态,即:这个Pod既不允许被外界访问,也不允许对外界发起访问

而NetworkPolicy定义的规则,其实就是“白名单”.例如,在我们上面这个例子里,我在 policyTypes 字段,定义了这个NetworkPolicy的类型是ingress和 egress,即:它既会影响流入(ingress)请求,也会影响流出(egress)请求

凡是支持NetworkPolicy的CNI网络插件,都维护着一个NetworkPolicy Controller,通过控制循环的方式对NetworkPolicy 对象的增删改查做出响应,然后在宿主机上完成iptables规则的配置工作

iptables规则

iptables 只是一个操作 Linux 内核 Netfilter 子系统的“界面”.顾名思义,Netfilter 子系统的作用,就是 Linux 内核里挡在“网卡”和“用户态进程”之间的一道“防火墙"

451dc778f6056dd43ce774cd8f3d7b6d.png

当一个 IP 包通过网卡进入主机之后,它就进入了Netfilter 定义的流入路径(Input Path)里 在路由之前,Netfilter设置了一个叫PREROUTING的检查点

iptables 表的作用,就是在某个具体的“检查点”(比如 Output)上,按顺序执行几个不同的检查动作(比如,先执行 nat,再执行 filter)

PREROUTING INPUT FORWARD OUTPUT POSTROUTING 是链(检查点)

nat filter 是表

一个IP包的流动过程:

1.经过PREROUTING的检查点

2.根据路由表进行判断

两种情况:

1.经过INPUT检查点把IP包通过传输层进入到用户空间,交给用户进程处理用户进程通过本机发出返回的IP包经过路由表然后再经过OUTPUT检查点

2.IP 包不会进入传输层,而是会继续在网络层流动,从而进入到转发路径Forward Path.在转发路径中,Netfilter会设置一个名叫FORWARD检查点

而在 FORWARD“检查点”完成后,IP 包就会来到流出路径.而转发的 IP 包由于目的地已经确定,它就不会再经过路由,也自然不会经过 OUTPUT,而是会直接来到 POSTROUTING“检查点”

以上两条路径的IP最终都要经过POSTROUTING检查点才能到达网卡向外发送出去

04aa69beab28a2aea0e82d4d6863e507.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值