目录
在 Kubernetes 中部署 Mishards 集群
安装前提
安装流程
卸载 Mishards
从单机升级到 Mishards 集群
注意事项
基本案例
在 Kubernetes 中部署 Mishards 集群
安装前提
- Kubernetes 版本 1.10 及以上
- Helm 版本 2.12.0 及以上
关于 Helm 的使用请参考 Helm 使用指南。
安装流程
- 添加 Helm Chart 仓库:
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com
- 安装 Chart 依赖:
$ git clone https://github.com/milvus-io/milvus-helm.git $ cd milvus-helm/charts/milvus $ helm dep update
- 部署 Mishards:
$ helm install --set cluster.enabled=true --set persistence.enabled=true milvus-release .
- 检查部署状态:
$ helm list -f "milvus-release"
卸载 Mishards
- 使用 Helm v2.x 卸载 Mishards:
$ helm delete milvus-release
- 使用 Helm v3.x 卸载 Mishards:
$ helm uninstall milvus-release
从单机升级到 Mishards 集群
Milvus-Helm 支持从单机服务升级到 Mishards 集群。
- 部署单机 Milvus:
$ helm install --set persistence.enabled=true milvus-release .
- 升级到 Mishards 集群:
$ helm upgrade --set cluster.enabled=true --set persistence.enabled=true milvus-release .
注意事项
Mishards 依赖共享存储,因此 Kubernetes 集群中必须有可用的 PV(Persistent Volumes), 并且保证 PV 能够同时被多个 Pod 共同使用。这里通过 persistence.enabled 来开启 Persistent Volumes。
- 为了共享数据,PV 访问模式必须被设置为 ReadOnlyMany 或者 ReadWriteMany。
- 选择文件存储系统:
-
- 如果集群部署在 AWS,可以使用 Elastic File System (EFS)。
- 如果集群部署在 Azure,可以使用 Azure File Storage (AFS)。
- 关于 PersistentVolume 的申请及管理,请参阅 Persistent Volumes。
- 关于 PersistentVolume 的访问模式,请参阅 Access Modes。
基本案例
你可以在 Milvus Helm Charts 找到 Milvus-Helm 支持的所有参数。
- 配置有多个读节点和多个 Mishards 分片中间件的集群。我们通常配置多个节点来保证服务的可用性以及提高吞吐率。下面的例子部署的 Mishards 集群包括:2 个分片中间件、2 个读节点、1 个写节点。
$ helm install --set cluster.enabled=true \ --set persistence.enabled=true \ --set mishards.replica=2 \ --set readonly.replica=2 \ milvus-release .
这里通过 mishards.replica 和 readonly.replica 控制副本集数量,默认值为 1。Mishards 集群中的写节点暂时不支持扩展。
- 使用外部已配置好的 MySQL 集群作为元数据数据库。为了配合本地部署,有些情况需要支持外部的 MySQL。Milvus-Helm 内部的 MySQL 服务不保证高可用,但你可以通过外部的 MySQL 集群来提升可用性。下面的例子就是基于外部 MySQL 的部署。
$ helm install --set cluster.enabled=true \ --set persistence.enabled=true \ --set mysql.enabled=false \ --set externalMysql.enabled=true \ --set externalMysql.ip=192.168.1.xx \ --set externalMysql.port=3306 \ --set externalMysql.user=root \ --set externalMysql.password=root \ --set externalMysql.database=milvus \ milvus-release .
若使用外部的 MySQL,则不再需要 Helm 内置的 MySQL 服务。这里通过 mysql.enabled 来关闭 Helm 内置的 MySQL 服务。
- 读写节点的 Milvus 分别使用不同的配置。为了更合理地使用资源,我们希望读节点和写节点拥有不一样的配置。下面的例子配置了一个拥有 16 GB 内存的读节点和 8 GB 内存的写节点。
$ helm install --set cluster.enabled=true \ --set persistence.enabled=true \ --set cache.cpuCacheCapacity=8 \ --set readonly.cache.cpuCacheCapacity=16 \ milvus-release .
-
- 更多 Milvus 配置参数,请参阅 Milvus 服务端配置。
- 更多 Milvus-Helm 配置参数,请参阅 Milvus Helm Charts。
- 配置 GPU 资源。使用 GPU 可以有效提升 Milvus 的性能。下面的例子通过 gpu.enabled=true 允许写节点使用 GPU 资源,readonly.gpu.enabled=false 禁止读节点使用 GPU 资源。
$ helm install --set cluster.enabled=true \ --set persistence.enabled=true \ --set gpu.enabled=true \ --set readonly.gpu.enabled=false \ milvus-release .
Kubernetes 集群中必须有可访问的 GPU 资源。关于 Kubernetes 中的 GPU 资源管理及调度,请参阅 Schedule GPUs。