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

无法访问部署在Google Cloud上的Angular应用,返回502错误求助

故障排查及修复方案

1. 首要问题:Angular容器监听地址配置错误

这是最常见的导致本地运行正常、集群内访问502的原因:
Angular CLI默认ng serve仅监听本地回环地址127.0.0.1,集群内其他组件无法访问。你需要修改Angular项目的Dockerfile启动命令,修改为:

CMD ["ng", "serve", "--host", "0.0.0.0", "--port", "4200", "--disable-host-check"]

其中--disable-host-check是为了避免Angular的域名校验拦截blog.dev的访问请求。

2. 基础资源状态排查

依次执行以下命令确认资源状态正常:

  • 检查Client Pod运行状态:
    kubectl get pods | grep client
    
    若Pod未处于Running状态,执行kubectl logs <Pod名称>查看启动日志排查报错。
  • 检查Client服务端点是否正常:
    kubectl describe svc client-srv
    
    确认Endpoints字段有对应Client Pod的IP地址,为空则说明Deployment和Service的标签匹配错误。
  • 本地端口转发验证服务可用性:
    kubectl port-forward svc/client-srv 4200:4200
    
    从Cloud Shell预览4200端口,若能正常访问则说明服务本身无问题,故障出在Ingress链路。

3. Ingress配置修复

你当前使用的extensions/v1beta1版本Ingress已在Kubernetes 1.19+版本中废弃,与你部署的Ingress-NGINX v1.0.3不兼容,需要替换为networking.k8s.io/v1版本的配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: 
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: blog.dev
      http:
        paths:
          - path: /api/users/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3100
          - path: /?(.*)
            pathType: Prefix
            backend:
              service:
                name: client-srv
                port:
                  number: 4200

配置更新后执行kubectl apply -f <Ingress配置文件路径>生效,之后执行kubectl describe ingress ingress-service确认无配置报错。

4. 可选优化项

你当前Skaffold配置中的文件同步规则存在语法错误,src/**/.ts需要改为src/**/*.ts才能正确同步TypeScript代码变更,避免修改代码后镜像不更新的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:36:02