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
- Run the following command to create an EKS cluster. The example in this topic uses
my-cluster
as the cluster name. You can replace it with your own value. See Getting started with Amazon EKS for more information.
eksctl create cluster --name my-cluster --region region-code --fargate
You will see the following output if the EKS cluster is created.
...
[✓] EKS cluster "my-cluster" in "region-code" region is ready
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}
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
Add the Milvus Helm repository.
helm repo add milvus https://milvus-io.github.io/milvus-helm/
- 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
- 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.
What’s next
If you want to learn how to deploy Milvus on other clouds: