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

Kubernetes Pod访问服务时出现Connection refused问题咨询

问题原因排查与解决方案

1. 核心故障原因:Service标签选择器与Pod标签不匹配

Kubernetes Service依靠selector字段匹配对应标签的Pod作为流量转发的后端目标:

  • 你在Deployment的Pod模板中为Pod设置的标签是app: simple-server-app
  • 你编写的service.yaml中selector配置的是run: simple-server

两者完全不匹配,导致Service没有关联到任何可用的后端Pod,因此访问Service地址时会返回连接拒绝的报错。
修复方案:修改service.yaml的selector为和Pod一致的标签即可:

apiVersion: v1
kind: Service
metadata:
  name: simple-server-svc
  labels:
    run: simple-server
spec:
  ports:
  - port: 8080
    targetPort: 8080
    protocol: TCP
  selector:
    # 调整为与Pod标签匹配
    app: simple-server-app

修改完成后重新执行kubectl apply -f service.yaml即可生效。

2. 潜在风险项:Node服务监听地址配置

你当前的server.js中监听逻辑如果显式绑定了localhost,会导致只有容器内部可以访问,集群内其他Pod、Service转发的流量都无法正常访问。
你当前的代码日志虽然打印的是localhost,Node 12版本默认未显式指定监听host时会监听0.0.0.0(所有网卡地址),为了避免后续修改代码引入问题,建议显式指定监听所有网卡:

app.listen(port, '0.0.0.0', () => {
  console.log(`Example app listening at http://0.0.0.0:${port}`)
})

3. 额外校验项:Deployment YAML缩进问题

你提供的deployment.yaml中template字段缩进存在问题,和selector不是平级关系,如果执行kubectl apply时报错,需要调整缩进为如下格式:

spec:
  replicas: 2
  selector:
    matchLabels:
      app: simple-server-app
  # template与selector平级,不要额外缩进空格
  template:
    metadata:
      labels:
        app: simple-server-app
    spec:
      containers:
      - name: simple-server
        image: aroraankit7/simple-server:v1
        ports:
        - containerPort: 8080

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:03