当前位置: 首页 > 知识库问答 >
问题:

Kubernetes GKE入口:502服务器错误

宗政元青
2023-03-14

我目前正在使用google云平台设置一个web应用程序,但在使用GKE ingress controller部署时遇到了一个问题。

我无法使用我的子域名访问应用程序。页面显示以下消息:

502 Server Error
Error: Server Error

The server encountered a temporary error and could not complete your request.

Please try again in 30 seconds.

尽管配置了健康检查,但入口似乎仍然没有正确响应。同时,我的SSL证书对于我的子域名工作正常。

这是我的入口配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: frontend-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "myapp-static-addr"
    networking.gke.io/v1beta1.FrontendConfig: "frontend-ingress-config"
spec:
  rules:
  - host: test.myapp.com
    http:
      paths:
      - path: /
        backend:
          serviceName: frontend-service
          servicePort: 3333
  tls:
  - secretName: stage-ssl"

这就是我的服务:

apiVersion: v1
kind: Service
metadata:
  name: frontend-service
  namespace: default
  annotations:
    cloud.google.com/backend-config: '{"default": "frontend-config"}'
spec:
  type: NodePort
  selector:
    app: frontend-server
  ports:
    - port: 3333
      protocol: TCP
      targetPort: 3000

最后是我的部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-deployment
  labels:
    app: frontend-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend-server
  template:
    metadata:
      labels:
        app: frontend-server
    spec:
      containers:
      - name: client-ssr
        image: eu.gcr.io/myapp-test/client-ssr
        ports:
        - name: client-port
          containerPort: 3000
        resources:
          requests:
            cpu: "0.35"
          limits:
            cpu: "0.55"
        env:
          - name: CONFIG_ENV
            value: "STAGE"
        imagePullPolicy: Always
        volumeMounts:
        - name: certificate
          mountPath: "/etc/certificate"
          readOnly: true
      volumes:
        - name: certificate
          secret:
            secretName: stage-ssl

入口描述如下:

Name:             frontend-ingress
Namespace:        default
Address:          34.106.6.15
Default backend:  default-http-backend:80 (10.26.31.88:8080)
TLS:
  stage-ssl terminates 
Rules:
  Host                  Path  Backends
  ----                  ----  --------
  test.myapp.com  
                        /   frontend-service:3333 (10.22.46.111:3000)
Annotations:
  kubernetes.io/ingress.global-static-ip-name:       myapp-static-addr
  ingress.kubernetes.io/backends:                    {"k8s-be-32171--41df3ab30d90ff92":"HEALTHY","k8s1-41df3ab3-default-frontend-service-3333-5186e808":"HEALTHY"}
  ingress.kubernetes.io/forwarding-rule:             k8s2-fr-opm63ww1-default-frontend-ingress-8gn6ll7p
  ingress.kubernetes.io/https-forwarding-rule:       k8s2-fs-opm63ww1-default-frontend-ingress-8gn6ll7p
  ingress.kubernetes.io/redirect-url-map:            k8s2-rm-opm63ww1-default-frontend-ingress-8gn6ll7p
  ingress.kubernetes.io/ssl-cert:                    k8s2-cr-opm63ww1-f42czv69pq6f2emd-5bd4c7395be5bd4e
  ingress.kubernetes.io/https-target-proxy:          k8s2-ts-opm63ww1-default-frontend-ingress-8gn6ll7p
  ingress.kubernetes.io/target-proxy:                k8s2-tp-opm63ww1-default-frontend-ingress-8gn6ll7p
  ingress.kubernetes.io/url-map:                     k8s2-um-opm63ww1-default-frontend-ingress-8gn6ll7p
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.global-static-ip-name":"myapp-static-addr","networking.gke.io/v1beta1.FrontendConfig":"frontend-ingress-config"},"name":"frontend-ingress","namespace":"default"},"spec":{"rules":[{"host":"test.myapp.com","http":{"paths":[{"backend":{"serviceName":"frontend-service","servicePort":3333},"path":"/"}]}}],"tls":[{"secretName":"stage-ssl"}]}}

  networking.gke.io/v1beta1.FrontendConfig:  frontend-ingress-config
