gpt4 book ai didi

Kubernetes 入口(特定 APP)504 网关超时 60 秒

转载 作者:行者123 更新时间:2023-12-04 16:39:33 39 4
gpt4 key购买 nike

我们有一个带有 k8s + Rancher 2(3 个节点)和一个外部 nginx 的环境,根据这个文档,它只将连接转发到 k8s 集群:https://rancher.com/docs/rancher/v2.x/en/installation/k8s-install/
在此环境中运行的特定应用程序中,当我们执行 POST 时(因为此 POST 大约需要 3 到 4 分钟才能完成),它会在 60 秒后被消息“504 Gateway Time-Out”中断。我尝试应用特定的注释来更改超时,如下所示,但无济于事:
应用入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-loteamento-spring-hml
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/server-snippet: "keepalive_timeout 3600s;client_body_timeout 3600s;client_header_timeout 3600s;"
labels:
run: api-loteamento-spring-hml
spec:
rules:
- host: hml-api-loteamento-sp.gruposfa.bla.bla
http:
paths:
- backend:
serviceName: api-loteamento-spring-hml
servicePort: 80
我还尝试使用以下参数创建全局 ConfigMap,但也没有成功:
[rancher@srv-rcnode01 ssl]$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
default-http-backend-67cf578fc4-lcz82 1/1 Running 1 38d
nginx-ingress-controller-7jcng 1/1 Running 11 225d
nginx-ingress-controller-8zxbf 1/1 Running 8 225d
nginx-ingress-controller-l527g 1/1 Running 8 225d
[rancher@srv-rcnode01 ssl]$ kubectl get pod nginx-ingress-controller-8zxbf -n ingress-nginx -o yaml |grep configmap
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
[rancher@srv-rcnode01 ~]$ cat global-configmap.yaml
apiVersion: v1
data:
client-body-timeout: "360"
client-header-timeout: "360"
proxy-connect-timeout: "360"
proxy-read-timeout: "360"
proxy-send-timeout: "360"
kind: ConfigMap
metadata:
name: nginx-configuration
并申请:
kubectl apply -f global-configmap.yaml
访问入口 Pod 并检查 nginx.conf,我看到根据应用程序块内设置的参数创建了注释:
[rancher@srv-rcnode01 ~]$ kubectl -n ingress-nginx exec --stdin --tty nginx-ingress-controller-8zxbf -- /bin/bash
并查看 nginx.conf
keepalive_timeout 3600s;client_body_timeout 3600s;client_header_timeout 3600s;

# Custom headers to proxied server


proxy_connect_timeout 3600s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
我在“服务器”配置块中的 nginx.conf 文件开头注意到它具有默认的 60 秒超时值:
# Custom headers to proxied server

proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

在这种情况下,我的问题是这些值是否会干扰此问题,以及如何在 k8s 中更改这些值?
有没有人经历过这种情况或什么,可以给我一个北方?
谢谢!!

最佳答案

您想要达到的目标在Nginx Documentation 中有提到在 Custom Configuration .推荐使用 ConfigMap .

$ cat configmap.yaml
apiVersion: v1
data:
proxy-connect-timeout: "10"
proxy-read-timeout: "120"
proxy-send-timeout: "120"
kind: ConfigMap
metadata:
name: ingress-nginx-controller

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/docs/examples/customization/custom-configuration/configmap.yaml \
| kubectl apply -f -

If the Configmap it is updated, NGINX will be reloaded with the new configuration.


之后,在 Ingress controller pod,您应该会看到如下条目:
8 controller.go:137] Configuration changes detected, backend reload required.
8 controller.go:153] Backend successfully reloaded.
但是,请记住,不建议为 Nginx 设置更高的超时值。 .此信息可在 Nginx Ingress - proxy-connect-timeout 中找到:

Sets the timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75 seconds.


附加信息:
1. 有时,当 Nginx Ingress无法加载新配置,您可以找到如下日志:
controller.go:149"] - Unexpected failure reloading the backend": Invalid PID number "" in "/tmp/nginx/pid"
要修复它,您只需要重新启动 Ingress pod .
2. 如果你不喜欢默认设置,你可以创建一个 config templateGo language .

关于Kubernetes 入口(特定 APP)504 网关超时 60 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63945381/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com