🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Развертывание Milvus на Kubernetes: Пошаговое руководство для пользователей Kubernetes

Развертывание Milvus на Kubernetes: Пошаговое руководство для пользователей Kubernetes

  • Engineering
September 26, 2024
Gael Gu

Milvus - это векторная база данных с открытым исходным кодом, предназначенная для хранения, индексации и поиска огромных объемов неструктурированных данных с помощью векторных представлений, что делает ее идеальной для приложений, основанных на искусственном интеллекте, таких как поиск по сходству, семантический поиск, поиск с расширенной генерацией(RAG), рекомендательные системы и другие задачи машинного обучения.

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

Предварительные условия

Прежде чем мы начнем, убедитесь, что у вас есть следующие необходимые условия:

  • Запущенный кластер Kubernetes. Если вы проводите тестирование локально, отлично подойдет minikube.

  • kubectl Установлен и настроен для взаимодействия с кластером Kubernetes.

  • Знакомство с основными концепциями Kubernetes, такими как поды, сервисы и развертывания.

Шаг 1: Установка Minikube (для локального тестирования)

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

1. Установите Minikube

Перейдите на страницу релизов minikube и загрузите подходящую версию для вашей операционной системы. Для macOS/Linux вы можете использовать следующую команду:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

2. Запустите Minikube

$ minikube start

3. Взаимодействие с кластером

Теперь вы можете взаимодействовать с вашими кластерами с помощью kubectl внутри minikube. Если вы не установили kubectl, minikube загрузит соответствующую версию по умолчанию.

$ minikube kubectl cluster-info

В качестве альтернативы вы можете создать символическую ссылку на двоичный файл minikube с именем kubectl для более удобного использования.

$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info

Шаг 2: Настройка класса хранилища

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

1. Проверка установленных классов хранения

Чтобы увидеть доступные StorageClasses в кластере Kubernetes, выполните следующую команду:

$ kubectl get sc

В результате будет отображен список классов хранения, установленных в вашем кластере. Если класс хранения по умолчанию уже настроен, он будет отмечен символом (default).

2. Настройте класс хранения по умолчанию (если необходимо).

Если класс хранения по умолчанию не задан, его можно создать, определив в файле YAML. Используйте следующий пример для создания класса хранения по умолчанию:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: default-storageclass
provisioner: k8s.io/minikube-hostpath

Эта конфигурация YAML определяет StorageClass под названием default-storageclass, который использует провизор minikube-hostpath, обычно используемый в локальных средах разработки.

3. Примените StorageClass

После создания файла default-storageclass.yaml примените его к кластеру с помощью следующей команды:

$ kubectl apply -f default-storageclass.yaml

Это установит StorageClass по умолчанию для вашего кластера, что обеспечит правильное управление вашими потребностями в хранении данных в будущем.

Шаг 3: Установка Milvus с помощью Milvus Operator

Milvus Operator упрощает развертывание Milvus на Kubernetes, управление развертыванием, масштабированием и обновлениями. Перед установкой Milvus Operator необходимо установить cert-manager, который предоставляет сертификаты для сервера webhook, используемого Milvus Operator.

1. Установите cert-manager

Milvus Operator требует cert-manager для управления сертификатами для безопасной связи. Убедитесь, что вы установили cert-manager версии 1.1.3 или более поздней. Чтобы установить его, выполните следующую команду:

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

После установки убедитесь, что капсулы cert-manager запущены, выполнив:

$ kubectl get pods -n cert-manager

2. Установите оператор Milvus

После того как cert-manager запущен, можно установить Milvus Operator. Выполните следующую команду, чтобы развернуть его с помощью kubectl:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

Проверить, запущен ли модуль Milvus Operator, можно с помощью следующей команды:

$ kubectl get pods -n milvus-operator

3. Развертывание кластера Milvus

После того как капсула Milvus Operator запущена, вы можете развернуть кластер Milvus с оператором. Следующая команда развертывает кластер Milvus с его компонентами и зависимостями в отдельных подкадах с использованием конфигураций по умолчанию:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Чтобы изменить настройки Milvus, вам нужно заменить YAML-файл на свой собственный конфигурационный YAML-файл. Помимо ручного редактирования или создания файла, вы можете использовать Milvus Sizing Tool для настройки конфигураций, а затем загрузить соответствующий YAML-файл.

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

