IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 使用Calico、Flannel、Weave和Cilium的终极指南 -> 正文阅读

[系统运维]使用Calico、Flannel、Weave和Cilium的终极指南

请添加图片描述

即使对于经验丰富的 Kubernetes 用户来说,Kubernetes 网络也可能是一个令人生畏的话题。在这篇文章中,我们将深入探讨可用于 Kubernetes 的最流行的容器网络解决方案。在深入研究每个网络解决方案的细节之前,我们将粗略地了解一下 Kubernetes 网络和容器网络接口 (CNI) 规范。我们将讨论为什么网络是一个复杂的问题,以及 CNI 规范如何允许在 Kubernetes 项目之外开发专门的解决方案。

一旦我们对 Kubernetes 网络和 CNI 规范有了很好的了解,我们将剖析一些最流行的容器网络解决方案,包括 flannel、calico、weave 和 cilium。我们将讨论是什么让每个解决方案独一无二,并涵盖解决方案提供的特定功能以及部署解决方案的潜在挑战。最后,你将对每种网络解决方案提供的内容以及如何为你的项目选择正确的 Kubernetes 网络解决方案有一个更好的了解。

Kubernetes 网络

正如我们已经提到的,网络是一个复杂的问题。

Kubernetes 将其网络建立pod 级别–在每个 pod 获取 IP 地址 。该模型的优点是你无需担心在 pod 之间创建链接或将容器端口映射到主机端口等。但是你需要确保pod 可以与其他 pod 通信,并且节点可以与 pod 通信而无需需要网络地址转换 (NAT)。该模型的好处是它与 VM网络模型的兼容性。如果你的应用程序以前在 VM 中工作,那么几乎可以保证它可以在 Kubernetes 上运行的 pod 中工作。

网络要求差异很大,具体取决于每个应用程序的需求。Kubernetes 不是在单个解决方案中解决所有这些需求,而是将网络从 Kubernetes 本身中抽象出来,允许供应商构建特定的解决方案来满足不同的需求,并且用户可以将他们想要的网络解决方案插入到他们的集群中。

为什么选择 CNI

linux 容器技术和容器网络不断发展,以适应在不同环境中运行的各种应用程序的需求。为了在一端实现各种网络解决方案与另一端不同容器运行时和容器编排平台之间的集成,而不是重复使网络可插入的努力,容器网络接口 ( CNI ) 的创建是为了在容器执行和网络层之间定义一个标准化的通用接口

CNI 项目是云原生计算基金会 (CNCF) 的一部分。CNI 规范描述了如何为 Linux 容器配置网络接口。它将其重点领域定义为仅限于容器网络连接并在容器消失时移除分配的资源。由于这个重点,CNI 规范简单并被广泛采用,支持大量插件。许多容器编排框架,包括 Kubernetes,都实现了这个规范。如果你想了解有关 CNI 规范、使用它的运行时以及实现它的第三方插件的更多信息,CNI GitHub 项目是一个很好的起点。

CNI 插件必须符合 CNI 规范定义的标准。每个实现 CNI 规范的插件都试图解决容器网络的不同方面。识别和配置正确的插件或插件组合以满足你的项目需求至关重要。接下来,我们将深入研究四个最受欢迎的 Kubernetes 网络插件,并探讨它们的优缺点。

这些插件是:

  • Flannel
  • Calico
  • Weave
  • Cilium

