Kubernetes教程(三)---纯三层网络方案

K8S网络详解 K8S网络详解 按照我自己的理解,k8s网络分三个层面(由里到外): 容器网络(不同容器之间怎么相互访问) 集群内网络(不同节点之间怎么相互访问) 集群外网络(集群外怎么访问到集群内的服务) 容器网络 熟悉docker的同学会知道,docker创建的容器之间会通过一张docker0的网卡相互通信。而k8s社区为了方便用户适应各自的网络情况,暴露出一套api接口------cni,用户只要实现... 阅读详情

来自:指月 https://www.lixueduan.com

原文:https://www.lixueduan.com/posts/kubernetes/02-cluster-network/

由于 COPY 过来图片无法展示,建议跳转到原文查看

本文主要介绍了 Kubernetes 中的 Pure Layer 3 网络方案。其中的典型例子,莫过于 Flannel 的 host-gw 模式和 Calico 项目了,本文将大致分析 Flannel 的 host-gw 模式和 Calico 项目来探索Kubernetes 中的纯三层(Pure Layer 3)网络方案。

本文写于 2021-03-27

第二次更新于 2022-09-04,增加了一些自己的理解,并修复了一些错误

Kubernetes

1. Flannel host-gw 模式

数据流向如下图所示:

k8s-network-pure-layer3

当你设置 Flannel 使用 模式之后,flanneld 会在宿主机上创建这样一条规则,以 Node 1 为例:

$ ip route
...
10.244.1.0/24 via 10.168.0.3 dev eth0

这条路由规则的含义是:目的 IP 地址属于 10.244.1.0/24 网段的 IP 包,应该经过本机的 eth0 设备发出去(即:dev eth0);并且,它下一跳地址(next-hop)是 10.168.0.3(即:via 10.168.0.3)。

所谓下一跳地址就是:如果 IP 包从主机 A 发到主机 B,需要经过路由设备 X 的中转。那么 X 的 IP 地址就应该配置为主机 A 的下一跳地址。

而从 host-gw 示意图中我们可以看到,这个下一跳地址对应的,正是我们的目的宿主机 Node 2。

一旦配置了下一跳地址,那么接下来,当 IP 包从网络层进入链路层封装成帧的时候,eth0 设备就会使用下一跳地址对应的 MAC 地址,作为该数据帧的目的 MAC 地址。显然,这个 MAC 地址,正是 Node 2 的 MAC 地址。

这样,这个数据帧就会从 Node 1 通过宿主机的二层网络顺利到达 Node 2 上。

而 Node 2 的内核网络栈从二层数据帧里拿到 IP 包后,会“看到”这个 IP 包的目的 IP 地址是 10.244.1.3,即 Infra-container-2 的 IP 地址。这时候,根据 Node 2 上的路由表,该目的地址会匹配到第二条路由规则(也就是 10.244.1.0 对应的路由规则),从而进入 cni0 网桥,进而进入到 Infra-container-2 当中。

可以看到,host-gw 模式的工作原理,其实就是将每个 Flannel 子网(Flannel Subnet,比如:10.244.1.0/24)的“下一跳”,设置成了该子网对应的宿主机的 IP 地址。

也就是说,这台“主机”(Host)会充当这条容器通信路径里的“网关”(Gateway)。这也正是“host-gw”的含义。

而且 Flannel 子网和主机的信息,都是保存在 Etcd 当中的。flanneld 只需要 WACTH 这些数据的变化,然后实时更新路由表即可。

而在这种模式下,容器通信的过程就免除了额外的封包和解包带来的性能损耗。根据实际的测试,host-gw 的性能损失大约在 10% 左右,而其他所有基于 VXLAN“隧道”机制的网络方案,性能损失都在 20%~30% 左右。

host-gw 模式能够正常工作的核心,就在于 IP 包在封装成帧发送出去的时候,会使用路由表里的“下一跳”来设置目的 MAC 地址。这样,它就会经过二层网络到达目的宿主机。

