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

Kubernetes集群中.NET应用无法连接远程CockroachDB求助

解决方案与排查建议

1. 验证K8s集群的DNS基础连通性

先在集群中部署测试Pod,直接解析CockroachDB域名,定位是集群DNS问题还是应用配置问题:

kubectl run -it --rm dns-test --image=busybox:1.28 -- nslookup your-cockroachdb-domain
  • 若解析失败:说明集群DNS服务异常,或域名在集群网络环境下不可达
  • 若解析成功:问题出在应用配置或Pod网络策略

2. 核对应用的数据库连接字符串

  • 确保K8s环境中应用使用的连接字符串与本地Docker完全一致,避免域名拼写错误或依赖本地hosts映射(本地可能手动配置过hosts,但K8s集群无此配置)
  • 临时将连接字符串中的域名替换为IP地址测试:若IP能正常连接,确定是DNS解析问题;若仍无法连接,则是网络连通性问题(如防火墙、集群出口规则限制)

3. 检查Pod网络策略与集群出口规则

  • 确认应用Deployment所在Namespace是否存在限制出站流量的NetworkPolicy,比如禁止访问外部域名
  • 在集群节点上测试对CockroachDB端口(默认26257)的连通性:
telnet your-cockroachdb-domain 26257
# 或使用nc命令
nc -zv your-cockroachdb-domain 26257

若节点无法连通,需调整集群防火墙规则,开放对应端口的出站权限

4. 检查Pod与集群DNS服务状态

  • 查看Pod的DNS配置,确认是否使用集群默认DNS服务器:
kubectl exec -it <你的Pod名称> -- cat /etc/resolv.conf

正常配置应包含集群DNS服务地址(如nameserver 10.96.0.10,对应kube-dns/coredns)

  • 检查集群DNS组件运行状态:
kubectl get pods -n kube-system -l k8s-app=kube-dns

若DNS Pod异常,可尝试重启或重建该组件

5. 确认CockroachDB的访问控制规则

检查CockroachDB集群是否设置了IP白名单,需将K8s集群节点的公网IP或集群出口IP加入白名单,确保允许集群网络访问

6. 显式配置Pod的DNS策略

部分自定义Docker镜像可能修改了DNS配置,可在Deployment的Pod模板中显式指定DNS策略,强制使用集群DNS:

spec:
  containers:
  - name: 你的应用容器名
    image: 你的镜像地址
  dnsPolicy: ClusterFirst

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:23:16