如何在同一K8S集群部署多套Redis,第二套实例报错如何解决?
多套Redis部署Sentinel探针失败排查方案
排查步骤
- 检查Sentinel容器内部监听状态
执行命令进入容器查看监听端口:kubectl exec -n redis2 <替换为你的sentinel pod名称> -c sentinel -- ss -tulpn
如果没有进程监听26380,或者只监听了默认的26379,说明容器内部的Sentinel配置未同步更新端口。 - 核对Helm全量配置参数
导出当前Release的所有生效配置:helm get values -n redis2 <替换为你的Redis Release名称> -a
检查所有端口相关配置项,确认不仅修改了Service端口,容器内部Redis监听端口、Sentinel监听端口、Sentinel配置中指向的Redis监控端口均已同步调整为6380、26380。大部分此类问题都是仅修改了Service层端口,未同步修改容器内部的启动端口配置导致。 - 查看Sentinel容器启动日志
执行命令查看启动报错:kubectl logs -n redis2 <替换为你的sentinel pod名称> -c sentinel
常见启动失败原因包括:Sentinel配置中指向的Redis端口错误无法连接主节点、配置文件格式错误、端口被占用等。 - 排查端口冲突
若你在部署时开启了hostPort配置,需确认同一节点上没有其他进程占用6380、26380端口,不同Namespace的Pod如果调度到同一个节点,使用相同hostPort会直接启动失败。
通用解决方案
- 若使用社区主流Redis Helm Chart(如Bitnami、redis-ha),需同步修改所有端口相关参数:以Bitnami Redis Sentinel Chart为例,需同时配置
redis.master.containerPorts.redis=6380、redis.replica.containerPorts.redis=6380、sentinel.containerPorts.sentinel=26380、sentinel.masterSet.redisPort=6380四个核心参数,确保容器内部进程、配置、探针端口完全匹配。 - 若使用自定义Helm Chart,检查初始化容器渲染redis.conf、sentinel.conf的模板文件,是否存在硬编码的6379、26379端口,替换为可配置的Values变量即可。
- 未使用hostPort的场景下,不同Namespace的Pod天然网络隔离,不存在端口冲突,无需修改节点层面的网络配置。
内容的提问来源于stack exchange,提问作者Siriphong Wanjai
相关产品推荐
相关产品推荐

