0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Kubernetes的基本构建块和挑战

星星科技指导员 来源:NVIDIA 作者:Erez Scop 2022-04-22 11:04 次阅读

在本地和公共云上使用相同的编排允许高度的灵活性和易操作性。您可以跨裸机和公共云使用相同的 API 。 Kubernetes 是一个开源的容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。它最初是由谷歌设计的,现在由云本地计算基金会维护。

Kubernetes 正在迅速成为在混合云中部署和管理容器的新标准。作为一个网络工程师,你为什么要关心开发人员对 Kubernetes 做了什么?它不只是另一个消耗网络资源的应用程序吗? Kubernetes 提供了一个灵活可靠的平台,使开发人员能够专注于开发和扩展他们的应用程序。

在本文中,我将讨论 Kubernetes 的基本构建块和一些网络挑战。

Kubernetes 积木

Kubernetes 是一个工具,它使您能够管理云基础设施以及管理虚拟机或网络的复杂性。

节点

节点是 Kubernetes 中计算元素的最小单位。它是集群中单个机器的表示。在大多数生产系统中,节点通常是物理服务器或托管在本地或云上的虚拟机。

poYBAGJiG0GATVrfAAHWEm-haw0739.png

图 1 。在 Kubernetes 中,多个节点构成了主机工作者和主组件的基础结构

集群

Kubernetes 集群是一组用于运行容器化应用程序的节点机。当您在集群上部署应用程序时,集群将智能地处理将工作分发到各个节点的工作。如果添加或删除了任何节点,集群会根据需要转移工作负载。对于应用程序或开发人员来说,哪个节点实际运行代码并不重要。

pYYBAGJiG0KAXRIUAABuxzMX2D8656.png

图 2 。集群由工作节点组成,工作节点表示一个计算主机,可以在该主机上部署、运行和管理容器化应用程序

持久卷

由于不能保证在集群上运行的应用程序在特定节点上运行,因此无法将数据保存到文件系统中的任意位置。如果应用程序试图保存数据以供以后使用,但随后又重新定位到新节点上,则数据将不再位于应用程序所期望的位置。因此,与每个节点相关联的传统本地存储被视为一个临时缓存来保存应用程序,但本地保存的任何数据都不能持久。

为了永久存储数据, Kubernetes 使用持久卷。虽然所有节点的 CPURAM 资源都由集群有效地汇集和管理,但持久性文件存储不是必需的。相反,本地或云存储可以作为持久卷附加到集群。

容器和微型服务

运行在 Kubernetes 上的应用程序被打包为 Linux 容器。容器是一个被广泛接受的标准,因此已经有许多预构建的映像可以部署在 Kubernetes 上。

poYBAGJiG0OANHSnAAJuniHZqtE671.png

图 3 。容器将所有代码和依赖项打包在一起,允许软件堆栈在其所在的任何环境中运行

容器化允许创建自包含的 Linux 执行环境。任何应用程序及其所有依赖项都可以捆绑到单个文件中。容器允许形成强大的连续集成( CI )和连续部署( CD )管道,因为每个容器可以容纳应用程序的特定部分。容器是微服务的基础设施。

微服务是一种软件开发技术,一种将应用程序构造为松散耦合服务集合的体系结构风格。将应用程序分解为不同的较小服务的好处是它改进了模块化。这使得应用程序更易于理解、开发、测试和部署。

Pods

Kubernetes 不直接运行容器。相反,它将一个或多个容器包装成一个更高层次的结构,称为 Pod 。同一 Pod 中的任何容器共享同一节点和本地网络。容器可以轻松地与同一个 Pod 中的其他容器进行通信,就像它们在同一台机器上一样,同时保持与其他容器的一定程度的隔离。

pYYBAGJiG0SAaey3AAI8ljQuwfo536.png

图 4 。吊舱是集群中最小的可部署单元,包含一组容器

豆荚是库伯内特斯的复制单位。如果您的应用程序变得太重,单个 Pod 实例无法承载负载,那么可以配置 Kubernetes ,以便根据需要将 Pod 的新副本部署到集群。即使不是在重载下,在生产系统中随时运行一个 Pod 的多个副本也是标准的,以允许负载平衡和抗故障。

