首页 > 编程语言 >Kubernetes 上的数据已跨越鸿沟:在 GKE 上运行有状态应用程序的案例

Kubernetes 上的数据已跨越鸿沟:在 GKE 上运行有状态应用程序的案例

时间:2023-09-28 16:31:52浏览次数:40  
标签:负载 Kubernetes GKE 存储 应用程序 数据

Kubernetes 是当今云原生开发的事实上的标准。长期以来,Kubernetes 主要与无状态应用程序相关,例如 Web 和批处理应用程序。然而,与大多数事物一样,Kubernetes 也在不断发展。如今,我们看到 Kubernetes 上有状态应用程序的数量呈指数级增长。事实上,自 2019 年以来,在 Google Kubernetes Engine (GKE) 上运行有状态应用程序的集群数量每年都增加一倍。

如今,Kubernetes 越来越多地用于运行有状态和数据应用程序,例如数据库(Kafka、MySQL、PostgreSQL 和 MongoDB)、大数据(Hadoop 和 Spark)、数据分析(Hive 和 Pig)以及机器学习(TensorFlow 和 PyTorch) 。Airbyte和矢量 DB等现代数据工程工具以及Qdrant、Weaviate和Feast等特征存储使用容器和 Kubernetes 作为默认的自管理计算部署选项。

与此同时,Kubernetes平台工程师越来越熟悉这些数据工具,而数据工程师也越来越熟悉Kubernetes。我们在2022 年 Data On Kubernetes (DoK) 报告中对此进行了报道,客户报告称,通过在 Kubernetes 上运行数据应用程序,生产力提高了 3 倍。此外,超过 41% 的受访者表示,他们计划重新培训或聘用有关 Kubernetes 人才的数据。在 Kubernetes 上运行数据工作负载的推动只会进一步增长。

image5.max-480x294.jpg 图 1. Kubernetes 上的有状态工作负载呈指数级增长(以 Google Kubernetes Engine 为例)

由于多种原因,DoK 是一种很有前途的运行数据工作负载的方法:

1、可扩展性和灵活性

大规模人工智能的计算以 petaFlops 为单位。客户利用 Kubernetes 的规模来运行大型超级计算机。例如,PGS 将其 Cray 替换为基于 GKE 的超级计算机,处理能力为 72.02 petaFLOPS。这相当于世界第七大计算机。

随着大规模计算的出现,需要可扩展的存储。Kubernetes 的灵活性导致了通过容器存储接口 (CSI) 进行存储集成,这为客户提供了广泛的存储选项来访问其数据。

对块和文件存储的支持已经存在一段时间了;最近,新的基于对象存储的 Fuse CSI 驱动程序被证明是与有状态应用程序的流行的新集成。这种需求是由需要高吞吐量和低成本存储的 AI/ML 和数据分析应用程序驱动的。添加 Fuse 层有助于提高可移植性,因为数据科学家在访问对象存储上的数据时可以简单地使用文件语义,而不是使用特定于云提供商的 SDK。

image3.max-600x590.png 图 2. GCS Fuse CSI 允许 Pytorch 和 Tensorflow 上的 AI/ML 应用程序通过文件语义访问对象存储中的数据

2、韧性

Kubernetes 提供了高度的弹性,可以自动从故障场景中恢复。Kubernetes 可以自动修复,包括自动重新启动失败的容器,它还可以将数据工作负载分布在多个节点上,以提高性能和可用性。例如,您可以使用分散策略跨区域放置副本、设置负载平衡、无缝附加持久卷以及安排备份。您还可以使用 Terraform 等基础设施即代码 (IaC) 工具使其成为可重复的模式。

Kubernetes 进行频繁的更新,这可以被视为对有状态应用程序的破坏。然而,凭借 Pod 中断预算、维护窗口和蓝绿部署,Kubernetes 拥有优雅地管理升级所需的所有自动化功能,使组织能够实现在现代基础设施上运行的好处。

image1.max-892x502.png 图 3.部署在 HA 中的 Kubernetes 上的 Kafka 架构

3、开放性

Kubernetes 是一个社区主导的项目和完全开源的工具(曾经是有史以来增长最快的开源软件),这意味着存在一个由其他开源工具组成的庞大生态系统,旨在与它一起使用。还有丰富的工具和服务生态系统可帮助您管理数据工作负载。您可以使用 Spark、Airflow 和 Kafka 等 Kubernetes 运算符,它们有 OSS 和企业版本。然后还有现代数据工程 OSS 工具,如Airbyte、Feast和矢量数据库(如 Weaviate 和Qdrant),支持容器和 kubernetes 进行自我管理的计算部署。

