【Kubernetes】常见面试题汇总(二十九)

news/2024/9/28 8:35:11/

目录

 

81.简述你知道的几种 CNI 网络插件,并详述其工作原理。K8s 常用的CNI网络插件(calico && flannel),简述一下它们的工作原理和区别。

特别说明:

题目   1-68   属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。

题目 69-113 属于【Kubernetes】的生产应用题。


81.简述你知道的几种 CNI 网络插件,并详述其工作原理。K8s 常用的CNI网络插件(calico && flannel),简述一下它们的工作原理和区别。

(一)calico 的工作原理:

(1)calico 根据 iptables 规则进行路由转发,并没有进行封包,解包的过程,这和 flannel 比起来效率就会快多。

(2)calico 包括如下重要组件:Felix,etcd,BGP Client,BGP Route Reflector。下面分别说明一下这些组件:

① Felix:主要负责路由配置以及 ACLS 规则的配置以及下发,它存在在每个 node 节点;

② etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico 网络状态的准确性,可以与 kubernetes 共用;

③ BGP Client(BIRD):主要负责把 Felix 写入 kernel 的路由信息分发到当前 Calico 网络,确保 workload 间的通信的有效性;

④ BGP Route Reflector(BIRD):大规模部署时使用,摒弃所有节点互联的 mesh 模式,通过一个或者多个 BGP Route Reflector 来完成集中式的路由分发。

(3)通过将整个互联网的可扩展 IP 网络原则压缩到数据中心级别,Calico 在每一个计算节点利用 Linuxkernel 实现了一个高效的 vRouter 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播小规模部署可以直接互联,大规模下可通过指定的 BGP Route Reflector 来完成。这样保证最终所有的 workload 之间的数据流量都是通过 IP 包的方式完成互联的。

(二)Flannel 的工作原理:

(1)Flannel 实质上是一种 “ 覆盖网络(overlay network)” ,也就是将 TCP 数据包装在另一种网络包里面进行路由转发和通信,目前已经支持 UDP、VxLAN、AWS VPC 和 GCE 路由等数据转发方式。

(2)默认的节点间数据通信方式是 UDP 转发。

工作原理:

数据从源容器中发出后,经由所在主机的 docker0 虚拟网卡转发到 flannel0 虚拟网卡(先可以不经过 docker0 网卡,使用 cni 模式),这是个 P2P 的虚拟网卡,flanneld 服务监听在网卡的另外一端。

(3)Flannel通过 Etcd 服务维护了一张节点间的路由表,详细记录了各节点子网网段。

(4)源主机的 flanneld 服务将原本的数据内容 UDP 封装后根据自己的路由表投递给目的节点的 flanneld 服务,数据到达以后被解包,然后直接进入目的节点的 flannel0 虚拟网卡,然后被转发到目的主机的 docker0 虚拟网卡,最后就像本机容器通信一下的有 docker0 路由到达目标容器

(5)flannel 在进行路由转发的基础上进行了封包解包的操作,这样浪费了 CPU 的计算资源。


“【Kubernetes】常见面试题汇总” 系列文章,可点击链接查看专栏详情:K8s 面试题汇总

 


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

相关文章

uniapp webview清理缓存

uniapp webview清理缓存 后端服务器配置,JS/CSS文件的缓存时间为 :-1s location ~ .*.(js|css)?$ { expires -1s; error_log off; }前端打开webview页面处: //ios 禁用缓存,测试生效!! let cache1 plus.…

立体仓库WCS功能设计:物流自动化的智能核心

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 在现代物流的快速发展中,自动化立体仓库以其高效的空间利用率和节省人工的优势,成为了企业物流管理的关键。 而在这个自动化的生态系统中,Warehous…

【openwrt-21.02】openwrt PPTP Passthrough 不生效问题解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

2024最新国内镜像源设置(npm、yarn、pnpm)

淘宝镜像源https://registry.npmmirror.com/ 腾讯云镜像源https://mirrors.cloud.tencent.com/npm/ cnpm是一个基于npm的中国镜像源https://r.cnpmjs.org/ # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 npm config set registry https://registry.npmmirror.co…

实时数字人DH_live使用案例

参看: https://github.com/kleinlee/DH_live ubuntu 测试 apt install ffmpeg 下载安装: git clone https://github.com/kleinlee/DH_live.git cd DH_liveconda create -n dh_live python=3.12 conda activate dh_live pip install -r requirements.txt pip install torch -…

多线程编程学习

以下作业,请使用代码实现1-4 线程的生成、运行线程的优先级、阻塞和信号量线程池的使用 1、线程的生成 2、线程的优先级 3、线程信号量的处理(阻塞、唤醒等) 4、线程池 import java.util.concurrent.Semaphore; import java.util.concurre…

大数据毕业设计选题推荐-租房数据分析系统-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

数据库 - MySQL的事务

目录 前言 一、事务的特性 (一)原子性 (二)一致性 (三)隔离性 (四)持久性 二、事务的控制语句 三、事务隔离级别 (一)读未提交 (二&…