Запуск Milvus в Kubernetes с помощью Helm
На этой странице показано, как запустить экземпляр Milvus в Kubernetes с помощью диаграмм Milvus Helm.
Обзор
Helm использует формат упаковки, называемый диаграммами. Диаграмма - это набор файлов, которые описывают связанный набор ресурсов Kubernetes. Milvus предоставляет набор диаграмм, чтобы помочь вам развернуть зависимости и компоненты Milvus.
Необходимые условия
Установите StorageClass. Проверить установленный StorageClass можно следующим образом.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseПеред установкой проверьте требования к аппаратному и программному обеспечению.
Перед установкой Milvus рекомендуется использовать Milvus Sizing Tool для оценки требований к оборудованию в зависимости от объема данных. Это поможет обеспечить оптимальную производительность и распределение ресурсов при установке Milvus.
Если у вас возникнут проблемы с установкой образа, свяжитесь с нами по адресу community@zilliz.com и подробно расскажите о проблеме, и мы окажем вам необходимую поддержку.
Установка Milvus Helm Chart
Перед установкой Milvus Helm Charts необходимо добавить репозиторий Milvus Helm.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
Репозиторий Milvus Helm Charts по адресу https://github.com/milvus-io/milvus-helm был заархивирован. Теперь мы используем новый репозиторий по адресу https://github.com/zilliztech/milvus-helm. Архивное хранилище по-прежнему доступно для графиков до версии 4.0.31, но для более поздних версий используйте новое хранилище.
Затем извлеките графики Milvus из репозитория следующим образом:
$ helm repo update
Вы всегда можете выполнить эту команду, чтобы получить последние диаграммы Milvus Helm.
Онлайн-установка
1. Разверните кластер Milvus
После установки диаграммы Helm вы можете запустить Milvus на Kubernetes. В этом разделе мы расскажем вам, как развернуть кластер Milvus.
Вам нужно автономное развертывание?
Если вы предпочитаете развернуть Milvus в автономном режиме (на одном узле) для разработки или тестирования, используйте эту команду:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
Примечание: Автономный режим использует Woodpecker в качестве очереди сообщений по умолчанию и включает компонент Streaming Node. Подробнее см. в разделах Обзор архитектуры и Использование Woodpecker.
Развертывание кластера Milvus:
Следующая команда развертывает кластер Milvus с оптимизированными настройками для версии 2.6.15, используя Woodpecker в качестве рекомендуемой очереди сообщений:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
Что делает эта команда:
- Использует Woodpecker в качестве очереди сообщений (рекомендуется для снижения затрат на обслуживание).
- Включает новый компонент Streaming Node для повышения производительности
- Отключает устаревший компонент Index Node (функциональность теперь выполняется компонентом Data Node)
- Отключает Pulsar, чтобы использовать вместо него Woodpecker
Изменения архитектуры в Milvus 2.6.x:
- Очередь сообщений: Теперь рекомендуется использовать Woodpecker (сокращает обслуживание инфраструктуры по сравнению с Pulsar)
- Новый компонент: Streaming Node представлен и включен по умолчанию
- Объединенные компоненты: Index Node и Data Node объединены в один Data Node.
Полную информацию об архитектуре см. в разделе " Обзор архитектуры".
Альтернативные варианты очереди сообщений:
Если вы предпочитаете использовать Pulsar (традиционный вариант) вместо Woodpecker:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set streaming.enabled=true \
--set indexNode.enabled=false
Следующие шаги:Приведенная выше команда развертывает Milvus с рекомендуемыми конфигурациями. Для производственного использования:
- Используйте инструмент Milvus Sizing Tool для оптимизации настроек в зависимости от объема данных.
- Просмотрите контрольный список конфигураций системы Milvus для получения информации о дополнительных параметрах конфигурации.
Важные замечания:
- Именование релизов: Используйте только буквы, цифры и тире (точки запрещены).
- Kubernetes v1.25+: Если у вас возникли проблемы с PodDisruptionBudget, воспользуйтесь этим обходным решением:
helm install my-release zilliztech/milvus \ --set pulsar.bookkeeper.pdb.usePolicy=false \ --set pulsar.broker.pdb.usePolicy=false \ --set pulsar.proxy.pdb.usePolicy=false \ --set pulsar.zookeeper.pdb.usePolicy=false
Дополнительные сведения см. в документации Milvus Helm Chart и Helm.
2. Проверьте состояние кластера Milvus
Убедитесь в том, что развертывание прошло успешно, проверив состояние стручков:
kubectl get pods
Дождитесь, пока все поды покажут статус "Running". В конфигурации v2.6.15 вы должны увидеть поды, похожие на эти:
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-milvus-streaming-node-xxxxxxxxx 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s
Ключевые компоненты для проверки:
- Компоненты Milvus:
mixcoord,datanode,querynode,proxy,streaming-node - Зависимости:
etcd(метаданные),minio(хранилище объектов),pulsar(очередь сообщений).
Вы также можете получить доступ к Milvus WebUI по адресу http://127.0.0.1:9091/webui/ после настройки переадресации портов (см. следующий шаг). Подробности см. в разделе Milvus WebUI.
3. Подключение к Milvus
Чтобы подключиться к кластеру Milvus извне Kubernetes, необходимо настроить переадресацию портов.
Настройте переадресацию портов:
kubectl port-forward service/my-release-milvus 27017:19530
Эта команда перенаправляет ваш локальный порт 27017 на порт Milvus 19530. Вы должны увидеть:
Forwarding from 127.0.0.1:27017 -> 19530
Детали подключения:
- Локальное соединение:
localhost:27017 - Порт Milvus по умолчанию:
19530
Опции для перенаправления порта:
- Автоматическое назначение локального порта: Используйте
:19530вместо27017:19530, чтобы позволить kubectl выбрать доступный порт. - Слушать на всех интерфейсах: Добавьте
--address 0.0.0.0, чтобы разрешить соединения с других машин:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - Автономное развертывание: При использовании автономного режима имя сервиса остается прежним
Держите этот терминал открытым во время работы с Milvus. Теперь вы можете подключиться к Milvus с помощью любого Milvus SDK по адресу localhost:27017.
(Необязательно) Обновление конфигураций Milvus
Вы можете обновить конфигурацию кластера Milvus, отредактировав файл values.yaml и применив его снова.
Создайте файл
values.yamlс нужными конфигурациями.Ниже предполагается, что вы хотите включить
proxy.http.extraConfigFiles: user.yaml: |+ proxy: http: enabled: trueСоответствующие элементы конфигурации см. в разделе Конфигурация системы.
Примените файл
values.yaml.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
Проверьте обновленные конфигурации.
helm get values my-releaseВ выводе должны отображаться обновленные конфигурации.
Доступ к Milvus WebUI
Milvus поставляется со встроенным GUI-инструментом Milvus WebUI, доступ к которому можно получить через браузер. Milvus Web UI улучшает наблюдаемость системы благодаря простому и интуитивно понятному интерфейсу. С помощью Milvus Web UI можно просматривать статистику и метрики компонентов и зависимостей Milvus, проверять детали баз данных и коллекций, а также выводить список подробных конфигураций Milvus. Подробные сведения о Milvus Web UI см. в разделе Milvus WebUI.
Чтобы включить доступ к Milvus Web UI, вам нужно перенаправить порт прокси-под на локальный порт.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Теперь вы можете получить доступ к Milvus Web UI по адресу http://localhost:27018.
Автономная установка
Если вы находитесь в среде с ограниченными сетевыми возможностями, выполните процедуру, описанную в этом разделе, чтобы запустить кластер Milvus.
1. Получите манифест Milvus
Выполните следующую команду, чтобы получить манифест Milvus.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
Приведенная выше команда создает шаблоны графиков для кластера Milvus и сохраняет результаты в файле манифеста с именем milvus_manifest.yaml. Используя этот манифест, вы можете установить кластер Milvus с его компонентами и зависимостями в отдельных капсулах.
- Для установки экземпляра Milvus в автономном режиме, когда все компоненты Milvus содержатся в одном подкате, следует запустить
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml, чтобы вывести шаблоны графиков для экземпляра Milvus в автономном режиме. - Чтобы изменить конфигурацию Milvus, загрузите
value.yamlшаблон, поместите в него нужные настройки и используйтеhelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlдля рендеринга манифеста в соответствии с ними.
2. Скачайте скрипт извлечения изображений
Скрипт извлечения изображений разработан на языке Python. Вы должны загрузить скрипт вместе с его зависимостями в файле requirement.txt.
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py
3. Извлечение и сохранение изображений
Выполните следующую команду, чтобы извлечь и сохранить нужные изображения.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
Изображения будут извлечены в подпапку с именем images в текущем каталоге.
4. Загрузка изображений
Теперь вы можете загрузить образы на хосты в среде с сетевыми ограничениями следующим образом:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Развертывание Milvus
$ kubectl apply -f milvus_manifest.yaml
До этого момента вы можете выполнить шаги 2 и 3 онлайн-установки, чтобы проверить состояние кластера и перенаправить локальный порт на Milvus.
Обновление запущенного кластера Milvus
Выполните следующую команду, чтобы обновить работающий кластер Milvus до последней версии:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Деинсталляция Milvus
Выполните следующую команду для удаления Milvus.
$ helm uninstall my-release
Что дальше
Установив Milvus в Docker, вы можете:
Проверить Hello Milvus, чтобы узнать, на что способен Milvus.
Изучить основные операции Milvus:
Развертывание кластера Milvus в облаках:
Изучите Milvus WebUI, интуитивно понятный веб-интерфейс для наблюдения и управления Milvus.
Изучите Milvus Backup, инструмент с открытым исходным кодом для резервного копирования данных Milvus.
Изучите Birdwatcher, инструмент с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Изучите Attu, инструмент с открытым исходным кодом GUI для интуитивного управления Milvus.