所以说,Flannel host-gw 模式必须要求集群宿主机之间是二层连通的。

问题来了,为什么需要二层连通?

如果二层不连通,那么只能通过三层传输(即:IP 包),到其他设备或者路由器的时候是不认识这个容器 IP 的,因此这个包肯定会丢。

注:Node1 和 Node2 认识是因为 Calico 在上面加了对应的路由规则。

因此必须要二层连通才行。

2. Calico BGP 模式

Calico 当前算是主流的 k8s CNI 实现。

实际上,Calico 项目提供的网络解决方案,与 Flannel 的 host-gw 模式,几乎是完全一样的。

也就是说,Calico 也会在每台宿主机上,添加一个格式如下所示的路由规则:

<目的容器IP地址段> via <网关的IP地址> dev eth0

其中,网关的 IP 地址,正是目的容器所在宿主机的 IP 地址。

而正如前所述,这个三层网络方案得以正常工作的核心,是为每个容器的 IP 地址,找到它所对应的、“下一跳”的网关。

不过,不同于 Flannel 通过 Etcd 和宿主机上的 flanneld 来维护路由信息的做法,Calico 项目使用了一个“重型武器” BGP 来自动地在整个集群中分发路由信息。

BGP(Border Gateway Protocol)即边界网关协议,是运行于TCP上的自治系(互联网AS)统路由协议。

简单理解:所谓 BGP,就是在大规模网络中实现节点路由信息共享的一种协议。

BGP 在每个边界网关(路由器)上运行,彼此之间通信更新路由表信息,而 BGP 的这个能力,正好可以取代 Flannel 维护主机上路由表的功能。

而且,BGP 这种原生就是为大规模网络环境而实现的协议,其可靠性和可扩展性,远非 Flannel 自己的方案可比。

Calico 由三个部分组成:

  • 1)Calico 的 CNI 插件。这就是 Calico 与 Kubernetes 对接的部分。
  • 2)Felix。它是一个 DaemonSet,负责在宿主机上插入路由规则(即:写入 Linux 内核的 FIB 转发信息库),以及维护 Calico 所需的网络设备等工作。
  • 3)BIRD。它就是 BGP 的客户端,专门负责在集群里分发路由规则信息。

除了对路由信息的维护方式之外,Calico 项目与 Flannel 的 host-gw 模式的另一个不同之处,就是它不会在宿主机上创建任何网桥设备。

二者只是不同的实现,功能上并没有差别。Calico 通过设置路由规则,将数据包直接路由到对应 veth 设备,Flannel 则是先路由到网桥,在从网桥转发到对应 veth 设备。

k8s-network-bgp

Calico 的 CNI 插件会为每个容器设置一个 Veth Pair 设备,然后把其中的一端放置在宿主机上(它的名字以 cali 前缀开头)。

此外,由于 Calico 没有使用 CNI 的网桥模式,Calico 的 CNI 插件还需要在宿主机上为每个容器的 Veth Pair 设备配置一条路由规则,用于接收传入的 IP 包。比如,宿主机 Node 2 上的 Container 4 对应的路由规则,如下所示:

10.233.2.3 dev cali5863f3 scope link

即:发往 10.233.2.3 的 IP 包,应该进入 cali5863f3 设备。

基于上述原因,Calico 项目在宿主机上设置的路由规则,肯定要比 Flannel 项目多得多。

不过,Flannel host-gw 模式使用 CNI 网桥的主要原因,其实是为了跟 VXLAN 模式保持一致。否则的话,Flannel 就需要维护两套 CNI 插件了。

有了这样的 Veth Pair 设备之后,容器发出的 IP 包就会经过 Veth Pair 设备出现在宿主机上。然后,宿主机网络栈就会根据路由规则的下一跳 IP 地址,把它们转发给正确的网关。接下来的流程就跟 Flannel host-gw 模式完全一致了。

