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

Kubernetes中跨服务调用端点遭连接拒绝问题排查求助

Kubernetes服务连接拒绝问题排查方案

你提到直接在db-daemon Pod内部调用API正常,但从其他Pod通过Pod IP:19091或db-service:8081调用时都出现connection refused,结合你的YAML配置,以下是核心排查点和修复方案:

1. 检查服务监听地址(最可能原因)

如果你的db-daemon服务只绑定了localhost(127.0.0.1),而非0.0.0.0,那么只能在容器内部访问,外部Pod或Service根本连不上。

  • 进入Pod验证监听地址:
    kubectl exec -it <你的db-daemon-pod名称> -- netstat -tulpn
    
    要是输出里的监听地址是127.0.0.1:19091,立刻修改服务配置,让它监听0.0.0.0:19091。

2. 确认Service与Pod的关联状态

虽然你的YAML里标签匹配看起来没问题,但还是要实际验证Service是否正确关联到Pod:

kubectl describe service db-service

看Endpoints字段,如果显示<none>,说明标签有拼写/大小写错误;如果显示了Pod的IP和端口,说明关联正常。

3. 验证容器内服务真的在19091端口运行

YAML里的containerPort只是声明,不代表服务实际在这个端口启动。在Pod内执行:

kubectl exec -it <你的db-daemon-pod名称> -- curl localhost:19091

如果这个命令返回错误,说明服务没在19091端口运行,得检查服务的启动参数或配置文件,调整端口到19091。

4. 排查网络策略限制

如果集群启用了NetworkPolicy,可能有规则阻止test-defintion-server访问db-daemon。先查看现有网络策略:

kubectl get networkpolicy

如果存在限制规则,需要添加允许访问的策略,示例如下:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-db-access
spec:
  podSelector:
    matchLabels:
      app: db-daemon
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: test-defintion-server
    ports:
    - protocol: TCP
      port: 19091

5. 节点级防火墙检查(少见情况)

极端情况下,节点的防火墙可能拦截Pod间的19091端口访问。可以登录运行db-daemon Pod的节点,检查iptables或firewalld规则,但这种情况在标准Kubernetes集群里很少出现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:53:11