Развертывание кластера Milvus на GKE
Milvus - это облачная векторная база данных, которая может быть развернута в различных облачных средах. В этом руководстве вы узнаете все подробности о настройке Milvus на Google Cloud Platform (GCP).
Развертывание кластера Milvus на GCP
Прежде чем начать
Чтобы развернуть Milvus на GCP, убедитесь, что
В вашем аккаунте GCP уже существует проект.
Чтобы создать проект, обратитесь к разделу Создание и управление проектами. Имя проекта, используемого в этом руководстве, - milvus-testing-nonprod.
Вы локально установили gcloud CLI, kubectl и Helm или решили использовать браузерную Cloud Shell.
Вы инициализировали gcloud CLI с помощью учетных данных учетной записи GCP.
Настройка сети
Чтобы обеспечить безопасность Milvus, необходимо создать логически изолированную виртуальную сеть в проекте GCP. Следующая команда создает VPC.
gcloud compute networks create milvus-network \
--project=milvus-testing-nonprod \
--subnet-mode=auto \
--mtu=1460 \
--bgp-routing-mode=regional
Чтобы облегчить работу, вам также нужно настроить несколько правил брандмауэра, чтобы разрешить внешний трафик по ICMP, RDP и SSH, а также трафик внутри VPC.
gcloud compute firewall-rules create milvus-network-allow-icmp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows ICMP connections from any source to any instance on the network." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=icmp
gcloud compute firewall-rules create milvus-network-allow-internal \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows connections from any source in the network IP range to any instance on the network using all protocols." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=10.128.0.0/9 \
--action=ALLOW --rules=all
gcloud compute firewall-rules create milvus-network-allow-rdp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows RDP connections from any source to any instance on the network using port 3389." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:3389
gcloud compute firewall-rules create milvus-network-allow-ssh \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows TCP connections from any source to any instance on the network using port 22." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:22
Наконец, нужно разрешить входящий трафик для экземпляра Milvus, который мы создадим позже, на порт 19530.
gcloud compute firewall-rules create allow-milvus-in \
--project=milvus-testing-nonprod \
--description="Allow ingress traffic for Milvus on port 19530" \
--direction=INGRESS \
--priority=1000 \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--action=ALLOW \
--rules=tcp:19530 \
--source-ranges=0.0.0.0/0
Создание кластера Kubernetes
В этом руководстве мы будем использовать службу Google Kubernetes Engine (GKE) для создания кластера Kubernetes с двумя узлами в зоне us-west1-a. Каждый узел представляет собой виртуальную машину e2-standard-4 Compute Engine под управлением образа COS_CONTAINERD.
Для обеспечения стабильности сервиса рекомендуется использовать машины с минимальным объемом памяти 16 ГБ.
gcloud container clusters create "milvus-cluster-1" \
--project "milvus-testing-nonprod" \
--zone "us-west1-a" \
--workload-pool "milvus-testing-nonprod.svc.id.goog" \
--no-enable-basic-auth \
--cluster-version "1.28.10-gke.1075001" \
--release-channel "regular" \
--machine-type "c2-standard-4" \
--image-type "COS_CONTAINERD" \
--disk-type "pd-standard" \
--disk-size "100" \
--max-pods-per-node "110" \
--num-nodes "3" \
--enable-ip-alias \
--network "projects/milvus-testing-nonprod/global/networks/milvus-network" \
--subnetwork "projects/milvus-testing-nonprod/regions/us-west1/subnetworks/milvus-network"
На запуск кластера Kubernetes уйдет несколько минут. Как только кластер будет готов, выполните следующую команду, чтобы получить его учетные данные и запустить команды kubectl
в терминале для удаленного взаимодействия с кластером.
gcloud container clusters get-credentials milvus-cluster-1 --zone "us-west1-a"
Использование облачного хранилища Google (GCS) в качестве внешнего хранилища объектов
- Создайте ведро.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Сгенерируйте ключ доступа пользователя и секретный ключ, для этого перейдите на страницу хранилища вашего проекта. В левой боковой панели панели инструментов нажмите Google Cloud Storage, а затем Settings. Выберите вкладку INTEROPERABILITY. Если вы еще не включили эту функцию, нажмите на Interoperable Access. Затем нажмите кнопку CREATE A KEY, чтобы создать ключ.
Ключи доступа к GCP для вашей учетной записи пользователя
- Добавьте файл values.yaml
cluster:
enabled: true
service:
type: LoadBalancer
minio:
enabled: false
externalS3:
enabled: true
host: storage.googleapis.com
port: 443
rootPath: milvus/my-release
bucketName: milvus-testing-nonprod
cloudProvider: gcp
useSSL: true
accessKey: "<access-key>"
secretKey: "<secret-key>"
Развертывание Milvus
Теперь кластер Kubernetes готов. Давайте развернем Milvus прямо сейчас.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
helm install -f values.yaml my-release milvus/milvus
В предыдущих командах мы добавляем репо графиков Milvus Helm локально и обновляем репо для получения последних графиков. Затем мы устанавливаем экземпляр Milvus и называем его my-release.
Обратите внимание на значение config service.type
, которое указывает на то, что мы хотим открыть экземпляр Milvus через балансировщик нагрузки Layer-4.
Если вы хотите использовать экземпляр Milvus через балансировщик нагрузки уровня 7, прочтите эту статью.
Проверка развертывания
Когда все стручки запущены, выполните следующую команду, чтобы получить внешний IP-адрес.
kubectl get services|grep my-release-milvus|grep LoadBalancer|awk '{print $4}'
Hello Milvus
Обратитесь к Hello Milvus, измените значение host на внешний IP-адрес, а затем запустите код.
Что дальше
Если вы хотите узнать, как развернуть Milvus в других облаках: