在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.yaml
和service.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 应用程序在强大的数据库后端上运行得最佳。