Как настроить тайм-ауты запроса Ingress на GKE
В настоящее время у меня есть Ingress, настроенный на GKE (k8s 1.2) для пересылки запросов к моим приложениям. У меня есть запрос, который может занять много времени ( 30 секунд) и тайм-аут из моей заявки (504). Я замечаю, что при этом ответ, который я получаю, не является моим собственным 504, а 502 из того, что выглядит как Google Loadbalancer после 60 секунд.
Я играл с разными кодами состояния и продолжительностью, ровно через 30 секунд я начал получать это странное поведение, независимо от того, какой код состояния испущен.
Кто-нибудь знает, как я могу это исправить? Есть ли способ перенастроить это поведение?
Ответы
Ответ 1
При создании входа в GKE настройка по умолчанию заключается в том, что балансировщик нагрузки GLBC HTTP будет создан с предоставленными вами серверными компонентами. По умолчанию он настроен на 30-секундный тайм-аут для вашего приложения для обработки запроса.
Если вам требуется более длительное время ожидания, вы должны отредактировать его вручную после настройки в бэкэндах своего балансировщика нагрузки HTTP в облачной консоли Google.
![enter image description here]()
Ответ 2
Начиная с 1.11.3-gke.18, можно настроить параметры тайм-аута в kubernetes напрямую.
Сначала добавьте backendConfig:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
Затем добавьте аннотацию в Service для использования этого backendConfig:
apiVersion: v1
kind: Service
metadata:
name: my-bsc-service
labels:
purpose: bsc-config-demo
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"80":"my-bsc-backendconfig"}}'
spec:
type: NodePort
selector:
purpose: bsc-config-demo
ports:
- port: 80
protocol: TCP
targetPort: 8080
И альт, ваш балансировщик входной нагрузки теперь имеет время ожидания 40 секунд вместо стандартных 30 секунд.
Видеть https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service#creating_a_backendconfig