Развертывание Milvus на Kubernetes: Пошаговое руководство для пользователей Kubernetes
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 - счастливого развертывания! 🚀
Дополнительные ресурсы
- Предварительные условия
- Шаг 1: Установка Minikube (для локального тестирования)
- Шаг 2: Настройка класса хранилища
- Шаг 3: Установка Milvus с помощью Milvus Operator
- Шаг 4: Доступ к кластеру Milvus
- Шаг 5: Подключение к Milvus с помощью Python SDK
- Заключение
- Дополнительные ресурсы
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word