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

Kubernetes集群外部无法访问已部署应用的故障排查

问题背景

尝试访问运行在Kubernetes集群中的Golang微服务,对应Deployment资源清单配置如下:

apiVersion: apps/v1 
kind: Deployment 
metadata:
  name: email-application-service 
  namespace: email-namespace 

spec:
    selector:
      matchLabels:
        run: internal-service 
    template:
      metadata: 
        labels:
          run: internal-service
      spec:
        containers:
        - name: email-service-application 
          image: some_image
          ports:
          - containerPort: 8000 
            hostPort: 8000 
            protocol: TCP 
          
          envFrom:
            - secretRef:
                name: project-secrets

          imagePullPolicy: IfNotPresent

为实现集群外部访问该Deployment,配套创建了配置External IP的Service资源,预期将HTTP请求转发至应用监听的8000端口,Service资源清单配置如下:

apiVersion: v1 
kind: Service 
metadata:
  name: email-internal-service 
  namespace: email-namespace 
spec:
  type: ClusterIP 
  externalIPs:
    - 192.168.0.10 
  selector:
    run: internal-service
  ports:
   - name: http 
     port: 8000
     targetPort: 8000 
     protocol: TCP 

故障现象

集群外部执行curl -f http:192.168.0.10:8000/发送GET请求时,请求一直阻塞直到超时。
已完成排查项:Pod运行状态、应用运行日志、Service与Deployment的selector及标签匹配规则、命名空间配置、关联Secret部署状态,上述配置均运行正常无异常。

故障根因
  • 核心冲突来自Deployment中不必要的hostPort配置:容器端口定义中同时声明containerPort: 8000和hostPort: 8000,会让kubelet在Pod所在节点上直接生成8000端口的本地监听规则,优先级高于kube-proxy为Service生成的externalIPs转发规则。如果接收请求的节点上没有运行该Pod,流量会被本地hostPort规则拦截后丢弃,无法走到Service的负载均衡转发链路。
  • 请求命令存在格式错误:执行的curl命令中URL写为http:192.168.0.10:8000/,缺失HTTP协议要求的//分隔符,正确格式应为http://192.168.0.10:8000/,格式错误会导致curl无法正常建立HTTP连接,触发阻塞超时。
  • externalIPs配置不符合使用要求:ClusterIP类型Service的externalIPs字段,必须填写集群内某台节点实际绑定在网卡上的IP地址。如果192.168.0.10不属于集群任意节点的可用IP,外部网络流量根本无法路由到集群节点,自然会出现连接超时。
修复方案
  • 删除Deployment容器端口配置中的hostPort: 8000字段,无特殊节点直连需求时,容器端口仅保留containerPort声明即可,避免和Service转发规则产生冲突。
  • 修正curl命令的URL格式,使用标准http://前缀发起请求。
  • 确认192.168.0.10为集群某节点的实际网卡IP;如果仅为测试环境临时访问,可直接将Service类型修改为NodePort,通过节点IP+自动分配的NodePort端口访问,配置复杂度更低,不易出现规则冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:06:21