Запуск Milvus в Kubernetes с помощью Helm
На этой странице показано, как запустить экземпляр Milvus в Kubernetes с помощью диаграмм Helm для Milvus.
Обзор
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, указав подробности проблемы, и мы предоставим вам необходимую поддержку.
Установка диаграммы Helm для Milvus
Перед установкой диаграмм Helm для Milvus необходимо добавить репозиторий Helm для Milvus.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
Репозиторий диаграмм Helm для Milvus по адресу 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=v3.0.3 \
--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; выделенный сервис Woodpecker (отдельные поды) используется только для распределенных/кластерных развертываний. Подробности см. в разделах «Обзор архитектуры » и «Woodpecker».
Развертывание кластера Milvus:
Для режима службы Woodpecker рекомендуется использовать Milvus версии 3.0.3 или более поздней с Woodpecker версии v0.1.46 или более поздней.
Следующая команда развертывает кластер Milvus с оптимизированными настройками для версии 3.0.3, используя Woodpecker в качестве рекомендуемой очереди сообщений:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.46 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
Что делает эта команда:
- Использует Woodpecker в качестве очереди сообщений (рекомендуется для упрощения обслуживания)
- Запускает Woodpecker в качестве отдельного сервиса (отдельного StatefulSet), а не встроенного в узел потоковой обработки
- Включает новый компонент Streaming Node для повышения производительности
- Отключает устаревший узел индексации (его функции теперь выполняет узел данных)
Изменения в архитектуре Milvus 2.6.x:
- Очередь сообщений: теперь рекомендуется использовать Woodpecker (сокращает объем обслуживания инфраструктуры по сравнению с Pulsar)
- Новый компонент: введен узел потоковой обработки (Streaming Node ), который включен по умолчанию
- Объединенные компоненты: «Index Node » и «Data Node» объединены в единый «Data Node»
Подробную информацию об архитектуре см. в разделе «Обзор архитектуры».
Альтернативные очереди сообщений: чтобы развернуть систему с использованием Pulsar, Kafka или RocksMQ вместо Woodpecker, см. раздел «Дополнительные зависимости».
Следующие шаги: Приведенная выше команда развертывает Milvus с рекомендуемыми настройками. Для использования в производственной среде:
- воспользуйтесь инструментом Milvus Sizing Tool для оптимизации настроек с учётом объёма ваших данных
- Ознакомьтесь с «Контрольным списком системных настроек Milvus» для получения информации о расширенных параметрах конфигурации
Важные примечания:
- Имена релизов: используйте только буквы, цифры и дефисы (точки не допускаются)
Дополнительную информацию см. в Helm-чарте Milvus и документации по Helm.
2. Проверьте состояние кластера Milvus
Убедитесь, что развертывание прошло успешно, проверив статус подов:
kubectl get pods
Дождитесь, пока все поды не покажут статус «Running». При конфигурации v3.0.3 вы должны увидеть поды, похожие на следующие:
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-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 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
Ключевые компоненты, которые необходимо проверить:
- Компоненты Milvus:
mixcoord,datanode,querynode,proxy,streamingnode - Зависимости:
etcd(метаданные),minio(объектное хранилище),woodpecker(очередь сообщений)
С streaming.woodpecker.embedded=false Woodpecker работает как выделенный StatefulSet (my-release-milvus-woodpecker, по умолчанию 4 реплики — кворум из 3 узлов плюс один резервный для отказоустойчивости; не устанавливайте значение woodpecker.replicaCount ниже 3), за которым стоит сервис без интерфейса пользователя, использующий MinIO в качестве бэкэнда хранилища — таким образом, у кластера есть отдельный набор под woodpecker, отличающийся от потокового узла.
Вы также можете получить доступ к веб-интерфейсу Milvus по адресу http://127.0.0.1:9091/webui/ после настройки перенаправления портов (см. следующий шаг). Подробности см. в разделе «Веб-интерфейс Milvus».
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 с помощью любого SDK Milvus по адресу 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
Milvus поставляется со встроенным инструментом графического интерфейса пользователя (GUI) под названием Milvus WebUI, доступ к которому можно получить через браузер. Milvus WebUI улучшает наблюдаемость системы благодаря простому и интуитивно понятному интерфейсу. С помощью Milvus WebUI можно просматривать статистику и метрики компонентов и зависимостей Milvus, проверять сведения о базе данных и коллекциях, а также просматривать подробные конфигурации Milvus. Подробнее о Milvus WebUI см. в разделе Milvus WebUI
Чтобы включить доступ к Milvus WebUI, необходимо настроить перенаправление портов прокси-пода на локальный порт.
$ 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 --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true 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
Дополнительные зависимости
В данном развертывании в качестве очереди сообщений используется Woodpecker, для метаданных — etcd, а для объектного хранилища — MinIO. Чтобы использовать другую очередь сообщений или подключить внешнее объектное хранилище/метаданные, см.:
- Очередь сообщений: Woodpecker (по умолчанию) · Pulsar · Kafka · RocksMQ
- Объектное хранилище: MinIO (по умолчанию) · AWS S3 · Azure Blob · GCP Cloud Storage · Aliyun OSS · Tencent COS · Huawei OBS · S3-совместимое
- Метаданные: etcd
Storage V3 по умолчанию отключен. Включите его перед использованием функций, которые от него зависят. Требования и соображения по совместимости см. в разделе Storage V3.
Что дальше
Установив Milvus в Docker, вы можете:
Ознакомьтесь с разделом «Hello Milvus», чтобы узнать, на что способен Milvus.
Ознакомиться с основными операциями Milvus:
Разверните кластер Milvus в облаке:
Ознакомьтесь с Milvus WebUI — интуитивно понятным веб-интерфейсом для мониторинга и управления Milvus.
Ознакомьтесь с Milvus Backup — инструментом с открытым исходным кодом для резервного копирования данных Milvus.
Ознакомьтесь с Birdwatcher — инструментом с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Познакомьтесь с Attu — инструментом с графическим интерфейсом с открытым исходным кодом для интуитивного управления Milvus.