其中,这里最核心的“下一跳”路由规则,就是由 Calico 的 Felix 进程负责维护的。这些路由规则信息,则是通过 BGP Client 也就是 BIRD 组件,使用 BGP 协议传输而来的。

Calico 项目实际上将集群里的所有节点,都当作是边界路由器来处理,它们一起组成了一个全连通的网络,互相之间通过 BGP 协议交换路由规则。这些节点,我们称为 BGP Peer。

需要注意的是,Calico 维护的网络在默认配置下,是一个被称为“Node-to-Node Mesh”的模式。这时候,每台宿主机上的 BGP Client 都需要跟其他所有节点的 BGP Client 进行通信以便交换路由信息。但是,随着节点数量 N 的增加,这些连接的数量就会以 N²的规模快速增长,从而给集群本身的网络带来巨大的压力。

所以,Node-to-Node Mesh 模式一般推荐用在少于 100 个节点的集群里。而在更大规模的集群中,你需要用到的是一个叫作 Route Reflector 的模式。

在这种模式下,Calico 会指定一个或者几个专门的节点,来负责跟所有节点建立 BGP 连接从而学习到全局的路由规则。而其他节点,只需要跟这几个专门的节点交换路由信息,就可以获得整个集群的路由规则信息了。

对于 Calico BGP 模式来说,同样要求集群宿主机之间是二层连通的。

举个例子,假如我们有两台处于不同子网的宿主机 Node 1 和 Node 2,对应的 IP 地址分别是 192.168.1.2 和 192.168.2.2。需要注意的是,这两台机器通过路由器实现了三层转发,所以这两个 IP 地址之间是可以相互通信的。

而我们现在的需求,还是 Container 1 要访问 Container 4。

按照我们前面的讲述,Calico 会尝试在 Node 1 上添加如下所示的一条路由规则:

10.233.2.0/16 via 192.168.2.2 eth0

上面这条规则里的下一跳地址是 192.168.2.2,可是它对应的 Node 2 跟 Node 1 却根本不在一个子网里,没办法通过二层网络把 IP 包发送到下一跳地址。

在这种情况下,你就需要为 Calico 打开 IPIP 模式。

3. Calico IPIP 模式

Calico 的 IPIP 模式也是隧道中的一种。

k8s-network-calico-ipip

在 Calico 的 IPIP 模式下,Felix 进程在 Node 1 上添加的路由规则,会稍微不同,如下所示:

10.233.2.0/24 via 192.168.2.2 tunl0

这一次,要负责将 IP 包发出去的设备,变成了 tunl0,Calico 使用的这个 tunl0 设备,是一个 IP 隧道(IP tunnel)设备。

P 包进入 IP 隧道设备之后,就会被 Linux 内核的 IPIP 驱动接管。IPIP 驱动会将这个 IP 包直接封装在一个宿主机网络的 IP 包中,如下所示:

k8s-network-calico-ipip-wrap

其中,经过封装后的新的 IP 包的目的地址(图中的 Outer IP Header 部分),正是原 IP 包的下一跳地址,即 Node 2 的 IP 地址:192.168.2.2,而原 IP 包本身,则会被直接封装成新 IP 包的 Payload。

这样,原先从容器到 Node 2 的 IP 包,就被伪装成了一个从 Node 1 到 Node 2 的 IP 包。

由于宿主机之间已经使用路由器配置了三层转发,也就是设置了宿主机之间的“下一跳”。所以这个 IP 包在离开 Node 1 之后,就可以经过路由器,最终“跳”到 Node 2 上。

这时,Node 2 的网络内核栈会使用 IPIP 驱动进行解包,从而拿到原始的 IP 包。然后,原始 IP 包就会经过 Node 2 上由 Calico 设置的路由规则和 Veth Pair 设备到达目的容器内部。

以上,就是 Calico 项目主要的工作原理了。

