Запуск 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 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, вы можете:
Проверить Hello Milvus, чтобы узнать, на что способен Milvus.
Изучить основные операции Milvus:
Развертывание кластера Milvu в облаках:
Изучите Milvus WebUI, интуитивно понятный веб-интерфейс для наблюдения и управления Milvus.
Изучите Milvus Backup, инструмент с открытым исходным кодом для резервного копирования данных Milvus.
Изучите Birdwatcher, инструмент с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Изучите Attu, инструмент с открытым исходным кодом GUI для интуитивного управления Milvus.