Multus k8s网络浅谈

news/2024/10/22 18:32:04/

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之间的通信
在这里插入图片描述


http://www.ppmy.cn/news/20582.html

相关文章

Hive sql 每天场景题 41

41、现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间 户访问记录表(live_events)如下 user_id (用户id) liv…

自动驾驶介绍、应用、前景

自动驾驶介绍、应用、前景1 介绍1.1 定义1.2 作用1.3 发展历程1.4 分类23年初竞争格局1.5 顾虑1.6 前景2 产业链现状2.1 芯片2.2 仿真3 技术路线3.1 是否交互3.1.1 单车智能3.1.2 车路协同3.2 主传感器区分3.2.1 纯视觉3.2.2 混合传感器3.3 前装还是后装3.3.1 前装3.3.2 后装4 …

NLP学习笔记(七) BERT简明介绍

大家好,我是半虹,这篇文章来讲 BERT\text{BERT}BERT (Bidirectional Encoder Representations from Transformers) 原始论文请戳这里 0 概述 从某种程度上来说,深度学习至关重要的一环就是表征学习,也就是学习如何得到数据的向…

垃圾收集器必问系列—CMS

本文已收录至Github,推荐阅读 👉 Java随想录 应该相信,自己是生活的战胜者。——雨果 文章目录CMS简介运作过程CMS的缺陷处理器资源敏感无法处理“浮动垃圾”内存碎片纵观全书《深入理解JVM虚拟机》第三版,在垃圾回收器这一篇章&a…

Qt扫盲-QTime理论总结

QTime理论总结一、概述二、使用1. 属性获取2. 时间加减3. 字符串与QTime互转一、概述 QTime对象包含一个时钟时间,可以用小时数、分钟数、秒数和毫秒数来表示。它提供了比较时间和通过添加毫秒数来操作时间的函数。 QTime使用24小时时钟格式;它没有AM/…

【CANoe示例分析】EthernetCanGW_Test_CN

1、工程路径 此示例工程来自于Vector官网:EthernetCanGW_Test_CN 感兴趣的可以自行下载! 2、示例目的 如何在CANoe中创建一个网关,实现转发以太网报文到多个CAN网络中。该使用案例是对CAN网络进行压力测试 3、示例内容 本示例通过执行Test Module里的测试用例Bus_load…

java可用的动态脚本引擎和动态代码执行

文章目录1、javascript语法引擎1.1、rhino1.2、nashorn1.3、j2v82、Java语法引擎2.1、Groovyjava的ScriptEngine脚本引擎,支持代码动态执行,代码修改后不需要重启JVM进程,就可以使用解析或编译方式执行,非常方便,在动态…

Python中的os模块

整理文件和目录最最最常用的os模块os模块是Python标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。os.getcwd()作用:获取当前的工作路径;>>> os.getcwd() D:\\ResearchWay\\Code\\PythonCode\…