在Kubernetes上部署生成式人工智能應用程序的分步指南
譯文譯者 | 李睿
審校 | 重樓
在當今快節奏的技術和市場環境中,高效地部署人工智能(AI)/機器學習(ML)應用程序至關重要。Kubernetes是一個強大的開源平臺,已經成為管理和擴展容器化應用程序的領先解決方案,確保它們在各種環境中無縫運行。

在本指南中,將引導開發人員逐步完成在Kubernetes上部署任何AI/ML應用程序的過程。從容器化應用程序到設置Kubernetes集群,再到部署AI/ML應用程序,涵蓋了所有內容。
為什么在Kubernetes上部署生成式人工智能應用程序?
在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 Key添加為環境變量,如下所示:
OPENAI_API_KEY=<Add Your OpenAI API Key>使用以下命令運行應用程序。
npm run dev你可以在Local 3000上看到應用程序。

為應用程序編寫一個Dockerfile將其容器化
Dockerfile
touch Dockerfile在其中添加以下Dockerfile說明。
Dockerfile
# Use the official Node.js image as a parent image
FROM node:14-alpine as build
# Set the working directory in the Docker container
WORKDIR /app
# Copy the package.json and package-lock.json files into the container at /app
COPY package*.json ./
# Install the dependencies
RUN npm install
# Copy the local files into the container at /app
COPY . .
# Build the application
RUN npm run build
# Start from a smaller image to reduce image size
FROM node:14-alpine as run
# Set the working directory in the Docker container
WORKDIR /app
# Copy over dependencies
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/.next ./.next
COPY --from=build /app/public ./public
COPY --from=build /app/package*.json ./
# Expose port 3000 for the app to be accessible externally
EXPOSE 3000
# Command to run the application
CMD ["npm", "start"]構建、標記并將其推送到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 <your dockerhub username>/<image name>可以通過訪問DockerHub來確認圖像是否被推送。

在Kubernetes上部署和公開應用程序
為了部署和公開應用程序,需要兩個yaml文件:deployment.yaml和service.yaml。
其中一個文件包含部署說明,另一個文件包含服務公開說明。
首先,看看deployment.yaml文件。
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: genai-app
spec:
replicas: 2
selector:
matchLabels:
app: genai-app
template:
metadata:
labels:
app: genai-app
spec:
containers:
- name: genai-app
image: pavansa/generativeai-node-app:latest
ports:
- containerPort: 3000以下是service.yaml文件
YAML
apiVersion: v1
kind: Service
metadata:
name: genai-app-service
spec:
selector:
app: genai-app
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: LoadBalancer以下使用Minikube創建一個單節點Kubernetes集群,并將使用它來部署應用程序。
使用以下的命令啟動Minikube。
minikube start這是應該看到的輸出。

注:保持Docker Desktop運行,并在其中啟用Kubernetes。以下圖片僅供參考。

使用下面的命令應用部署文件。
kubectl apply -f deployment.yaml類似地,應用service yaml文件。
kubectl apply -f service.yaml首先,使用下面的命令檢查pod的狀態。
kubectl get pods應該看到所需的輸出,如下圖所示:

以下檢查一下應用程序的部署狀態,看看所需的pod是否按預期運行。
kubectl get deployment
檢查一下應用程序的服務狀態。
kubectl get service
以下看看是否可以公開應用程序并訪問它。
minikube service <add your application service name> --url應該看到下面的輸出,并且能夠訪問應用程序。

可以看到URL鏈接,以訪問應用程序。
現在將應用程序容器化,使用Kubernetes進行部署和公開。
為應用程序集成數據庫
在Kubernetes上成功部署和公開AI/ML應用程序之后,可能需要一個健壯且可擴展的數據庫來處理應用程序數據。SingleStore是一個高性能、可擴展的SQL數據庫,非常適合AI/ML應用程序。在本節將指導完成將SingleStore數據庫集成到kubernetes部署的應用程序中的過程。
需要一個免費的SingleStore云帳戶。
創建一個工作區,然后創建適合應用程序的數據庫和表。
轉到SQL編輯器,如下圖所示:

使用下面的SQL語句創建一個新數據庫。
-- create a database
CREATE DATABASE <database name>;接下來,使用USE命令切換到新數據庫。
USE <database name>;然后,用所需的模式在新數據庫中創建一個表。
-- create a table
CREATE TABLE <table name> (
);你可以在SQL編輯器中粘貼這些SQL命令,突出顯示它們,然后單擊Run按鈕。
在這個教程中,可以找到創建數據庫、表和在表中提供信息的整個過程。
更新Kubernetes部署配置
如果SingleStore數據庫運行在Kubernetes集群之外,可以更新應用程序的Kubernetes部署配置,以允許連接到SingleStore數據庫。
YAML
apiVersion: apps/v1
kind: Deployment
...
spec:
containers:
- name: genai-app
...
env:
- name: DB_HOST
value: "<Your SingleStore DB Host>"
- name: DB_PORT
value: "<Your SingleStore DB Port>"
...重新部署應用程序
應用更新后的Kubernetes部署配置,重新部署與SingleStore集成的應用程序。
Kubectl apply -f deploy .yaml驗證集成
在重新部署之后,需要驗證應用程序是否成功連接到SingleStore數據庫,并按預期執行數據庫操作。
通過執行這些步驟,已經成功地將SingleStore數據庫集成到Kubernetes部署的AI/ML應用程序中,為管理應用程序數據提供了一個健壯且可擴展的解決方案。
結論
現在成功完成了在Kubernetes上部署AI/ML應用程序的綜合步驟!這一指南引導開發人員完成了從容器化應用程序到在Kubernetes上部署和公開應用程序的每個重要階段。
當繼續探索和增強AI/ML部署時,需要考慮集成像SingleStore這樣的高性能數據庫來無縫地管理應用程序數據。SingleStore提供可擴展性、速度和效率,確保AI/ML應用程序在強大的數據庫后端以最佳方式運行。
原文標題:Deploying GenAI Applications on Kubernetes: A Step-By-Step Guide,作者:Pavan Belagatti

