部署

虽然 pod 是 Kubernetes 的基本计算单元,但它们通常不会直接在集群上启动。相反, pod 通常由另一个抽象层来管理: deployment 。部署的目的是声明一次应该运行多少个 Pod 副本。当部署被添加到集群中时,它会自动增加请求的 pod 数量,然后监视它们。如果吊舱死亡,部署会自动重新创建它。

对于部署,您不必手动处理 pod 。您只需声明所需的系统状态,系统就会自动为您进行管理。

poYBAGJiG0WAN_pGAACpznKcyyA890.png

图 5 。部署用于管理复制集、 pod 定义和更新以及其他概念

服务和服务网格

Kubernetes 服务是一种抽象,它定义了一组逻辑 pod 和访问它们的策略。服务支持依赖吊舱之间的松散耦合。

pYYBAGJiG0aAQkGTAAHVcpvn0s4698.png

图 6 。服务支持依赖吊舱之间的耦合。

术语 服务网 用于描述组成此类应用程序的微服务网络以及它们之间的交互。随着服务网格的规模和复杂性的增长,它可能变得更难理解和管理。它的需求可以包括发现、负载平衡、故障恢复、度量和监视。服务 mesh 通常还有更复杂的操作需求,如 A / B 测试、 canary 发布、速率限制、访问控制和端到端身份验证。

控制服务网格最流行的插件之一是 Istio ,这是一个开源的独立服务,它提供了成功运行分布式微服务体系结构所需的基础。 Istio 提供了对整个服务网格的行为洞察力和操作控制,提供了一个完整的解决方案来满足微服务应用程序的各种需求。使用 Istio ,应用程序的所有实例都有自己的 sidecar 容器。此侧车充当所有传出和传入网络流量的服务代理。

网络

Kubernetes 网络的核心是一个重要的基本设计理念:每个 Pod 都有一个唯一的 IP 地址。

poYBAGJiG0iARsDiAACPaWqtKPc672.png

图 7 。 Pod IP 地址由内部的所有容器共享,并且可以从所有其他 Pod 路由。

Pod 的 IP 地址由内部的所有容器共享,并且可以从其他 Pod 路由。这种 IP-per-Pod 模型的一个巨大好处是没有与底层主机的 IP 地址或端口冲突。不必担心应用程序使用什么端口。

有了这一点, Kubernetes 唯一的要求就是 Pod IP 地址是可路由的,并且可以从所有其他 Pod 访问,而不管它们的节点是什么。

为了降低复杂性并使应用程序移植无缝进行,在 Kubernetes 网络模型中,一些规则作为基本要求被强制执行:

容器可以在没有网络地址转换( NAT )的情况下与所有其他容器通信。

节点可以在没有 NAT 的情况下与所有容器通信,反之亦然。

容器将自己视为的 IP 地址与其他容器看到的 IP 地址相同。

pYYBAGJiG0mADXAjAACAfMxoWmc592.png

图 8 。 Kubernetes 网络模型

Kubernetes 有许多网络实现。法兰绒和印花布可能是最流行的用作容器网络接口( CNI )的网络插件。 CNI 可以看作是容器运行时和网络实现之间最简单的接口,其目标是为容器创建一个通用的基于插件的网络解决方案。

Flannel 可以使用多个封装后端运行,建议使用 VXLAN 。在 VXLAN 中使用 Flannel 时, Kubernetes 节点之间需要 L2 连接。由于这一要求,结构 MIG 的大小将受到限制,如果部署了纯 L2 网络,则连接的机架数将限制为脊椎交换机上的端口数。

poYBAGJiG0mAIilvAAClWo6dTU0613.png

图 9 。当使用覆盖网络时, Flannel 需要 Kubernetes 节点之间的 L2 连接, VXLAN 是首选。

为了克服这个问题,可以在叶级部署一个具有 VXLAN 和 EVPN 的 L3 结构。 L2 连接提供给 BGP 路由结构上的节点,该结构可以轻松扩展。来自节点的 VXLAN 数据包被封装到叶交换机之间运行的 VXLAN 隧道中。

