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等现代数据工程工具以及QdrantWeaviateFeast等特征存储使用容器和 Kubernetes 作为默认的自管理计算部署选项。

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

https://storage.googleapis.com/gweb-cloudblog-publish/images/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。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image3.max-600x590.png

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

2. 韧性

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

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

3、开放性

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

4. 费用

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

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/image4.gif

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes上部署SonarQube的案例,可以按照以下步骤进行操作: 1. 创建一个Kubernetes集群:您可以使用自己喜欢的Kubernetes发行版,如Minikube、Docker Desktop或云提供商(如GKE、AKS、EKS等)提供的托管Kubernetes服务。 2. 部署数据库:SonarQube需要使用数据库存储数据。您可以选择使用MySQL或PostgreSQL等关系型数据库。在Kubernetes上,可以使用Helm来简化数据库的部署。例如,使用以下命令来安装PostgreSQL数据库: ```shell helm repo add bitnami https://charts.bitnami.com/bitnami helm install my-postgresql bitnami/postgresql ``` 3. 部署SonarQube:使用Helm来部署SonarQube。可以通过添加Helm存储库并安装SonarQube chart来完成。例如,使用以下命令来安装SonarQube: ```shell helm repo add oteemo https://oteemo.github.io/charts helm install my-sonarqube oteemo/sonarqube ``` 4. 配置Ingress:如果您希望通过外部访问SonarQube,则需要配置Ingress。具体配置方式取决于您所使用的Kubernetes集群和Ingress控制器。以下是一个示例: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: sonarqube-ingress spec: rules: - host: sonarqube.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-sonarqube-sonarqube port: number: 9000 ``` 您可以将`sonarqube.example.com`更改为您自己的域名,并将`my-sonarqube-sonarqube`更改为您在步骤3中安装的SonarQube服务的名称。 5. 访问SonarQube:完成上述步骤后,您可以通过浏览器访问SonarQube。如果已配置Ingress,则使用配置的域名进行访问。否则,您可以通过Kubernetes服务的IP和端口访问。 这里提供了一个基本的SonarQube部署案例,您可以根据自己的需求进行进一步的配置和定制化。请注意,这只是一个示例,具体的部署步骤可能因您的环境和需求而有所不同。建议您参考相关文档和官方指南以获取更详细的部署说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值