как я могу изменить значение proxy_timeout службы TCP по умолчанию в поддерживаемом Kubernetes nginx ingress?

#nginx #kubernetes #nginx-ingress

#nginx #kubernetes #nginx-ingress

Вопрос:

Я попытался изменить значение proxy_timeout по умолчанию (600 секунд) на 3600 секунд для служб tcp в nginx-входе, поддерживаемом k8s.Но это не работает.

Я выполнил модули nginx-controller и получил следующее в nginx.conf.

 # TCP services

server {
        preread_by_lua_block {
                ngx.var.proxy_upstream_name="tcp-test-test-db-test-lb-dev-7687";
        }

        listen                  7687;

        proxy_timeout           600s;
        proxy_pass              upstream_balancer;

}
  

я использовал следующую конфигурационную карту и обнаружил, что она не работает.Я все еще получаю тайм-аут в 600 секунд.

 apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
  annotations:
    ingress.kubernetes.io/proxyTimeout: 3600s
    ingress.kubernetes.io/proxy-stream-timeout: 3600s
    ingress.kubernetes.io/proxy-connect-timeout: 3600s
    ingress.kubernetes.io/proxy-read-timeout: 3600s
    ingress.kubernetes.io/proxy-send-timeout: 3600s
    ingress.kubernetes.io/proxy_timeout: 3600s
data:
   7687: "test-test-db/test-lb-dev:7687"
   8687: "test-test-db/test-lb-test:8687"
  

Кто-нибудь, пожалуйста, помогите мне устранить эту проблему.

Ответ №1:

При использовании этих аннотаций вы должны установить для них числовые (integer) значения. Например:

  ingress.kubernetes.io/proxy-stream-timeout: "3600"
  

вместо:

 ingress.kubernetes.io/proxy-stream-timeout: 3600s
  

Если вам нужна более подробная информация о параметрах тайм-аута, пожалуйста, ознакомьтесь с официальными документами.

Комментарии:

1. спасибо за ответ, тогда я думаю ingress.kubernetes.io/proxy-stream-timeout : «3600s», поскольку он принимает строку в соответствии с документом, который вы упомянули

Ответ №2:

Аннотации не работают в tcp-сервисах для обновления proxy_timeout параметра в nginx. Вам нужно обновить configmap ingress-nginx-controller и добавить proxy-stream-timeout: "3600s" в data . (Пример ниже)

 apiVersion: v1
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  proxy-connect-timeout: "10"
  proxy-read-timeout: "120"
  proxy-send-timeout: "120"
  proxy-stream-timeout: "3600s"
  

Ответ №3:

Это неверно. Не в tcp-cm и не в качестве аннотации. Добавьте в качестве данных -> proxy-stream-timeout: 3600 в другую конфигурационную карту.