额外的封包和解包工作会导致集群网络性能下降,在实际测试中,Calico IPIP 模式与 Flannel VXLAN 模式的性能大致相当。

4. 小结

三层网络主要通过维护路由规则,将数据包直接转发到对应的宿主机上。

  • Flannel host-gw 主要通过 etcd 中的子网信息来维护路由规则;
  • Calico BGP 模式则通过 BGP 协议收集路由信息,由 Felix 进程来维护;
  • Calico IPIP 模式也是一直隧道模式,主要通过在 IP 包外再封装一层 IP 包来实现。

使用场景

在大规模集群里,三层网络方案在宿主机上的路由规则可能会非常多,这会导致错误排查变得困难。此外,在系统故障的时候,路由规则出现重叠冲突的概率也会变大。

  • 1)如果是在公有云上,由于宿主机网络本身比较“直白”,一般推荐更加简单的 Flannel host-gw 模式。
  • 2)但不难看到,在私有部署环境里,Calico 项目才能够覆盖更多的场景,并为你提供更加可靠的组网方案和架构思路。

​

三层和隧道的异同:

相同之处是都实现了跨主机容器的三层互通,不同之处是三层通过配置下一条主机的路由规则来实现互通,因此需要二层连通,而隧道则是通过封包和解包来实现,因此不需要二层连通。

  • 三层的优点:少了封包和解包的过程,性能肯定是更高的。
  • 三层的缺点:需要自己想办法维护路由规则。
  • 隧道的优点:简单,原因是大部分工作都是由 Linux 内核的模块实现了,应用层面工作量较少。
  • 隧道的缺点:主要的问题就是性能低。

是否应用隧道的本质其实是在网络传输的中间过程中,只靠原本的数据包的路由信息(mac,ip)等,中间网络设备是否能够顺利识别并转发。

像二层不通的情况下,用 BGP 模式直接在宿主机设置路由是无法到达的,因此就需要该用 IPIP 模式走隧道了。

5. 参考

https://kubernetes.io/docs/concepts/cluster-administration/networking/

https://blog.laputa.io/kubernetes-flannel-networking-6a1cb1f8ec7c

https://feisky.gitbooks.io/kubernetes/content/network/flannel/flannel.html

深入剖析Kubernetes 专栏

K8S(Kubernetes)简介和官方安装部署保姆级详细教程 Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。 阅读详情

相关推荐

Kubernetes (K8S)讲解存储/网络/运维

本文是关于 K8S 的技术文章简介。首先是基本概念,包括 K8S 的定义、在容器编排领域的地位,以及 API Server 等核心组件功能。接着阐述资源对象,如 Pod 概念、生命周期,Deployment、StatefulSet、DaemonSet 的区别与应用场景,还有 Service 类型与作用。然后是存储部分,涵盖存储卷类型及 PV 和 PVC 的关系与原理。网络方面涉及 K8S 网络模型原理和 CNI 插件。最后是运维与监控,包括 K8S 集群监控方法和集群升级回滚的流程及注意事项。

J老熊 2159

k8s----解读kube三层网络方案

k8s----解读kube三层网络方案

jerry_smx的博客 635

