Запуск Milvus в Kubernetes с помощью Helm

На этой странице показано, как запустить экземпляр Milvus в Kubernetes с помощью диаграмм Helm для Milvus.

Обзор

Helm использует формат упаковки, называемый «чартами». Чарт представляет собой набор файлов, описывающих связанный набор ресурсов Kubernetes. Milvus предоставляет набор чартов, которые помогут вам развернуть зависимости и компоненты Milvus.

Необходимые условия

  • Установите Helm CLI.

  • Создайте кластер K8s.

  • Установите 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 с рекомендуемыми настройками. Для использования в производственной среде:

Важные примечания:

  • Имена релизов: используйте только буквы, цифры и дефисы (точки не допускаются)

Дополнительную информацию см. в 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 и применив его заново.

  1. Создайте файл values.yaml с нужными настройками.

    Ниже приведено описание того, как включить proxy.http.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    Информацию о соответствующих элементах конфигурации см. в разделе «Конфигурация системы».

  2. Примените файл ` values.yaml `.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Проверьте обновленные настройки.

    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. Чтобы использовать другую очередь сообщений или подключить внешнее объектное хранилище/метаданные, см.:

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

Что дальше

Установив Milvus в Docker, вы можете: