EKS集群Pod连接ElastiCache/Redis可连通但执行命令断开如何配置
解决步骤
1. 验证ElastiCache传输加密配置
这是该场景下最高发的问题:
- 登录AWS ElastiCache控制台,查看目标Redis实例的传输中加密配置项:
- 若配置为已启用,说明Redis强制要求TLS加密连接,直接用redis-cli不加TLS参数时,TCP三次握手可正常完成,但服务端等待TLS握手超时后会主动断开连接,刚好符合你遇到的报错现象。
- 修正连接命令如下:
redis-cli -h my-cache-instance.xxxx.yyyy.zzzz.cache.amazonaws.com --tls- 若实例同时开启了身份验证,额外追加
-a <你的Redis密码>参数即可。
2. 排查MTU不匹配问题
EKS VPC CNI默认启用9001字节的巨帧MTU,若ElastiCache所在子网的网络配置不支持巨帧,会出现小包(TCP握手)正常、大包(命令请求/响应)被丢弃的情况:
- 在故障Pod内执行以下命令验证:
# 测试1500MTU对应的包大小,禁止分片 ping -s 1472 -M do my-cache-instance.xxxx.yyyy.zzzz.cache.amazonaws.com # 测试9001MTU对应的包大小,禁止分片 ping -s 8972 -M do my-cache-instance.xxxx.yyyy.zzzz.cache.amazonaws.com - 如果9001MTU的包ping失败,将EKS VPC CNI的MTU调整为1500即可解决。
3. 核对安全组配置对象
确认ElastiCache入站规则中放行的安全组,是EKS工作节点的安全组(或Pod关联的安全组,若使用Pod级安全组功能),而非EKS控制平面的安全组。
4. 排查集群网络策略限制
若集群配置了Kubernetes NetworkPolicy或使用Calico、Cilium等CNI的网络策略,确认没有限制Pod到ElastiCache 6379端口的出站流量。
内容的提问来源于stack exchange,提问作者Sasha Shpota
相关产品推荐
相关产品推荐