Events:
  Type    Reason     Age                  From                     Message
  ----    ------     ----                 ----                     -------
  Normal  Sync       18m                  loadbalancer-controller  UrlMap "k8s2-um-opm63ww1-default-frontend-ingress-8gn6ll7p" created
  Normal  Sync       18m                  loadbalancer-controller  TargetProxy "k8s2-tp-opm63ww1-default-frontend-ingress-8gn6ll7p" created
  Normal  Sync       18m                  loadbalancer-controller  ForwardingRule "k8s2-fr-opm63ww1-default-frontend-ingress-8gn6ll7p" created
  Normal  Sync       18m                  loadbalancer-controller  TargetProxy "k8s2-ts-opm63ww1-default-frontend-ingress-8gn6ll7p" created
  Normal  IPChanged  18m                  loadbalancer-controller  IP is now 34.106.6.15
  Normal  Sync       18m                  loadbalancer-controller  ForwardingRule "k8s2-fs-opm63ww1-default-frontend-ingress-8gn6ll7p" created
  Normal  Sync       16m                  loadbalancer-controller  UrlMap "k8s2-um-opm63ww1-default-frontend-ingress-8gn6ll7p" updated
  Normal  Sync       16m                  loadbalancer-controller  TargetProxy "k8s2-tp-opm63ww1-default-frontend-ingress-8gn6ll7p" updated
  Normal  Sync       2m18s (x8 over 19m)  loadbalancer-controller  Scheduled for sync

如何使我的web应用正常工作?

提前谢谢你。

共有1个答案

阎功
2023-03-14

显然,我相信GCE入口必须有defaultBackend,请参阅我的问题DefaultBackend是否是入口(gce)的强制要求?

 类似资料:
  • 在通过eclipse上传应用程序后,我收到了502坏网关错误,我不明白为什么会发生这种情况? 我通过AWS弹性豆茎控制台创建了一个示例应用程序。然后我在eclipse中加载了服务器。之后我发布了它,并在EB控制台中获得了“环境更新成功完成”的消息。然而,当我转到网址时,我得到一个502坏网关错误。我看了日志,看看出了什么问题,但我唯一发现的是 连接到上游时失败(111:连接被拒绝),客户端:172

  • 本文向大家介绍解析服务器常见错误代码500、501、502、503、504、505,包括了解析服务器常见错误代码500、501、502、503、504、505的使用技巧和注意事项,需要的朋友参考一下 一:500错误 1、500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。 2、500出错的可能性:   a、编程语言语法错误,

  • 使用单选查询创建输入控件时,如果在值或可见字段中包含任何原始ID(如GUID),服务器将引发运行时异常: Jasperreports服务器版本:6.6.0 如何复制:上载任何示例报告并编辑此报告。通过选择单选查询选项,将输入控件添加到此报表。填写必填字段,并在“定义查询”页面上添加以下查询 然后在“设置参数值”页面上,输入ID作为值列,输入ID作为可见列。提交并保存输入控件和报告。执行此报告时,J

  • 我的问题与生成报告时的错误有关。 在JasperReports Server中创建了一个单输入控制值,但当您尝试生成报告时,我得到了错误: 在预览版iReport中,一切都完美无瑕。我将输入值并生成报告。

  • 我创建了一个简单的AWS Lambda函数,使用python 3.6添加两个数字。它读取 Lambda函数 JSON主体

  • 在AWS EKS上,我有ALB入口控制器,入口资源指向端口32509上的NodePort服务,目标端口80,服务上有。 在这种情况下,外部流量如何在NodePort服务下路由到我的pod? 类似于,ALB