4、费用

Kubernetes 允许细粒度的装箱和正确调整资源大小。这为数据应用带来了一定程度的成本优化,而这在传统的虚拟机领域是看不到的。GKE 等托管 Kubernetes 产品现在可为您提供开箱即用的建议,帮助您做出正确调整工作负载大小和提高效率的决策。

image0.gif

总而言之,在数据和 AI/ML 应用预计将增长的世界中,Data on Kubernetes 完全有能力成为操作默认选项。要了解有关在 Kubernetes 上运行有状态和数据应用程序的更多信息,请浏览GKE文档中的数据。

标签:负载,Kubernetes,GKE,存储,应用程序,数据
From: https://blog.51cto.com/u_15961229/7640748

相关文章

  • Kubernetes 上的数据已跨越鸿沟:在 GKE 上运行有状态应用程序的案例
    Kubernetes是当今云原生开发的事实上的标准。长期以来,Kubernetes主要与无状态应用程序相关,例如Web和批处理应用程序。然而,与大多数事物一样,Kubernetes也在不断发展。如今,我们看到Kubernetes上有状态应用程序的数量呈指数级增长。事实上,自2019年以来,在GoogleKubernetes......
  • 在Flutter中制作指纹认证应用程序
    本文主要展示如何在Flutter中为android应用程序实现指纹认证系统现在许多手机都配备了指纹传感器,这使得用户登录和本地身份验证更容易,而且比使用密码更安全。设置我们的项目在我们开始编写应用程序之前,我们需要先设置一些东西。我们需要做的第一件事是在我们的pubspec.yaml文......
  • ubuntu20.04使用kubeadm安装kubernetes1.24.4
    介绍1.k8s的版本在1.24版本开始Kubernetes正式移除对Dockershim的支持,Kubernetes1.24之后,如还想继续在k8s中使用docker,需要自行安装cri-dockerd组件或者containerd组件,下面的步骤,经过反复测试很多次,步骤应该很稳2.#更新阿里云yumsudocp/etc/apt/sources.list/etc/apt/sourc......
  • Flutter:桌面应用程序开发的新格局
    桌面应用开发的现状在过去,桌面应用程序的开发通常需要使用特定于操作系统的工具和语言,如C++、C#、Java等。这导致了高昂的开发成本和维护困难。尽管有一些跨平台桌面开发工具,如Electron和Qt,但它们在性能、用户体验和开发效率方面存在一些限制。Flutter的出现改变了这一格局,为桌面应......
  • Kubernetes创建MysQL
    原文:https://www.cnblogs.com/wenkuna/p/16985512.html创建数据存储PV、PVC这里我们使用nfs作为storageclass,具体yaml文件如下:yaml#创建PVapiVersion:v1kind:PersistentVolumemetadata:name:mysqlspec:storageClassName:manualcapacity:storage:20Gi......
  • 应用程序人机交互的一些反面教材
    无用的模态对话框下图是安信可开发的一款串口工具,当前是已插入USB串口并且软件为打开状态。当用户在上述情况下,主动拔除USB设备时,软件会弹出对话框,用户除了点击对话框中的OK或者右上角的X,对软件其余界面元素的任何操作都是无效的。并且点击对话框中的元素对用户是没有积极意义......
  • kubernetes集群搭建2023
    参考:https://zhuanlan.zhihu.com/p/627310856(比较详细的一篇k8s集群部署文章)https://www.cnblogs.com/libruce/p/17477374.html或者https://zhuanlan.zhihu.com/p/590652259(不关闭防火墙的情况,如何配置端口)https://www.cnblogs.com/suuuch/p/16728103.html(初始化集群或者新节......
  • IIS三种应用程序池回收方法
    转自:https://backend.devrank.cn/traffic-information/7082735106565228581......
  • 使用 Go 和 ADB 启动 Android 应用程序
    在移动应用程序开发中,有时我们需要自动启动Android应用程序以执行测试、截屏或其他自动化任务。本文将介绍如何使用Go编写一个程序,通过Android调试桥(ADB)来启动指定的Android应用程序。我们将提供完整的Go代码示例以及相应的说明。准备工作安装Go编程语言。你可以从Go......
  • 代码混淆和加固,保障应用程序的安全性
    ​ 前言iOS加固保护是直接针对iosipa二进制文件的保护技术,可以对iOSAPP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护,防止应用程序中的代码及资源文件被恶意篡改。IpaGuard通过修改ipa文件中的macho文件中二进制数......