Redis Pod与Webapp Pod连接失败,附日志及配置请求排查
排查Redis与Webapp Pod连接失败问题
从Webapp的错误日志可以明确看到核心问题:
uncaughtException: Redis connection to pv-redis:6379 failed - getaddrinfo ENOTFOUND pv-redis
你的K8s配置中,Redis Service名称为redis,Webapp Deployment也设置了REDIS_HOST: redis,但Webapp实际尝试连接的主机是pv-redis,这两者不匹配是连接失败的直接原因。
排查步骤
确认Webapp实际加载的Redis配置
- 进入Webapp Pod查看当前环境变量,验证
REDIS_HOST是否正确:kubectl exec -it $(kubectl get pods -l app=webapp -o jsonpath='{.items[0].metadata.name}') -- env | grep REDIS - 检查Webapp代码中的Redis连接逻辑,确认是否存在硬编码的
pv-redis主机名,或者是否有其他配置(如ConfigMap、Secret)覆盖了环境变量的值。
- 进入Webapp Pod查看当前环境变量,验证
验证Redis Service的DNS可用性
如果Webapp确实使用了redis作为主机名,先测试集群内的DNS解析是否正常:kubectl run -it --rm busybox --image=busybox:1.28 -- nslookup redis若能返回Redis Service的ClusterIP,说明Service的DNS配置正常;若解析失败,检查Redis Service是否正常运行:
kubectl get svc redis检查命名空间一致性
确认Redis和Webapp是否部署在同一个命名空间:kubectl get pods -A | grep -E 'redis|webapp'若两者不在同一命名空间,Webapp需要使用
<service-name>.<namespace>.svc.cluster.local格式的完整域名访问Redis。
修复建议
- 若Webapp代码中硬编码了
pv-redis,修改为读取环境变量REDIS_HOST的值; - 若环境变量被其他配置覆盖,清理冲突的配置,确保
REDIS_HOST的值为redis; - 若Redis和Webapp分属不同命名空间,更新Webapp的
REDIS_HOST为完整域名(如redis.default.svc.cluster.local,根据实际命名空间调整)。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

