Сервис Kubernetes не использует пользовательский тайм-аут - PullRequest
1 голос
/ 14 июня 2019

У меня есть микросервис 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...