在Kubernetes上部署GenAI应用程序:一步一步指南

Kubernetes上部署GenAI应用程序:详细指南

在当今快节奏的技术环境中,高效、有效地部署AI/ML应用至关重要。一个强大的开源平台 Kubernetes 已经成为管理和扩展容器化应用的主要解决方案,在不同环境下保证其无缝运行。

在这个全面的指南中,我们将逐步为您介绍在Kubernetes上部署任何AI/ML应用的过程。从将应用程序放入容器中,设置Kubernetes集群,到部署AI/ML应用程序,本指南将全面介绍。

让我们一起开始这次学习之旅吧!

为什么要在Kubernetes上部署GenAI应用?

在Kubernetes上部署AI/ML应用提供了一个强大的解决方案来管理复杂的AI/ML工作负载。其中主要的好处之一是可扩展性。Kubernetes可以自动扩展基础设施,高效地适应不同的工作负载,并根据需求有效地分配资源。这种自动扩展的特性对于处理AI/ML任务中涉及的大型计算非常重要。

此外,Kubernetes支持多云和混合云环境,提供灵活性,避免了供应商锁定。它为开发、测试和部署提供了一个一致和统一的环境,增强了数据科学家和工程师之间的协作。

Kubernetes还确保高可用性和容错性,自动替换或重新调度失败的容器,确保AI/ML应用的可靠性和健壮性。此外,它简化了许多操作方面的工作,包括更新和回滚,使团队能够更多地专注于构建AI/ML模型,而不是管理基础设施。

先决条件

  • 为了将应用程序容器化,需要安装Docker Desktop
  • 需要安装Minikube。我们将使用Minikube创建单节点集群。
  • 下载并安装Node.js,因为示例应用程序是一个Node.js应用程序。
  • 注册免费的SingleStore数据库云账号,将我们的应用程序与数据库集成。

教程

希望您有GitHub账号。

首先,我们将克隆已经可用的openai-quickstart-node存储库到我们的本地。

git clone https://github.com/pavanbelagatti/openai-quickstart-node.git

让我们进入项目目录。

cd openai-quickstart-node

安装项目的要求和依赖项。

npm install

创建一个.env文件,并添加您的OpenAI API密钥。

touch .env

在您的.env文件中,将OpenAI密钥添加为环境变量,如下所示。

OPENAI_API_KEY=<添加您的OpenAI API密钥>

使用以下命令运行应用程序。

npm run dev

您应该在本地的3000端口上看到应用程序。

让我们编写一个Dockerfile将我们的应用程序容器化

在其中添加以下Dockerfile指令。

让我们构建、标记并将其推送到我们的DockerHub上。

docker build -t <image name> .

注意:我将我的镜像命名为generativeai-node-app

让我们启动我们的容器。

镜像构建完成!现在是时候使用以下命令启动Docker容器并分配端口:

docker run -p 3002:3002 generativeai-node-app

让我们再次使用我们的DockerHub凭据进行构建。

docker build -t <your dockerhub username>/<image name> .

让我们将图像推送到DockerHub。

docker push <您的DockerHub用户名>/<图像名称>

您可以去DockerHub确认图像是否推送成功。

在Kubernetes上部署和暴露我们的应用

要部署和暴露应用程序,我们需要两个yaml文件。deployment.yamlservice.yaml文件。

一个文件包含部署指令,另一个文件用于服务暴露。

让我们先看看我们的deployment.yaml文件。

下面是我们的service.yaml文件。

我们使用Minikube创建一个单节点Kubernetes集群,并将其用于部署我们的应用程序。

使用以下命令启动Minikube。

minikube start

您应该看到以下输出。

注意:确保您的Docker桌面运行并在其中启用了Kubernetes。下面的图片仅供参考。

使用以下命令应用部署文件。

kubectl apply -f deployment.yaml

同样,应用我们的服务yaml文件。

kubectl apply -f service.yaml

使用以下命令首先检查Pod的状态。

kubectl get pods

您应该看到如下所示的输出。

检查我们的应用程序的部署状态,看看预期的Pod是否按预期运行。

kubectl get deployment

检查我们的应用程序的服务状态。

kubectl get service

让我们尝试暴露应用程序并访问它。

minikube service <添加您的应用程序服务名称> --url

您应该看到下面的输出,并能够访问您的应用程序。

您可以看到URL链接,以便访问我们的应用程序。

恭喜!我们使用Kubernetes将应用程序容器化、部署和暴露出来。

为我们的应用程序集成数据库

在成功将AI/ML应用程序部署和暴露到Kubernetes后,您可能需要一个强大而可扩展的数据库来处理应用程序数据。SingleStore是一个高性能、可扩展的SQL数据库,非常适合用于AI/ML应用程序。在本节中,我们将指导您将SingleStore数据库集成到您部署在Kubernetes上的应用程序中。

您需要一个免费的SingleStore云帐户。

  • 创建一个工作区,然后创建一个适合应用程序的数据库和表。

进入SQL编辑器,如下图所示

使用以下SQL语句创建一个新数据库

-- 创建一个数据库CREATE DATABASE <数据库名称>;

接下来,使用USE命令切换到新数据库。

USE <数据库名称>;

然后,在新数据库中创建具有所需模式的表。

-- 创建一个表CREATE TABLE <表名称> ();

您可以将这些SQL命令粘贴到SQL编辑器中,选中它们,然后点击运行按钮

您可以在此教程中找到创建数据库、表和填充表中信息的整个过程。

更新Kubernetes部署配置

如果您的SingleStore数据库运行在Kubernetes集群之外,请更新应用程序的Kubernetes部署配置,以允许连接到SingleStore数据库。

重新部署您的应用程序

将更新的Kubernetes部署配置应用于重新部署已集成SingleStore的应用程序。

kubectl apply -f deployment.yaml

验证集成

重新部署后,请验证您的应用成功连接到 SingleStore 数据库,并按预期执行数据库操作。

按照这些步骤,您已成功将 SingleStore 数据库集成到部署在 Kubernetes 上的 AI/ML 应用程序中,为您的应用程序数据提供了强大且可扩展的解决方案。

结论

恭喜您成功地完成在 Kubernetes 上部署 AI/ML 应用程序的全面步骤!本指南指导您完成了每个关键阶段,从将应用程序容器化到在 Kubernetes 上部署和暴露它。

在继续探索和增强 AI/ML 部署时,请考虑将 SingleStore 这样的高性能数据库集成到无缝管理您的应用程序数据中。SingleStore 提供可扩展性、速度和效率,确保您的 AI/ML 应用程序在强大的数据库后端上运行得最佳。