一、准备资源
可先参考 Environment Checklist for Milvus Milvus on Kubernetes 在云上购买和配置相关的资源。
本人购买的云资源是:
ACK托管版
K8S版本 1.24.6-aliyun.1
3台 32vCPU 128GB ecs.g6.8xlarge
MAC电脑客户端(已安装kubectl工具)
二、集群创建:
登陆ACK控制台:https://cs.console.aliyun.com/?spm=5176.181001.J_5253785160.4.38a84e26LzhVIl#/k8s/cluster/list
本集群基于Terway网络构建
为了便于集群访问公网,以及公网访问集群API Server,集群开通时候默认勾选了SNAT和Eip暴露公网api server
集群Worker节点按照实际需求选用规格配比,本次选用g6实例,配置essd云盘
由于,前置步骤为集群开启了SNAT,本次不针对每个Worker开启公网地址,如果额外有需求要每个worker绑定公网IP,可以这里开启,或者后续单独给每台worker绑定eip
后置步骤,按照默认开通集群。
二、连接刚刚创建的ACK集群
选用MAC电脑安装kubectl工具(参考安装指导)
https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/
安装完毕后,创建$HOME/.kube目录下的config
进去刚刚创建好的集群,粘贴公网访问凭证到config中,也可以生成临时的凭证
上述操作完毕后,
kubectl get namespace
测试连通性
详细的操作指导同样可以参考官网链接:
https://help.aliyun.com/document_detail/86494.html?spm=a2c4g.86737.0.0.7ba65143wCxNEb
集群创建完毕后,为了后面部署Milvus,创建一个存储类,并且设置为默认,供后面Milvus的各组件可以自动创建存储卷
集群进入存储-存储类-创建
存储类型选用了cloud_essd类型云盘,额外新增了zoneId,设置存储所在区域和worker节点在同一个可用区
设置上面创建的存储类为默认的存储类
kubectl patch storageclass milvus-beijing -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
其中,红框部分替换为自己创建的存储类的名称
通过,可以看到设置的存储类已经标识为default
kubectl get sc
三、部署Milvus数据库
本次部署,需要helm部署方式,详细的可以参考官网文档
https://milvus.io/docs/install_cluster-helm.md
首先,添加 Milvus Helm 仓库并更新。
helm repo add milvus https://milvus-io.github.io/milvus-helm/
helm repo update
因为我之前部署过,所以这里显示已经存在
安装Milvus 和Attu
helm install my-release milvus/milvus --set attu.enabled=true
安装完毕后显示如下:
验证下pod的拉起情况,发现etcd的状态是pending状态,不正常,原因是官方设置etcd的PVC总量是10G,而阿里云essd,需要至少20G才能初始化
kubectl get pods
删掉重建,设置存储容量大于等于20G
再根据kubectl get pods刷新,发现所有的Pod都是runnng状态了,两个job类型的pod是completed状态;也可以在控制台的负载界面观察pod的情况(工作负载-有状态,工作负载-无状态)
四、优化Milvus配置
为了可以公网访问attu工具,需要将attu工具开通公网,控制台登陆集群后,网络-服务,找到my-release-milvus-attu服务
更新服务的类型由虚拟集群ip为节点负载均衡(公网)
更新完毕后,会新增外部端点访问,可以通过浏览器访问attu的登陆界面
如果需要公网访问集群,也可以通过上述方法,将Milvus更新公网端口
如果针对不同的数据量,可以使用Milvus Sizing Tool去计算Milvus各组件建议的资源配比;通过milvus_resources.yaml 刷新集群组件资源配置