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

EKS集群中Keycloak服务无法连接同VPC内RDS求助

解决EKS中Keycloak连接同VPC内RDS超时问题

排查步骤:

  • 确认安全组规则准确性

    1. 不要依赖安全组名称,直接用安全组ID验证RDS入站规则——eksctl生成的安全组名称可能有变体,但ID是唯一标识。
    2. 检查Keycloak Pod实际使用的安全组:执行kubectl describe pod <keycloak-pod-name> -n <your-namespace>,在Networking字段下找到Security Groups,确认该安全组已被添加到RDS入站规则(允许TCP 5432端口)。
  • 测试基础网络可达性

    1. 在EKS节点上直接测试RDS连接:
      # 用nc验证端口连通性
      nc -zv <rds-endpoint> 5432
      # 或用psql尝试直接连接
      psql -h <rds-endpoint> -U <db-username> -d <db-name>
      
      如果节点能连通,问题出在Pod层面;如果节点也超时,检查RDS子网路由表(确保存在VPC本地路由,无错误指向互联网网关),或确认RDS是否部署在私有子网且无需额外NAT配置(同VPC内通信不需要NAT)。
  • 排查Pod网络限制

    1. 查看Keycloak所在Namespace的网络策略:
      kubectl get networkpolicy -n <your-namespace>
      
      如果存在限制出站流量的策略,需添加允许访问RDS 5432端口的规则;无策略时可临时创建允许所有出站的规则测试:
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: allow-all-egress
        namespace: <your-namespace>
      spec:
        podSelector: {}
        policyTypes:
        - Egress
        egress:
        - {}
      
    2. 若使用Calico等CNI插件,检查插件是否有额外网络规则限制Pod到RDS的流量。
  • 验证Keycloak连接配置

    1. 确认数据库连接URL格式正确:jdbc:postgresql://<rds-endpoint>:5432/<db-name>,无拼写错误。
    2. 检查连接超时参数:比如Keycloak的DB_POOL_CONNECTION_TIMEOUT,可适当调大(默认可能偏短),例如设置为30000毫秒。
  • 检查RDS自身状态

    1. 在AWS控制台确认RDS实例状态为available,无维护或重启操作。
    2. 检查RDS参数组的listen_addresses是否设置为*,确保允许VPC内的连接请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:25:21