Запуск 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 Custom Resources. Когда пользовательские ресурсы определены, вы можете использовать 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.0/milvus-operator-1.3.0.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.0/milvus-operator-1.3.0.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 в качестве очереди сообщений (рекомендуется для версии 2.6.15) и всеми новыми архитектурными компонентами, включая Streaming Node.

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

  • Очередь сообщений: Используется Woodpecker (сокращает обслуживание инфраструктуры).
  • Потоковый узел: Включен для улучшенной обработки данных
  • Смешанный координатор: Консолидированные компоненты координатора для повышения эффективности

Чтобы настроить эти параметры, мы рекомендуем вам использовать 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-адреса. Следующая команда заставляет port-forward слушать все 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 ms.

    $ 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 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

Выполните следующую команду, чтобы удалить кластер 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.0/deploy/manifests/deployment.yaml

Что дальше

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

Office Hours

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

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

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

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

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

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

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