pYYBAGJiG0qAX7_OAABpdmNMUkA944.png

图 10 。 L2 连接提供给 BGP 路由结构顶部的节点。

NVIDIA Spectrum ASIC 在 VXLAN 吞吐量、延迟和规模方面提供了巨大的价值。大多数交换机最多可支持 128 个远程 VTEP ,这意味着单个结构中最多可支持 128 个机架。 NVIDIA Spectrum ASIC 支持多达 750 个远程 vtep ,在单个结构中允许多达 750 个机架。

NVIDIA Spectrum EVPN VXLAN 微分器

观看以下视频,了解为什么 NVIDIA Spectrum 以太网交换机是构建可扩展、高效和高性能 EVPN VXLAN 结构的最佳平台。

视频了解 EVPN VXLAN 微分器 NVIDIA Spe CTR um 交换机提供的功能

印花布作为设计选项

在印花布网络中,每个端点都是一条路由。硬件网络平台受到他们可以学习的路由数量的限制。这通常在 10000 或 100000 条路线的范围内。路由聚合可以有所帮助,但这通常取决于编排软件(例如 OpenStack )使用的调度器的功能。

poYBAGJiG0uAU3s1AAD0fnmgwco577.png

图 11 。典型的印花布部署

为 Kubernetes 部署选择交换机时,请确保它的路由表大小不会限制 Kubernetes 的计算规模。 NVIDIA Spectrum ASIC 提供了完全灵活的表大小, Spectrum 1 支持多达 176000 个 IP 路由条目, Spectrum 2 支持多达 512000 个 IP 路由条目,支持全球最大企业运行的最大 Kubernetes 集群。

跨物理网络和 Kubernetes 的路由栈持久性

在交换层上使用 Cumulus Linux 操作系统时,我们建议使用 FRR 作为节点上的路由栈,利用 BGP 未编号 。如果你正在寻找一个纯开源的解决方案,考虑一下 NVIDIA Linux 交换机 ,它支持 FRR 和 BEAR 作为路由栈。

Kubernetes 的网络可见性挑战

容器会根据需要在群集中的任何服务器上自动启动和销毁。因为容器位于主机内部,所以网络工程师可能看不到它们。你永远不知道它们在哪里,也不知道它们何时被创造和毁灭。

众所周知,运营现代敏捷数据中心非常困难,因为网络可见性有限,流量模式不断变化。

通过在运行 Cumulus 操作系统的 NVIDIA Spectrum 交换机上使用 Cumulus NetQ ,您可以广泛了解 Kubernetes 部署,并在这些快速变化的动态环境中运行。

关于作者

Erez Scop 是 NVIDIA 的产品管理总监,负责管理存储、数据平面开发套件 (DPDK) 和软件加速产品线。Erez 是管理开源项目的 dpdk.org 管理委员会的成员。在加入Mellanox和NVIDIA之前,Erez 是 AudioCodes 有限公司的产品经理,在那里他领导了他们在电信、VoIP 和统一通信领域的主要产品线超过五年。Erez 在产品管理方面有超过 8 年的经验,并担任了超过 10 年的研发管理职位。Erez 拥有电气电子工程 B.Sc 和 MBA 学位。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4934

    浏览量

    102796
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123187
  • 交换机
    +关注

    关注

    21

    文章

    2622

    浏览量

    99240
