Qdrant集群分片节点分布及副本缺失问题咨询
Qdrant集群部署问题解答
环境背景
在1个master、4个worker节点的K8s集群中安装Qdrant Helm Chart,创建了shard_number=2、replication_factor=2的集合test_collection_1,执行命令:
curl http://192.168.1.168:31990/collections/test_collection_1/cluster # 6333端口映射为31990
返回结果:
{"result":{"peer_id":7901933018698687,"shard_count":2,"local_shards":[{"shard_id":0,"points_count":52505,"state":"Active"},{"shard_id":1,"points_count":47495,"state":"Active"}],"remote_shards":[],"shard_transfers":[]},"status":"ok","time":0.000017769}
问题1:分片节点分布怎么查,那些集群初始化命令在哪执行?
- 先解决
kubectl exec报错:你输入的Pod名称不对,先执行kubectl get pods(如果Qdrant安装在指定命名空间,需加-n <你的命名空间>参数),找到实际运行的Qdrant Pod名称——Helm部署的Qdrant一般是有状态集,Pod名称会带序号,比如my-qdrant-demo-0、my-qdrant-demo-1这类。 - 你提到的
./qdrant --uri 'http://qdrant_node_1:6335/'和./qdrant --bootstrap 'http://qdrant_node_1:6335/'命令不需要手动执行,Helm Chart已经内置了集群初始化逻辑,只要安装时正确配置集群相关参数,Pod启动时会自动完成节点发现和集群组建。 - 要查看分片的节点分布,直接调用Qdrant的集群状态接口即可:
返回结果会包含所有节点的curl http://192.168.1.168:31990/clusterpeer_id,以及每个节点上的分片详情,能清晰看到分片分布情况。
问题2:为啥没有远程分片(副本)?和hostPath类型PV有关吗?
- 和hostPath类型PV无关,只要各worker节点的
/home/data路径存在、权限配置正确,PV能正常挂载,就不会影响副本分片的创建。 - 核心原因是当前Qdrant集群仅为单节点模式:通过Helm安装时,需要在values.yaml中设置
replicaCount为大于1的值(比如3),同时开启集群模式(qdrant.cluster.enabled: true),这样才会创建多个Qdrant Pod组成集群,集合的副本分片才会被分配到其他节点。 - 当前返回结果中
remote_shards为空,说明整个集群只有一个Qdrant节点在运行,所有分片只能存在于该节点上,无法创建副本到其他节点。
内容的提问来源于stack exchange,提问作者Ngô Minh Hải
相关产品推荐
相关产品推荐

