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

ArgoCD部署成功但无法访问Kubernetes服务问题排查求助

问题排查:ArgoCD部署后服务无法访问

核心问题定位

从你提供的信息中,能直接发现端口不匹配的关键矛盾:

  • Kubernetes Service whale的TargetPort配置为80,但你的Dockerfile声明EXPOSE 3000,且Node.js应用默认监听3000端口(除非代码修改)
  • Endpoints显示已关联Pod的80端口,但Pod内的应用并未在该端口提供服务

排查与修复步骤

1. 验证Pod内应用的实际监听端口

先确认应用确实运行在3000端口:

# 替换为你的whale Pod名称
kubectl exec -it <whale-pod-name> -- /bin/sh
# 容器内执行curl测试
curl localhost:3000
# 或者查看端口监听状态
netstat -tulpn | grep node

如果curl能返回应用内容,说明应用确实在3000端口提供服务。

2. 修正Deployment的容器端口配置

检查ArgoCD关联代码仓库中的Deployment YAML,确保容器端口设置为3000:

containers:
  - name: whale
    image: hcwxd/kubernetes-demo:<你的镜像标签>
    ports:
      - containerPort: 3000  # 必须与应用实际监听端口一致

3. 修正Service的TargetPort配置

修改Service的targetPort,使其与容器端口匹配:

spec:
  ports:
    - port: 80  # Service在集群内对外暴露的端口
      targetPort: 3000  # 指向容器实际监听的端口

4. 同步ArgoCD应用

触发ArgoCD同步,让新配置生效:

argocd app sync whale

5. 验证访问

集群内可直接用Service IP测试:

curl 10.104.41.34:80

若需要外部访问,可将Service类型改为NodePort/LoadBalancer,或配置Ingress规则。

额外注意点

  • Dockerfile中的EXPOSE仅为声明,不影响应用实际监听端口,需以代码中的端口配置为准(可查看源码仓库的index.js确认)
  • 若修改后仍无法访问,可检查Pod的日志:kubectl logs <whale-pod-name>,确认应用是否正常启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:15:36