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

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

Обзор

Milvus Operator — это решение, которое помогает развертывать и управлять полным стеком сервисов Milvus в целевых кластерах Kubernetes (K8s). Стек включает все компоненты Milvus и соответствующие зависимости, такие как etcd, Pulsar и MinIO.

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

  • Создайте кластер 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, указав подробности проблемы, и мы предоставим вам необходимую поддержку.

Установка Milvus Operator

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

Выполните следующую команду, чтобы установить Milvus Operator с помощью Helm.

$ helm install milvus-operator \
  -n milvus-operator --create-namespace \
  --wait --wait-for-jobs \
  https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz

По завершении процесса установки вы увидите вывод, подобный приведенному ниже.

NAME: milvus-operator
LAST DEPLOYED: Thu Jul  7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD

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

helm upgrade milvus-operator \
  -n milvus-operator --create-namespace \
  --wait --wait-for-jobs \
  https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz

Выполните следующую команду, чтобы установить Milvus Operator с помощью kubectl.

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

По завершении процесса установки вы увидите вывод, похожий на приведенный ниже.

namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created

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

$ kubectl get pods -n milvus-operator

NAME                               READY   STATUS    RESTARTS   AGE
milvus-operator-5fd77b87dc-msrk4   1/1     Running   0          46s

Разверните Milvus

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

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

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

Приведенная выше команда развертывает кластер Milvus с использованием Woodpecker в качестве очереди сообщений (рекомендуется для версии v3.0-beta) и всех новых архитектурных компонентов, включая Streaming Node.

Основные особенности архитектуры в данном развертывании:

  • Очередь сообщений: используется Woodpecker (упрощает обслуживание инфраструктуры)
  • Узел потоковой обработки (Streaming Node): включён для расширенной обработки данных
  • Координатор Mix: объединенные компоненты координатора для повышения эффективности

Для настройки этих параметров мы рекомендуем воспользоваться инструментом Milvus Sizing Tool, чтобы скорректировать конфигурацию с учётом фактического объёма ваших данных, а затем загрузить соответствующий файл YAML. Подробнее о параметрах конфигурации см. в документе «Контрольный список системных настроек Milvus».

  • Имя релиза должно содержать только буквы, цифры и дефисы. Точки в имени релиза не допускаются.
  • Вы также можете развернуть экземпляр Milvus в автономном режиме, при котором все его компоненты находятся в одном поде. Для этого измените URL файла конфигурации в приведенной выше команде на https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml

2. Проверка состояния кластера Milvus

Выполните следующую команду, чтобы проверить состояние кластера Milvus

$ kubectl get milvus my-release -o yaml

Как только ваш кластер Milvus будет готов, вывод вышеуказанной команды должен быть похож на приведенный ниже. Если поле « status.status » (Состояние кластера) по-прежнему отображает « Unhealthy », ваш кластер Milvus все еще находится в процессе создания.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
  conditions:
  - lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
    reason: StorageReady
    status: "True"
    type: StorageReady
  - lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
    message: Pulsar is ready
    reason: PulsarReady
    status: "True"
    type: PulsarReady
  - lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
    message: Etcd endpoints is healthy
    reason: EtcdReady
    status: "True"
    type: EtcdReady
  - lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
    message: All Milvus components are healthy
    reason: MilvusClusterHealthy
    status: "True"
    type: MilvusReady
  endpoint: my-release-milvus.default:19530
  status: Healthy

Milvus Operator создаёт зависимости Milvus, такие как etcd, Pulsar и MinIO, а затем компоненты Milvus, такие как прокси, координаторы и узлы.

Как только кластер Milvus будет готов, статус всех под в кластере Milvus должен выглядеть примерно так.

$ kubectl get pods

NAME                                             READY   STATUS    RESTARTS   AGE
my-release-etcd-0                                1/1     Running   0          2m36s
my-release-etcd-1                                1/1     Running   0          2m36s
my-release-etcd-2                                1/1     Running   0          2m36s
my-release-milvus-datanode-58955c65b9-j4j7s      1/1     Running   0          92s
my-release-milvus-mixcoord-686f84968f-jcv5d      1/1     Running   0          92s
my-release-milvus-proxy-646f48fc7c-4lctb         1/1     Running   0          92s
my-release-milvus-querynode-0-d89d7677b-x7j7q    1/1     Running   0          91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1     Running   0          92s
my-release-minio-0                               1/1     Running   0          2m36s
my-release-minio-1                               1/1     Running   0          2m36s
my-release-minio-2                               1/1     Running   0          2m35s
my-release-minio-3                               1/1     Running   0          2m35s

3. Перенаправьте локальный порт на Milvus

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

$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

Результат вывода показывает, что экземпляр Milvus работает на порту по умолчанию 19530.

Если вы развернули Milvus в автономном режиме, измените имя пода с my-release-milvus-proxy-xxxxxxxxxx-xxxxx на my-release-milvus-xxxxxxxxxx-xxxxx.

Затем выполните следующую команду, чтобы перенаправить локальный порт на порт, на котором работает Milvus.

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

По желанию вы можете использовать :19530 вместо 27017:19530 в приведённой выше команде, чтобы kubectl автоматически выделил вам локальный порт, и вам не пришлось бы решать проблемы с конфликтами портов.

По умолчанию перенаправление портов с помощью `kubectl` осуществляется только на localhost. Используйте флаг address, если хотите, чтобы Milvus прослушивал выбранные или все IP-адреса. Следующая команда настраивает перенаправление портов на прослушивание всех IP-адресов хост-машины.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530

Теперь вы можете подключиться к Milvus через перенаправленный порт.

(Необязательно) Обновление конфигураций Milvus

Вы можете просмотреть и обновить конфигурации вашего кластера Milvus, выполнив команду ` patch ` следующим образом:

  1. Выполните следующую команду, чтобы просмотреть предполагаемые настройки.

    Ниже предполагается, что вы хотите обновить параметр ` spec.components.disableMetric ` на значение ` false ` мс.

    $ kubectl patch milvus my-release --type='merge'\
      -p '{"spec":{"components":{"disableMetric":false}}}' \
      --dry-run=client -o yaml
    

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

  2. Обновите настройки.

    $ kubectl patch milvus my-release --type='merge'\
      -p '{"spec":{"components":{"disableMetric":false}}}' 
    

Доступ к веб-интерфейсу 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

Выполните следующую команду для удаления кластера Milvus.

$ kubectl delete milvus my-release
  • При удалении кластера Milvus с использованием конфигурации по умолчанию такие зависимости, как etcd, Pulsar и MinIO, не удаляются. Поэтому при следующей установке того же экземпляра кластера Milvus эти зависимости будут использоваться снова.
  • Чтобы удалить зависимости и заявки на постоянные тома (PVC) вместе с кластером Milvus, см. файл конфигурации.

Удаление Milvus Operator

Существует также два способа удаления Milvus Operator.

Удаление с помощью Helm

$ helm -n milvus-operator uninstall milvus-operator

Удаление с помощью kubectl

$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml

Что дальше

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

Office Hours

Часы работы офиса Милвус

Получите помощь в развертывании производства от Zilliz, экспертов по Milvus.

Забронируйте бесплатную сессию 1:1

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?