[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 3227

Kubernetes的网络模型(K8S集群中的三个网络)

Kubernetes的基本网络结构描述, 构成一个K8S集群的三个网络(三个网段)及其关系

xiphi_6的专栏 2670

Kubernetes 三层网络方案深度剖析

随着 Kubernetes 集群规模的扩大和应用场景的多样化,对网络的要求也日益复杂。三层网络方案能够更好地适应这种复杂性,满足不同层次的网络通信需求。无论是集群内部的容器间通信、跨节点通信,还是与外部网络的交互,三层网络方案都提供了相应的机制。Kubernetes 三层网络方案为集群内的容器化应用提供了全面、高效的网络支持。

yonggeit的博客 3044

【K8S系列】深入解析k8s网络之—网络故障

网络故障是Kubernetes中常见的问题之一,可能会影响应用程序的正常运行。以下是一些网络故障的常见原因和解决方法的总结:

颜淡慕潇 2万+

Kubernetes网络三部曲之一~Pod网络

K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等,这么多概念足以让新手望而生畏。但是,只有深入理解K8s网络,才能为理解和用好K8s打下坚实基础。为了帮助大家理解,模仿TCP/IP协议栈,我把K8s的网络分解为四个抽象层,从0到3,除了第0层,每一层都是构建于前一层之上,如下图所示:第0层Node。

meser88的博客 1401

【K8S系列】第六讲:Kubernetes的网络模型

iptables规则监视发往服务虚拟的流量IP,并从一组可用的Pod中随机选择一个Pod IP地址,并且iptables规则将数据包的目标IP地址从服务的虚拟IP更改为所选Pod的IP。第三个网络是Pod的网络, K8s中一个Pod由多个容器组成,但是一个pod只有一个IP地址,Pod中所有的容器共享同一个IP。为了解决Pod IP地址不是持久性的,可能会进行更改,k8s采用service对pod进行抽象,集群节点所在的网络,这个网络就是你的主机所在的网络,通常情况下是你的网络基础设施提供。

颜淡慕潇 9112

【云原生】解读Kubernetes三层网络方案

由于 Calico 没有使用 CNI 的网桥模式,Calico 的 CNI 插件还需要在宿主机上为每个容器的 Veth Pair 设备配置一条路由规则,用于接收传入的 IP 包。可以看到,尽管这条规则的下一跳地址仍然是 Node 2 的 IP 地址,但这一次,要负责将 IP 包发出去的设备,变成了 tunl0。一旦配置了下一跳地址,那么接下来,当 IP 包从网络层进入链路层封装成帧的时候,eth0 设备就会使用下一跳地址对应的 MAC 地址,作为该数据帧的目的 MAC 地址。

如切如磋,如琢如磨,臻于至善。 719

AGX Orin设计-外围电路设计之一

AGX ORIN是英伟达Jetson系列中算力规格最高端的模组,其高达200TOPS/275TOPS的算力可以为各类场景提供澎湃的算力支持,本篇文章针对AGX ORIN的常规外围电路设计做分析描述。

zhiyuchenkeji的博客 4489

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1922

Kubernetes系列教程(三)---纯三层网络方案

本文主要介绍了 Kubernetes 中的Pure Layer 3)网络方案。其中的典型例子,莫过于 Flannel 的 host-gw 模式和 Calico 项目了。 Kubernetes 1. 概述 除了前面讲述的隧道模式之外,Kubernetes 中还有一种纯三层(Pure Layer 3)网络方案

探索云原生 787

2.实体机安装TrueNAS 方法

访问不了可以使用以下连接:提取码:0927。

Unofficial_user的博客 7440

【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

Kubernetes 网络结构介绍、外部网络访问 k8s 内部服务的方法。

商务合作 | 共同学习 | 携手共进 9万+

bugku渗透测试4-writeup

三、对这个主机进行全端口的扫描,发现存在22000 ssh端口,那么可以联想到时redis写入公钥来连接主机。又来了一个新的靶场,这个靶场打下来我觉得关键就是信息收集,走了很多的弯路。八、最后一个flag是要去看cms的数据库里面,这个数据库是sqlite。把这个数据库下载下来,登录密码是加密的,就直接用token。一、入口的漏洞是在登录的时候去抓包,修改action的值。六、没想到这个第一台机器的密码,在第二台里面。七、扫描第一台主机、使用之前的密码连接成功。获取最后一台主机的root密码。

vsdfbhsdhsdfh的博客 1304

从DCI-P3到sRGB:跨媒体色彩转换的矩阵奥秘与实践

