Skip to content

Deploy a Milvus Cluster on EKS

YiyunNi edited this page Nov 24, 2021 · 1 revision

Deploy a Milvus Cluster on EKS

This topic describes how to deploy a Milvus cluster on Amazon EKS.

This topic assumes that you have a basic understanding of AWS access management. If you're not familiar with it, see AWS Identity and Access Management Documentation.

Prerequisites

Software requirements

Cloud security

  • Access to EKS, EC2, and S3
  • Access key ID
  • Security access key

Deploy a Milvus cluster

You can download template configuration files at Google Drive.

  1. Provision a Milvus cluster. See Provision a Milvus cluster for more information.

  2. After a Milvus cluster is provisioned, run the following command with a region and name for the cluster.

    aws eks --region ${aws-region} update-kubeconfig --name ${cluster-name}
  3. Create a kubeconfig file and run kubectl get svc. If successful, a cluster appears in the output.

    NAME          TYPE      CLUSTER-IP    EXTERNAL-IP                                PORT(S)             AGE
    kubernetes       ClusterIP   172.20.0.1    <none>                                  443/TCP             106m
  4. Run the following command to start the Milvus cluster that you have provisioned. The access key and an S3 bucket are required to use S3 as storage.

helm upgrade --install --set cluster.enabled=true --set externalS3.enabled=true --set externalS3.host='s3.us-east-2.amazonaws.com' --set externalS3.port=80 --set externalS3.accessKey=${access-key} --set externalS3.secretKey=${secret-key} --set externalS3.bucketName=${bucket-name} --set minio.enabled=False --set service.type=LoadBalancer milvus milvus/milvus
  1. Run kubectl get svc again to retrieve the IP address of the load balancer and use it as the IP address of the Milvus cluster.
Run kubectl get pods to view the running pods on the cluster.

Scale the Milvus cluster

Currently, a Milvus cluster can only be scaled manually. Run the following command to modify the numbers of node instances with different types.

See Storage/Computing Disaggregation for more information about the data node, index node, query node, and proxy.
helm upgrade --install --set cluster.enabled=true --set dataNode.replicas=1 --set indexNode.replicas=1 --set queryNode.replicas=1 --set proxy.replicas=1 --set externalS3.enabled=true --set externalS3.host='s3.us-east-2.amazonaws.com' --set externalS3.port=80 --set externalS3.accessKey=${access-key} --set externalS3.secretKey=${secret-key} --set externalS3.bucketName=${bucket-name} --set minio.enabled=False --set service.type=LoadBalancer milvus milvus/milvus

After running the preceding command, you can run kubectl get pods to view the newly created node instances.