В качестве альтернативы можно использовать инструмент Milvus Sizing Tool для более рационального подхода. Этот инструмент позволяет настроить различные параметры, такие как распределение ресурсов и параметры хранения, а затем загрузить соответствующий YAML-файл с нужными конфигурациями. Это гарантирует, что развертывание Milvus будет оптимизировано для конкретного случая использования.

Рисунок: Инструмент определения размеров Milvus

Завершение развертывания может занять некоторое время. Вы можете проверить состояние вашего кластера Milvus с помощью команды:

$ kubectl get milvus my-release

Когда ваш кластер Milvus будет готов, все поды в кластере Milvus должны быть запущены или завершены:

$ kubectl get pods

Шаг 4: Доступ к кластеру Milvus

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

1. Получение порта службы

Сначала определите порт службы с помощью следующей команды. Замените <YOUR_MILVUS_PROXY_POD> на имя вашей прокси-подсистемы Milvus, которое обычно начинается с my-release-milvus-proxy-:

$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

Эта команда вернет номер порта, который использует ваша служба Milvus.

2. Переадресация порта

Чтобы получить локальный доступ к кластеру Milvus, перенаправьте локальный порт на порт службы с помощью следующей команды. Замените <YOUR_LOCAL_PORT> на локальный порт, который вы хотите использовать, а <YOUR_SERVICE_PORT> - на порт службы, полученный на предыдущем шаге:

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>

Эта команда позволяет переадресовать порт для прослушивания всех IP-адресов хост-машины. Если вам нужно, чтобы служба прослушивала только localhost, вы можете опустить опцию --address 0.0.0.0.

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

Шаг 5: Подключение к Milvus с помощью Python SDK

Теперь, когда ваш кластер Milvus запущен, вы можете взаимодействовать с ним, используя любой Milvus SDK. В этом примере мы будем использовать PyMilvus, Milvus's Python SDK, для подключения к кластеру и выполнения основных операций.

1. Установите PyMilvus

Чтобы взаимодействовать с Milvus через Python, необходимо установить пакет pymilvus:

$ pip install pymilvus

2. Подключитесь к Milvus

Ниже приведен пример сценария Python, который подключается к кластеру Milvus и демонстрирует выполнение основных операций, таких как создание коллекции.

from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
   client.drop_collection(collection_name)
client.create_collection(
   collection_name=collection_name,
   dimension=768,  # The vectors we will use in this demo has 768 dimensions
)

Пояснение:

  • Подключение к Milvus: сценарий подключается к серверу Milvus, запущенному на localhost, используя локальный порт, который вы установили на шаге 4.

  • Создать коллекцию: Он проверяет, существует ли уже коллекция с именем example_collection, удаляет ее, если да, а затем создает новую коллекцию с векторами размерностью 768.

Этот сценарий устанавливает соединение с кластером Milvus и создает коллекцию, служащую отправной точкой для более сложных операций, таких как вставка векторов и выполнение поиска по сходству.

Заключение

Развертывание Milvus в распределенной системе на Kubernetes открывает мощные возможности для управления крупными векторными данными, обеспечивая плавное масштабирование и высокопроизводительные приложения, основанные на искусственном интеллекте. Следуя этому руководству, вы узнали, как настроить Milvus с помощью Milvus Operator, что делает этот процесс простым и эффективным.

Продолжая изучать Milvus, рассмотрите возможность масштабирования кластера для удовлетворения растущих потребностей или развертывания его на облачных платформах, таких как Amazon EKS, Google Cloud или Microsoft Azure. Для расширенного управления и мониторинга такие инструменты, как Milvus Backup, Birdwatcher и Attu, предлагают ценную поддержку для поддержания работоспособности и производительности ваших развертываний.

Теперь вы готовы использовать весь потенциал Milvus на Kubernetes - счастливого развертывания! 🚀

Дополнительные ресурсы

Like the article? Spread the word

Продолжить чтение