You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Kubernetes集群中Spring Boot API接入Memcache遇连接问题求助

排查GKE上Spring Boot API连接VM部署Memcache的问题

看起来你在GKE集群上的Spring Boot API连接VM部署的Memcache时遇到了连接失败的问题,我来帮你一步步梳理可能的原因和解决方案:

1. 先检查最容易踩坑的网络配置

  • 防火墙规则的来源范围别搞错了:你提到把本地IP加入白名单,但你的Spring Boot API是跑在GKE的Pod里的,Pod的IP属于集群的Pod CIDR网段,不是你本地的IP!去GCP控制台的「VPC网络->防火墙规则」里,修改你的Memcache端口规则,把来源IP范围改成GKE集群的Pod CIDR(可以在GKE集群详情里找到这个网段),或者如果和VM在同一个VPC,直接允许整个VPC的内部IP访问。
  • 确认防火墙规则的目标匹配:如果你的规则是基于标签的,一定要检查VM有没有添加对应的标签;如果是基于IP的,要确保目标IP包含VM的内部IP,别只选了外部IP。

2. 验证Memcache的监听地址

默认情况下,Memcache可能只绑定127.0.0.1(本地回环),这样外部根本连不上:

  • 登录到Memcache VM,编辑配置文件(通常是/etc/memcached.conf或/etc/sysconfig/memcached),找到-l参数,改成0.0.0.0(监听所有网卡)或者VM的内部IP。
  • 重启Memcache服务:sudo systemctl restart memcached
  • 用命令验证监听状态:ss -tulpn | grep 11211,输出里应该能看到0.0.0.0:11211或者VM的IP,而不是只有127.0.0.1。

3. 测试Pod到VM的直接连通性

先排除网络层面的问题,在GKE的Pod里直接测试:

  • 进入你的Spring Boot API Pod:kubectl exec -it <你的API Pod名称> -- /bin/bash
  • 用telnet或nc测试连接:
    telnet <Memcache VM的IP> 11211
    # 或者用nc更直观
    nc -zv <Memcache VM的IP> 11211
    
    如果这里连不上,说明是网络问题;如果能连上,那问题大概率在Spring Boot的客户端配置上。

4. 检查Spring Boot客户端配置

  • 确认你用的Memcache客户端(比如memcached-spring-boot-starter)配置正确,示例配置:
    spring.memcached.servers=<Memcache VM的IP>:11211
    spring.memcached.connection-timeout=5000
    spring.memcached.read-timeout=3000
    
  • 开启调试日志看细节,在application.yml里添加:
    logging:
      level:
        net.spy.memcached: DEBUG
    
    从日志里看是连接超时、被拒绝还是其他错误,能更精准定位问题。

5. 其他可能的小坑

  • VM本地防火墙拦截:有些VM镜像自带ufw或firewalld,即使GCP防火墙开了,本地防火墙也可能挡请求。可以临时关闭测试:
    # Ubuntu/Debian系统
    sudo ufw disable
    # CentOS/RHEL系统
    sudo systemctl stop firewalld
    
    如果关闭后能连接,再配置本地防火墙允许11211端口的入站请求。
  • Memcache服务是否正常运行:确认VM上的Memcache服务没挂:sudo systemctl status memcached,如果没启动,先启动并设置开机自启:sudo systemctl enable --now memcached

内容的提问来源于stack exchange,提问作者user2137817

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:09:07