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

Kubernetes使用命名targetPort无法连接服务的问题

问题分析与解决

你的配置核心问题并非端口命名不能用于Service的targetPort,而是容器健康探针的配置错误,导致Pod无法进入就绪状态,Service无法将流量转发到Pod上。

具体错误点

在Deployment的startupProbe和livenessProbe中,你指定了port: http,但容器端口的名称是http-port而非http。K8s无法识别这个不存在的端口名称,导致探针检查失败,Pod会一直处于未就绪状态——而Service只会将流量转发到就绪的Pod,因此你无法访问站点。

另外需要明确:Service中使用端口名称作为targetPort是完全合法的,这一方式适用于所有关联Pod的Service,和Deployment本身没有关系。

修正后的配置

只需将探针里的port: http改为port: http-port,同时保留Service的targetPort: http-port即可正常工作:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
spec:
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      pod: 338f54d2-8f89-4602-a848-efcbcb63233f
  template:
    metadata:
      labels:
        pod: 338f54d2-8f89-4602-a848-efcbcb63233f
        svc: app
    spec:
      imagePullSecrets:
        - name: regcred
      containers:
        - name: server
          image: server
          ports:
            - name: http-port
              containerPort: 3000
          resources:
            limits:
              memory: 128Mi
            requests:
              memory: 36Mi
          envFrom:
            - secretRef:
                name: db-env
            - secretRef:
                name: oauth-env
          startupProbe:
            httpGet:
              port: http-port  # 修正为正确的端口名称
              path: /
            initialDelaySeconds: 1
            periodSeconds: 1
            failureThreshold: 10
          livenessProbe:
            httpGet:
              port: http-port  # 修正为正确的端口名称
              path: /
            periodSeconds: 15
---
apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  selector:
    pod: 338f54d2-8f89-4602-a848-efcbcb63233f
  ports:
    - port: 80
      targetPort: http-port

为什么改targetPort: 3000能访问?

当你直接用端口号作为targetPort时,若容器确实在3000端口正常提供服务,且Pod尚未因探针失败被K8s重启,可能存在短暂窗口让你能访问,但这不是稳定状态——长期来看,失败的探针会导致Pod不断重启,服务依然会出现异常。正确做法是修正探针的端口名称,让Pod能正常通过健康检查,进入就绪状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:54:36