两者使用场景比较clusterIp 适用于需要均衡负载均衡的场景 比如前端访问后端服务 负载均衡自动处理流量转发statefulSet headless适用于指定的访问主从模式 需要有角色对应访问 比如 mongodb数据库配置对比servicetype:service......spectype:clusterIpheadless servicetype:service......speclusterIp:none连接对比因为 clusterIp 返回的是虚拟地址 直接通过 [serviceName].[namespace].svc.cluster.local但是 headless statefulSet 返回的是podip 客户端和pod 连接都需要通过podIp连接 假设 pod名称为 mongodb 如果单个为mongodb-0 后期扩展多个副本时 为mongodb-0 ,mongodb-1... 连接配置为 mongodb-0?. [serviceName].[namespace].svc.cluster.local如果多个为mongodb://mongodb-0. [serviceName].[namespace].svc.cluster.local:27017,mongo-1. [serviceName].[namespace].svc.cluster.local:27017,mongo-2.mongo-headless.backend-space.svc.cluster.local:27017/myapp?replicaSetrs0readPreferencesecondaryPreferredretryWritestruereplicaSetrs 声明这是副本集 retryWritestrue如果查看策略路由错误导致连接不通 需要配置策略路由表 podIp via veth 我之前再 K8S部署踩坑总结-CSDN博客 也提到过关于主从策略的分配 只要pod之间的访问打通 mongodb会自动进行主从分配