У меня есть микросервис nodejs, работающий на GKE, который обслуживает ресурсы html / js на сайтах наших клиентов.Конфигурация для этого выглядит следующим образом: Ingress> NodePort Service> Pods (4 реплики).Если в течение какого-то сезона происходит сбой в работе стручков или происходит отказ узла, микросервису потребуется 30 секунд до истечения времени ожидания.Это приводит к задержке загрузки страниц для наших клиентов.Что мне нужно сделать, так это в случае сбоя, когда служба NodePort отключает соединение или через 2 секунды выдает ошибку 502.
Я пробовал два способа манипулирования одним и тем же параметром.Первый - это создание BackendConfig по следующим документам: https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service
Моя конфигурация выглядит следующим образом:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: timeout-config
spec:
timeoutSec: 2
Затем я подключил его к своему сервису так:
apiVersion: v1
kind: Service
metadata:
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"80":"timeout-config"}}'
labels:
run: <MICROSERVICE>
name: <MICROSERVICE>
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 3000
selector:
run: <MICROSERVICE>
type: NodePort
Я протестировал эту конфигурацию, заставляя мой микросервис чередовать возврат 200 и 502 для конечной точки проверки работоспособности каждые 30 секунд.Это вызывало перезапуск стручка примерно каждые 30 секунд, что прерывало связь со стручком.Я ожидал, что после перезапуска запрос перестанет работать и по умолчанию настроится на 2-секундные настройки, которые я настроил.Тем не менее, все еще потребовалось 30 секунд, чтобы получить ошибку 502.
Второй метод, который я попробовал, состоял в том, чтобы установить тайм-аут на 2 секунды, используя gcloud.Я сделал это, следуя документам здесь: https://github.com/kubernetes/ingress-gce/blob/e72479ba461fedae5fc5bf64999f28ba3125004d/examples/websocket/README.md#change-backend-timeout
Этот метод тоже не работал.Какие еще методы я могу использовать, чтобы тайм-аут моего сервиса через 2 секунды на GKE?