本文深入解析从DCI-P3到sRGB的色彩空间转换技术,揭示矩阵运算的核心原理与实践技巧。通过实战案例展示如何正确处理白点差异、伽马曲线转换等关键环节,帮助影视从业者解决跨媒体色彩匹配问题,确保作品在不同设备上呈现一致的视觉效果。

weixin_28709649的博客 330

Kubernetes超详细教程,一篇文章帮助你从零开始学习k8s,从入门到实战

10w+的Kubernetes详细教程,涵盖k8s中常用的所有概念以及面试的高频问点(pod的深入理解),帮助你从零开始学习k8s,搭建k8s集群,从入门到实战,希望对大家学习k8s有所帮助

一弓虽的博客 6万+

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

《深入剖析Kubernetes》-解读Kubernetes三层网络方案

《深入剖析Kubernetes》-张磊 解读Kubernetes三层网络方案 写在前面: 张磊的极客时间课程《深入剖析Kubernetes》,是我见过讲docker和k8s最好的网络课程,学习之后,感觉对容器和k8s认识深了不少。好记性不如烂笔头,做个记录,加深印象。 正文 你好,我是张磊。今天我和你分享的主题是:解读 Kubernetes 三层网络方案。 在上一篇文章中,我以网桥类型的 Flannel 插件为例,为你讲解了 Kubernetes 里容器网络和 CNI 插件的主要工作原理。不过,除了这种模式

u012140251的博客 1579

基于STM32L4XX、HAL库的MMA8452QR1姿态传感器驱动程序设计

/ HAL库需要左移1位。#define MMA8452Q_I2C_ADDRESS 0x1D // SA0=1时的地址。* @param range: 量程(MMA8452Q_RANGE_2G/4G/8G)* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。

zhusl6688的博客 779

数学与纳米技术:微观世界的数学描述

《数学与纳米技术:微观世界的数学描述》 关键词:纳米技术、数学模型、微观世界、物理现象、计算模拟 摘要:本文探讨了数学在纳米技术领域的应用,从数学基础回顾、纳米技术引论,到物理现象与

AI天才研究院 1533

K8s网络插件Flannel,Calico

文章目录k8s网络解决方案CNI 容器网络规范Kubernetes-基于flannel的集群网络不同Pod中容器之间的通信 k8s网络解决方案 我们说k8s的网络解决方案,其实指代的是k8s的pod网络解决方案,其本质呢就是在介绍docker的跨主机网络解决方案。 在讨论Kubernetes网络之前,让我们先来看一下Docker网络。Docker采用插件化的网络模式,默认提供bridge、host...

西京刀客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kubernetes K8S 基于 Docker 安装部署

在 Docker 容器技术被炒得热火朝天之时,大家发现,如果想要将 Docker 应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对 Docker 及容器进行更高级更灵活的管理。就在这个时候,K8S 出现了。K8S,就是基于容器的集群管理平台,它的全称,是 Kubernetes。 本次主题将会为你分享: K8S 起源 K8S 集群 为什...

GitChat 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一、kubernetes k8s

k8s的全称:kubernetes k8sk8s的版本:1.301.20------------用的最多的版本,1.18-1.211.24------------>k8s的镜像不再使用docker,containerd。

2401_87896172的博客 3671

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

35 | 解读Kubernetes三层网络方案

在本篇文章中,详细讲述了 Fannel host-gw 模式和 Calico 这两种纯三层网络方案的工作原理。需要注意的是,在大规模集群里,三层网络方案在宿主机上的路由规则可能会非常多,这会导致错误排查变得困难。此外,在系统故障的时候,路由规则出现重叠冲突的概率也会变大。基于上述原因,如果是在公有云上,由于宿主机网络本身比较“直白”,我一般会推荐更加简单的 Flannel host-gw 模式。

qq_37756660的博客 236
上一篇: Kubernetes教程(二)---集群网络之 Flannel 核心原理
下一篇: Kubernetes教程(四)---Service核心原理
探索云原生
博客等级 码龄9年 730粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值