Развертывание приложений GenAI в Kubernetes: пошаговое руководство

GenAI — это платформа для простого создания приложений искусственного интеллекта. В этом руководстве вы узнаете, как развертывать приложения GenAI на Kubernetes, популярной платформе для оркестрации контейнеров.

Зачем развертывать приложения GenAI в Kubernetes?

Развертывание приложений AI/ML в Kubernetes обеспечивает надежное решение для управления сложными рабочими нагрузками AI/ML. Одним из основных преимуществ является масштабируемость. Kubernetes может автоматически масштабировать инфраструктуру, эффективно справляясь с различными рабочими нагрузками и обеспечивая эффективное распределение ресурсов в зависимости от спроса. Эта функция автоматического масштабирования имеет решающее значение для обработки больших вычислений, связанных с задачами AI/ML.

Зачем развертывать приложения GenAI в Kubernetes?

Кроме того, 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 и добавьте свой ключ API OpenAI.

touch .env

 

В файле .env добавьте ключ OpenAI в качестве переменной среды, как показано ниже.

OPENAI_API_KEY=<Add Your OpenAI API Key>

 

Запустите приложение, используя команду ниже.

npm run dev

 

Вы должны увидеть приложение на Local 3000.

приложение на локальном

Давайте напишем Dockerfile для нашего приложения, чтобы поместить его в контейнер.

Докерфайл

touch 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 файл.

ЯМЛ

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 файл.

ЯМЛ

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

 

Аналогичным образом примените наш yaml-файл сервиса.

kubectl apply -f service.yaml

 

Давайте сначала проверим состояние наших модулей, используя команду ниже.

kubectl get pods

 

Вы должны увидеть желаемый результат, как показано ниже.

Выход

Давайте проверим статус развертывания нашего приложения, чтобы убедиться, что нужные модули работают должным образом.

kubectl get deployment

 

статус развертывания

Давайте проверим статус службы нашего приложения.

kubectl get service

 

услуга

Давайте посмотрим, сможем ли мы предоставить доступ к нашему приложению и получить к нему доступ.

minikube service <add your application service name> --url

 

Вы должны увидеть результат ниже и сможете получить доступ к своему приложению.

приложение доступа

Вы можете увидеть URL-ссылку, по которой можно перейти и получить доступ к нашему приложению.

Поздравляем! Мы поместили наше приложение в контейнер, развернули и представили его с помощью Kubernetes.

Интеграция базы данных для нашего приложения

После успешного развертывания и предоставления доступа к вашему приложению AI/ML в Kubernetes вам может понадобиться надежная и масштабируемая база данных для обработки данных вашего приложения. SingleStore — это высокопроизводительная масштабируемая база данных SQL, которая хорошо подходит для приложений искусственного интеллекта и машинного обучения. В этом разделе мы проведем вас через процесс интеграции базы данных SingleStore в ваше приложение, развернутое в Kubernetes.

Вам понадобится бесплатная облачная учетная запись SingleStore.

  • Создайте рабочую область, а затем создайте базу данных и таблицу, подходящие для вашего приложения.

Перейдите в редактор SQL, как показано на изображении ниже.

SQL-редактор

Создайте новую базу данных, используя следующий оператор SQL

-- create a database
CREATE DATABASE <database name>;

 

Затем переключитесь на новую базу данных с помощью команды USE.

USE <database name>;

 

Затем создайте таблицу в новой базе данных с нужной схемой.

-- create a table
CREATE TABLE <table name> (
);

 

Вы можете вставить эти команды SQL в редактор SQL, выделить их и нажать кнопку «Выполнить».

Вы можете найти весь процесс создания базы данных, таблиц и подачи информации в таблицы в этом руководстве.

Обновление конфигурации развертывания Kubernetes

Если ваша база данных SingleStore работает за пределами кластера Kubernetes, обновите конфигурацию развертывания Kubernetes вашего приложения, чтобы разрешить подключения к базе данных SingleStore.

ЯМЛ

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 deployment.yaml

 

Проверьте интеграцию

После повторного развертывания убедитесь, что ваше приложение успешно подключено к базе данных SingleStore и выполняет операции с базой данных должным образом.

Выполнив эти шаги, вы успешно интегрировали базу данных SingleStore в развернутое в Kubernetes приложение AI/ML, предоставив надежное и масштабируемое решение для управления данными вашего приложения.

#kubernetes 

Развертывание приложений GenAI в Kubernetes: пошаговое руководство
1.05 GEEK