Запуск Milvus в Kubernetes с помощью Milvus Operator
На этой странице описано, как запустить экземпляр Milvus в Kubernetes с помощью Milvus Operator.
Обзор
Milvus Operator — это решение, которое помогает развертывать и управлять полным стеком сервисов Milvus в целевых кластерах Kubernetes (K8s). Стек включает все компоненты Milvus и соответствующие зависимости, такие как etcd, Pulsar и MinIO.
Предварительные условия
Установите 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 ` следующим образом:
Выполните следующую команду, чтобы просмотреть предполагаемые настройки.
Ниже предполагается, что вы хотите обновить параметр `
spec.components.disableMetric` на значение `false` мс.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlИнформацию о соответствующих элементах конфигурации см. в разделе «Конфигурация системы».
Обновите настройки.
$ 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, вы можете:
Ознакомьтесь с разделом «Hello Milvus», чтобы узнать, на что способен Milvus.
Ознакомиться с основными операциями Milvus:
Разверните кластер Milvus в облаке:
Ознакомьтесь с Milvus WebUI — интуитивно понятным веб-интерфейсом для мониторинга и управления Milvus.
Ознакомьтесь с Milvus Backup — инструментом с открытым исходным кодом для резервного копирования данных Milvus.
Познакомьтесь с Birdwatcher — инструментом с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Познакомьтесь с Attu — инструментом с графическим интерфейсом с открытым исходным кодом для интуитивного управления Milvus.