Flannel

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wnOBHgSq-1647251656576)(https://platform9.com/wp-content/uploads/2021/06/flannel-horizontal-color.svg)]

CoreOS 创建了Flannel作为 Kubernetes 的首批 CNI 实现之一。因此,它是可用的最古老和最成熟的 CNI 插件之一。由于其简单性和易用性,它也是你的第一个 Kubernetes 集群网络的绝佳入门级选择。Flannel 提供对基本网络功能的访问,并且需要有限的管理来设置和维护。

Flannel 在 Kubernetes 集群的所有节点上运行一个简单的覆盖网络。 它在第 3 层( OSI 网络模型的网络层)提供网络。

**Flannel 支持 VXLAN 作为其默认后端,但你也可以将其配置为使用 UDP 和 host-gw。**AWS VPC、AliVPC、IPIP 和 IPSec 等一些实验性后端也可用,但目前尚未得到官方支持。

Flannel 的缺点之一是缺乏高级功能,例如配置网络策略和防火墙的能力。因此 Flannel 是 Kubernetes 集群网络的一个很好的入门级选择,但是,如果你正在寻找高级网络功能,你可能需要考虑其他 CNI 选项,例如 Calico。

Calico

img

Calico 以其吉祥物“Felix”为代表,是由Tigera创建的开源项目。Calico 支持广泛的平台,包括 Kubernetes。Calico 项目托管在GitHub 上,并拥有大量详尽的文档。Tigera 还提供了 Calico 的付费企业版。Platform9 还在Platform9 托管 Kubernetes 的付费版本中提供 Calico 作为完全托管的解决方案。托管解决方案使你可以访问 Calico 的所有特性和功能,但无需管理 Calico 配置和维护的复杂性。

Calico 已成为 Kubernetes 集群网络中最受欢迎的 CNI 插件之一。该项目以可靠、灵活和支持 Kubernetes 集群的高性能网络而赢得声誉。

与 Flannel 一样,**Calico 在 OSI 模型的第 3 层上运行,并使用 BGP 协议在其默认配置中的节点之间移动网络数据包,并使用 IP in IP 进行封装。**使用 BGP,Calico 可以本地定向数据包,而无需将它们包装在额外的封装层中。与更复杂的后端(如 VXLAN)相比,这种方法可以提高性能并简化网络问题的故障排除。

Calico 最有价值的特性是它对网络策略的支持。通过定义和执行网络策略,你可以规定哪些 pod 可以发送和接收流量并管理网络内的安全性。虽然 Calico 本身就是一个使用良好且功能强大的网络工具,但它的策略管理还允许它与 Flannel 或 Istio(一种流行的 Kubernetes 服务网格)等系统很好地配对。

Weave

Weave 或 Weave Net 是Weaveworks创建和支持的全功能 CNI 插件。Weave 在GitHub 存储库Weaveworks网站上可用。与 Calico 一样,Weave 也提供带有支持计划的付费版本。

Weave 在 Kubernetes 集群的所有节点之间创建一个网格覆盖,并将其与每个节点上的路由组件结合使用,以在整个集群中动态路由流量。默认情况下,Weave 使用快速数据路径方法路由数据包,该方法尝试沿最短路径在节点之间发送流量。该网络不断分析交通流量并优化路线。如果快速数据路径发生故障,则称为***sleeve***数据包转发的较慢网络方法是备用方法 。

Weave 包括创建和执行网络策略等功能,并允许你为整个网络配置加密。如果已配置,Weave 使用 NaCl 加密进行***sleeve流量,使用 IPsec ESP 加密进行***快速数据路径流量。

Cilium

Cilium标志

Kubernetes CNI 插件领域的一个相对较新的人是Cilium。**Cilium 及其可观测性工具 Hubble 充分利用了eBPF。**eBPF 是一种在 Linux 内核中运行的新技术,可以配置和执行沙盒程序,无需更改内核源代码即可扩展内核的功能。Cilium 使用 eBPF 技术为你的 Kubernetes 集群网络支持更高级的网络和可观察性功能。

Cilium 提供的优于其他 CNI 插件的优势之一是在管理大型网络时减少了开销。虽然一些 CNI 插件依赖于每个 Kubernetes 集群节点上的iptables来管理网络寻址,但 Cilium 利用 eBPF 来更有效地处理这个问题并以更高性能的方式。当你的 Kubernetes 集群扩展到数万个节点时,高效的地址查找至关重要。

Cilium 提供在 OSI 网络模型的第 3、4 和 7 层运行的网络策略。这种在多个层应用策略的能力为你在 Kubernetes 集群中管理入口和出口流量的方式提供了更大的灵活性。虽然仍然是一个相对较新的 CNI 插件,但 Cilium 可能值得考虑,特别是如果你需要细粒度的安全控制或需要减少超大型 Kubernetes 集群的查找延迟。

为你的项目选择正确的解决方案

根据你的需要,选择要在集群中使用的正确 CNI 插件可能非常简单,也可能稍微复杂一些。如果你的唯一要求是基本的网络解决方案,那么 Flannel 可能是你的最佳选择。虽然它缺乏网络策略和加密等许多高级功能,但与其他 CNI 插件相比,它轻巧、快速且消耗的资源更少。

如果**通过网络策略和加密实现的性能和安全性至关重要,你应该考虑 Calico、Weave 或 Cilium 或像 Canal 这样的混合解决方案。**Canal 使用Calico和Flannel 的组合。Flannel 提供基本的网络连接,并与 Calico 一流的网络策略完美匹配。网络策略对于维护安全集群至关重要,尤其是考虑到网络攻击的风险增加。Calico 的文档包括关于采用零信任网络模型的必读部分。

**Cilium 可以为大规模部署提供优势,并利用 eBPF 来提高可观察性和网络管理效率。**Cilium 仍然是一个年轻的项目,在下面引用的基准测试中,它似乎确实更耗费资源。

说到基准测试,ITNEXT 每年都会发布CNI 插件的基准测试结果集。结果显示我们今天讨论的所有框架以及其他几个框架的性能相似。该研究使用默认配置在具有三个节点的集群上运行基准测试,并测量性能、吞吐量、延迟和资源使用情况等指标。

ITNEXT cilium calico flannel weave 的 CNI 插件基准比较

图 1 ITNEXT 的 CNI 插件基准比较

基准测试出色地突出了与 Kubernetes 集群的 CNI 插件相关的最关键因素。基准研究对所调查的每个工具都使用了默认配置。微调你的 CNI 插件可以提供更好的结果,并且可以满足你特定集群的需求。Platform9 的联合创始人兼产品副总裁 Madhura Maskasky 讨论了使用 Calico 实现高性能

Kubernetes 最好的事情之一是不断增长的全球社区以及支持其增长的大量开源项目、服务提供商和托管平台。这对你来说意味着你并不孤单。许多工程师都面临着同样的问题和挑战。

链接:https://platform9.com/blog/the-ultimate-guide-to-using-calico-flannel-weave-and-cilium/

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 23:07:58  更:2022-03-15 23:08:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:23:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码