Multus是什么

k8s不提供网络解决方案,提供CNI ( Container Networking Interface )规范,被CNI插件遵守(Flannel, Calico,Macvlan,Multus等,这些是网络方案)
Multus 提供了将多个接口添加到pod的功能


Macvlan:可以将一块网卡虚拟成多块网卡,需要大量的mac地址,且不能与wireless 无线网络一起工作
Ipvlan:也是一块网卡虚拟成多块,但是ipvlan 虚拟出的子接口都有相同的mac地址(与物理接口共用同个mac地址)
CRD:CustomResourceDefinitions 自定义资源定义,二次开发能力用于扩展 k8s API.
默认网络:Pod 和 Pod 之间通信的网络 

《基于k8s的容器云平台实战》

Flannel

使不同节点上的容器获得同一内网且不重复的ip.容器们可以通过内网直接通信
在这里插入图片描述

Calico

每个节点都会放它一个代理,没有NAT和UDP封装,性能最接近物理机
基于三层实现通信,在二层上没有任何加密包装,因此只能在私有的可靠网络上使用

部署

通过每个机器上部署 Multus daemonset 的方式

K8s网络

单主机docker网络通信模式

1)host模式 --net=host
不会虚拟自己的网卡、配置自己的IP,使用宿主机的IP和端口
弊端 – 容器因与宿主机共用网络栈而抢夺网络资源,宿主机已经使用的端口,容器不能用

2)container --net=container:docker_bri1
该模式下容器使用其他容器的网络命名空间,这两个容器不存在网络隔离,但与其他容器和宿主机存在
同意pod下的container 就是这种模式
在这里插入图片描述

3)none
该容器没有网卡、IP、路由等信息。需要用户为Docker容器添加网卡、配置IP等。
4)bridge
Docker默认的网络模式。容器之间、容器与宿主机之间的网络栈隔离,通过Docker0网桥与外界进行通信
容器之间通过Docker0网桥作为虚拟交换机相互通信,-p 3306:3306 将宿主机的3306端口绑定到容器的3306端口
Docker 采用了iptables的NAT,将宿主机的流量转发到容器内的端口上。这样一来,外界就可以与容器中的进程通信了。
NAT-- Network Address Translation 网络地址转换。将私有ip 转换成公网 ip.
每个容器的默认网关就是网桥地址
弊端 – Bridge 模式的容器与外界通信,会占用主机上的端口。

Pod与Service 通信

pod IP不是固定的,Service 的 Cluster IP, 能稳定对外提供服务。同时service还能高可用与负载均衡,将请求转发给正确的pod.
但Service的 Cluster IP是内部,外部想访问-- Service通过节点的静态端口对外提供服务

ppt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过网桥捆绑不同的网络接口
在这里插入图片描述
下面左图是Nerfilter 的钩子,也就是回调函数能作用的地方,蓝色的地方,右图是利用这些钩子做的面对使用人员友好的防火墙
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
kube-proxy实现路由的转发
在这里插入图片描述
Flannel就是让docker0网桥的ip不要重复,否则怎么直接通信。第二负责打通docker0 bridge之间的通信
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