我有一个GKE集群与FastAPI服务,我试图安装证书与“谷歌托管证书”,所以我可以通过https访问它.证书安装按预期工作,我可以使用https访问它,但当我尝试访问我的API时遇到问题,它返回502并显示以下错误:
服务器错误服务器遇到临时错误,无法完成您的请求。请在30秒后重试。
我已经等了很长时间,但它只是没有固定,我的东西有一些错误的路由,但我已经尝试了很多事情,仍然困惑,为什么它仍然没有工作。我也已经尝试了从谷歌Using Google-managed SSL certificates提供的文档,但仍然得到502。
下面是我所有与这个案例相关的yaml文件:
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: noctis-stg
spec:
replicas: 1
selector:
matchLabels:
app: noctis-stg
template:
metadata:
labels:
app: noctis-stg
spec:
containers:
- name: noctis-stg
image: asia-southeast1-docker.pkg.dev/#####/######/#######:#####
ports:
- containerPort: 80
volumeMounts:
- name: noctis-stg-env
mountPath: /code/.env
subPath: .env
volumes:
- name: noctis-stg-env
configMap:
name: noctis-stg-env
字符串
service.yaml
apiVersion: v1
kind: Service
metadata:
name: noctis-stg
spec:
type: NodePort
selector:
app: noctis-stg
ports:
- protocol: TCP
port: 80
targetPort: 80
型
managed-cert.yaml
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: managed-cert-stg
spec:
domains:
- stg.noctis.test-domain.com
型
managed-cert-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: managed-cert-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: global-noctis-stg
networking.gke.io/managed-certificates: managed-cert-stg
kubernetes.io/ingress.class: "gce"
spec:
tls:
- secretName: tls-secret-stg
rules:
- host: stg.noctis.test-domain.com
http:
paths:
- path: /*
pathType: ImplementationSpecific
backend:
service:
name: noctis-stg
port:
number: 80
型
如果有人能帮我解决这个问题,那就太好了。
1条答案
按热度按时间dz6r00yl1#
此错误主要发生在Ingress后端为
unhealthy
或failed to pick backend
时,您可以在日志中找到,下面的故障排除步骤可以帮助您解决问题:1.创建GKE入口时,将服务类型更改为
NodePort
。2.检查防火墙规则是否配置正确。
对于入口遵循此documentation,如果您使用外部入口遵循外部入口产生HTTP 502错误.
如果您找到错误
backend_connection_closed_before_data_sent_to_client
的日志,您必须配置后端使用的Web服务器软件,使其保持活动超时时间超过600秒,以防止后端过早关闭连接。请参阅描述外部HTTP(S)负载平衡有两种不同类型的超时的文档,以及关于日志中的消息的其他文档。
有关502错误的更多故障排除步骤,请参阅此官方文档。