Kubernetes部署中Redis 6.2用户名配置问题排查求助
解决Redis MemoryDB 6.2在Kubernetes部署中配置用户名出现WRONGPASS认证错误的问题
报错信息:
redis connection tls true Redis connection established adapter listening on [::]:9123 adapter listening on [::]:9122 LTE / UDP forward with port : 35115 LTE / UDP forward with port : 44801 MQTT connection established WRONGPASS invalid username-password pair or user is disabled. panic: WRONGPASS invalid username-password pair or user is disabled.
排查与解决步骤
1. 确认MemoryDB用户状态与权限
- 登录AWS控制台进入目标MemoryDB集群,检查配置的用户名是否处于启用状态,未被禁用
- 验证该用户关联的ACL规则是否包含连接权限(需确保ACL规则包含
on指令,且允许访问所需键空间) - 用
redis-cli直接连接集群测试认证,排除MemoryDB端配置问题:
若此命令报错,优先在MemoryDB控制台修正用户名/密码或ACL规则。redis-cli -h <memorydb-endpoint> -p 6379 --tls -u redis://<username>:<password>@<memorydb-endpoint>:6379
2. 核对Kubernetes配置的准确性
- 确认ConfigMap/Secret中存储的用户名、密码与MemoryDB端完全一致,注意大小写、特殊字符转义,比如密码中的
$、\需在K8s配置中正确处理 - 若使用Secret存储敏感信息,检查Pod是否正确挂载Secret,且环境变量/配置文件读取的是Secret内的正确键值
- 进入Pod内部查看实际加载的配置内容,核对用户名密码:
kubectl exec -it <pod-name> -- cat /path/to/your/redis/config
3. 验证客户端连接方式兼容性
- Redis 6.2依赖ACL系统实现用户名认证,确保客户端代码使用支持用户名的连接逻辑,而非仅传递密码
- 检查连接字符串是否包含用户名参数,示例:
避免遗漏用户名仅传递密码的情况。redis://<username>:<password>@<memorydb-host>:6379?ssl=true
4. 确认网络与命令权限
- 尽管日志显示连接建立,仍需验证Pod能否正常执行ACL相关命令,在Pod内执行:
若返回错误,排查VPC安全组、K8s网络策略是否限制了Redis命令传输。redis-cli -h <memorydb-endpoint> -p 6379 --tls auth <username> <password>
5. 重启Pod加载最新配置
- 修改ConfigMap后K8s不会自动重启Pod,需手动触发部署重启以加载更新后的配置:
kubectl rollout restart deployment <deployment-name>
内容的提问来源于stack exchange,提问作者ahmtcnsvr
相关产品推荐
相关产品推荐

