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

OKE Kubernetes集群内应用无法连接同VCN下内网Oracle MySQL实例求助

排查步骤

    1. 确认应用部署的命名空间
      你创建的mysql-dev Service位于development命名空间下,若应用没有部署在development命名空间,直接使用mysql-dev作为主机名无法完成DNS解析,需要修改配置为完整域名:mysql-dev.development.svc.cluster.local
    1. 集群内基础连通性验证
      启动一个临时测试Pod排查基础网络能力,避免应用本身配置问题干扰排查:
    # 启动临时mysql客户端Pod,替换<your-app-namespace>为应用实际的命名空间
    kubectl run -n <your-app-namespace> -it --rm --image=mysql:8.0 --restart=Never mysql-client -- bash
    
    在Pod内依次执行测试:
    • 验证DNS解析:nslookup mysql-dev(同命名空间)或nslookup mysql-dev.development.svc.cluster.local(跨命名空间),确认可以正常解析到ClusterIP
    • 验证Service连通性:nc -zv mysql-dev 3306,确认端口可达
    • 直接验证数据库连通性:mysql -h <DB INTERNAL IP> -u <USERNAME> -p<PASSWORD>,确认直接访问数据库IP可以正常登录
    1. 验证Service与Endpoints配置正确性
      执行以下命令检查资源配置:
    kubectl get svc mysql-dev -n development
    kubectl get endpoints mysql-dev -n development
    
    确认:
    • Service没有配置selector字段(手动关联Endpoints的Service不能指定Selector,否则集群会自动覆盖你手动创建的Endpoints资源)
    • Endpoints的ADDRESSES字段与数据库实际内网IP一致,端口为3306,无NotReady状态
    1. 检查OCI层网络规则
      同VCN同子网资源默认也可能受安全规则限制,需要确认:
    • 数据库实例关联的子网安全列表/网络安全组(NSG),已添加入站规则:允许OKE集群的Pod CIDR、节点CIDR访问3306端口
    • OKE集群节点/Pod关联的NSG/安全列表,已添加出站规则:允许访问数据库内网IP的3306端口
    1. 检查Kubernetes集群网络限制
    • 若集群配置了NetworkPolicy,确认没有规则禁止应用访问mysql-dev Service或数据库内网IP的3306端口
    • 若你用的是Calico等支持网络策略的CNI插件,确认没有全局配置的网络隔离规则阻断流量
    1. 验证数据库本身配置
    • 确认MySQL的bind-address配置为0.0.0.0或其自身内网IP,未绑定127.0.0.1
    • 确认你使用的数据库账号允许从应用Pod的IP段登录,可在数据库端执行SELECT user,host FROM mysql.user WHERE user='<USERNAME>';检查权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:00:03