收藏 人收藏

    评论

    相关推荐

    Kubernetes集群搭建容器云需要几台服务器?

    Kubernetes集群搭建容器云需要几台服务器?至少需要4台服务器。搭建容器云所需的服务器数量以及具体的搭建步骤,会根据所选用的技术栈、业务规模、架构设计以及安全需求等因素而有所不同。以下是一个基于Kubernetes集群的容器云搭建的概述:
    的头像 发表于 10-21 10:06 125次阅读

    利用AI构建实用量子计算应用

    在实践中构建实用量子计算机的难度极高,这需要大幅提高量子计算机的规模、保真度、速度、可靠性和可编程性,才能充分发挥其优势。另外,还需要功能强大的工具以解决许多阻碍实现实用量子计算的复杂物理挑战和工程难题。
    的头像 发表于 09-09 10:24 301次阅读
    利用AI<b class='flag-5'>构建</b>实用量子计算应用

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 321次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b>集群

    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

    Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。
    的头像 发表于 07-15 13:31 818次阅读
    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装<b class='flag-5'>Kubernetes</b>集群

    振动电机偏心调整方法

    振动电机是一种将电能转换为机械振动的设备,广泛应用于矿山、煤炭、冶金、建材、化工、粮食等行业。振动电机的工作原理是通过偏心的旋转产生离心力,从而实现物料的筛分、输送、脱水等功能。偏心是振动电机
    的头像 发表于 06-12 16:17 1899次阅读

    鸿蒙开发【编译构建】讲解

    编译构建是将应用/服务的源代码、资源、第三方库等,通过编译工具转换为可直接在硬件设备上运行的二进制机器码,然后再将二进制机器码封装为HAP/APP软件包,并为HAP/APP包进行签名的过程。其中
    发表于 02-27 17:41

    西门子博途:属性- 隐藏参数

    在 LAD 或 FBD 中调用该时,可隐藏参数。刚开始时,隐藏的参数不可见;但可通过框底部边缘处的小箭头进行显示。
    发表于 01-16 09:30 1748次阅读
    西门子博途:<b class='flag-5'>块</b>属性- 隐藏<b class='flag-5'>块</b>参数

    西门子博途示例:设置优化访问

    默认情况下,为 S7 - 1200/1500 的所有新创建的启用优化访问。可为 OB、FB 和全局DB设置访问。对于背景DB,设置来自各自的 FB。 如果将从 S7- 300
    的头像 发表于 01-15 10:41 5207次阅读
    西门子博途示例:设置优化<b class='flag-5'>块</b>访问

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 刚刚 GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源,用于管理已暴露的服务。在这篇文章中,我将介绍 Gateway
    的头像 发表于 01-12 11:32 850次阅读
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    配置Kubernetes中Pod使用代理的两种常见方式

    在企业网络环境中进行Kubernetes集群的管理时,经常会遇到需要配置Pods通过HTTP代理服务器访问Internet的情况。这可能是由于各种原因,如安全策略限制、网络架构要求或者访问特定资源
    的头像 发表于 01-05 11:22 1071次阅读
    配置<b class='flag-5'>Kubernetes</b>中Pod使用代理的两种常见方式

    使用Jenkins和单个模板部署多个Kubernetes组件

    在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个
    的头像 发表于 01-02 11:40 701次阅读
    使用Jenkins和单个模板部署多个<b class='flag-5'>Kubernetes</b>组件

    Kubernetes RBAC:掌握权限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一项关键的安全功能,它通过细粒度的权限控制机制,确保集群资源仅被授权的用户或服务账号访问。
    的头像 发表于 12-25 09:43 448次阅读

    Kubernetes开发指南之深入理解CRD

    CRD本身是Kubernetes内置的资源类型,全称是CustomResourceDefinition,可以通过命令查看,kubectl get查看集群内定义的CRD资源。
    的头像 发表于 12-13 18:19 827次阅读
    <b class='flag-5'>Kubernetes</b>开发指南之深入理解CRD

    西门子博途: 功能、组织介绍-从设备上传

    请注意,加载单个时,变量或其它可能引用的所需不会与各个一起加载。在加载过程中,将根据名称重新分配对变量和的引用。加载操作完成之后,检查这些分配是否正确。
    的头像 发表于 12-10 16:06 2646次阅读
    西门子博途: 功能<b class='flag-5'>块</b>、组织<b class='flag-5'>块</b>介绍-从设备上传

    大模型数据集:构建挑战与未来趋势

    随着深度学习技术的快速发展,大型预训练模型如GPT-4、BERT等在各个领域取得了显著的成功。这些大模型背后的关键之一是庞大的数据集,为模型提供了丰富的知识和信息。本文将探讨大模型数据集的构建、面临的挑战以及未来发展趋势。
    的头像 发表于 12-06 15:28 1553次阅读