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

树莓派Kubernetes集群下Spring Boot应用无法通过Secret访问PostgreSQL

你用wget访问PostgreSQL服务返回网络不可达属于正常现象,PostgreSQL监听的5432端口是TCP协议的数据库服务,并非HTTP服务,wget是HTTP客户端,无法与数据库端口建立HTTP连接,该报错无需关注。

排查修复步骤

1. 修正PostgreSQL访问控制配置

本地端口转发可访问不代表集群内Pod网段有权限访问,PostgreSQL默认的pg_hba.conf可能仅放开了本地/端口转发的IP段访问,未授权集群Pod CIDR段访问:

  • 进入PostgreSQL Pod:kubectl exec -it <postgres-pod-id> -n home -- bash
  • 查看/var/lib/postgresql/data/pg_hba.conf文件,确认是否存在允许集群Pod/Service网段(通常默认是10.42.0.0/16、10.43.0.0/16,可根据你的集群实际配置调整)的认证规则,没有则添加如下内容:
    host    all             all             10.42.0.0/16            md5
    host    all             all             10.43.0.0/16            md5
    
  • 重启PostgreSQL Pod使配置生效。

2. 排查命名空间网络策略限制

检查home命名空间下是否配置了NetworkPolicy规则限制Pod之间的访问:

  • 执行查询命令:kubectl get networkpolicy -n home
  • 如果存在返回的NetworkPolicy资源,确认是否有禁止meal-planner Pod访问postgres服务5432端口的规则,可临时删除规则测试连通性:kubectl delete networkpolicy <policy-name> -n home

3. 验证meal-planner容器网络连通性

你使用的arm32v7 OpenJDK基础镜像可能存在缺失网络工具、DNS解析异常的问题,可临时修改启动命令进入容器手动排查:

  • 修改meal-planner的Deployment配置,添加临时休眠命令覆盖原有启动逻辑:
    containers:
    - name: meal-planner
      image: 08021986/meal-planner:v1
      command: ["sleep", "3600"]
      # 保留原有env、ports等配置不变
    
  • 重新部署后进入容器:kubectl exec -it <meal-planner-pod-id> -n home -- bash
  • 测试DNS解析:nslookup postgres.home.svc.cluster.local,正常会返回PostgreSQL Service的ClusterIP
  • 安装网络工具测试端口连通性:
    apt update && apt install netcat postgresql-client -y
    # 测试端口连通性
    nc -zv postgres 5432
    # 直接用psql客户端测试数据库连接,验证凭证有效性
    psql -h postgres -U <你的数据库用户名> -d home
    
    如果psql可以正常连接,说明网络和凭证均无问题,问题出在Spring Boot应用配置加载逻辑。

4. 修正Spring Boot数据源配置

为避免application.yaml配置加载异常,可通过环境变量直接注入JDBC URL覆盖默认配置,同时使用完整的Service域名避免DNS解析异常:

env:
  - name: SPRING_DATASOURCE_URL
    value: "jdbc:postgresql://postgres.home.svc.cluster.local:5432/home"
  - name: DB_USER
    valueFrom:
      secretKeyRef:
        name: dev-db-secret
        key: username
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: dev-db-secret
        key: password

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:36:03