🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Начать
  • Home
  • Docs
  • Начать

  • Установить Милвус

  • Запустить Милвус Дистрикт

  • Оператор Милвус

Запуск 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

Выполните следующую команду для установки 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.2.0/milvus-operator-1.2.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

Установка с помощью kubectl

Выполните следующую команду для установки 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_default.yaml

Приведенная выше команда развертывает кластер Milvus с его компонентами и зависимостями в отдельных подкадах с использованием конфигураций по умолчанию. Чтобы настроить эти параметры, мы рекомендуем использовать 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: "2021-11-02T05:59:41Z"
    reason: StorageReady
    status: "True"
    type: StorageReady
  - lastTransitionTime: "2021-11-02T06:06:23Z"
    message: Pulsar is ready
    reason: PulsarReady
    status: "True"
    type: PulsarReady
  - lastTransitionTime: "2021-11-02T05:59:41Z"
    message: Etcd endpoints is healthy
    reason: EtcdReady
    status: "True"
    type: EtcdReady
  - lastTransitionTime: "2021-11-02T06:12:36Z"
    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          14m
my-release-etcd-1                               1/1     Running     0          14m
my-release-etcd-2                               1/1     Running     0          14m
my-release-milvus-datanode-5c686bd65-wxtmf      1/1     Running     0          6m
my-release-milvus-indexnode-5b9787b54-xclbx     1/1     Running     0          6m
my-release-milvus-proxy-84f67cdb7f-pg6wf        1/1     Running     0          6m
my-release-milvus-querynode-5bcb59f6-nhqqw      1/1     Running     0          6m
my-release-milvus-mixcoord-fdcccfc84-9964g      1/1     Running     0          6m
my-release-minio-0                              1/1     Running     0          14m
my-release-minio-1                              1/1     Running     0          14m
my-release-minio-2                              1/1     Running     0          14m
my-release-minio-3                              1/1     Running     0          14m
my-release-pulsar-bookie-0                      1/1     Running     0          14m
my-release-pulsar-bookie-1                      1/1     Running     0          14m
my-release-pulsar-bookie-init-h6tfz             0/1     Completed   0          14m
my-release-pulsar-broker-0                      1/1     Running     0          14m
my-release-pulsar-broker-1                      1/1     Running     0          14m
my-release-pulsar-proxy-0                       1/1     Running     0          14m
my-release-pulsar-proxy-1                       1/1     Running     0          14m
my-release-pulsar-pulsar-init-d2t56             0/1     Completed   0          14m
my-release-pulsar-recovery-0                    1/1     Running     0          14m
my-release-pulsar-toolset-0                     1/1     Running     0          14m
my-release-pulsar-zookeeper-0                   1/1     Running     0          14m
my-release-pulsar-zookeeper-1                   1/1     Running     0          13m
my-release-pulsar-zookeeper-2                   1/1     Running     0          13m

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 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.2.0/deploy/manifests/deployment.yaml

Что дальше

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

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

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

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

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