Изменение времени удержания узла-прокси-сервера Kubernetes tcp

Как правильно изменить время keepalive TCP для node-proxy?

Я запускаю Kubernetes в Google Container Engine и настроил вход, поддерживаемый HTTP (S) Google Load Balancer. Когда я постоянно делаю POST-запросы на вход, я получаю ошибку 502 ровно один раз каждые 80 секунд или около того. backend_connection_closed_before_data_sent_to_client в облачном протоколе, поскольку это связано с тем, что keepalive GLB tcp (600 секунд) больше, чем keepalive узла-прокси (не знаю, что это такое).

Зарегистрированная ошибка подробно описана на странице https://cloud.google.com/compute/docs/load-balancing/http/.

Спасибо!

Ответ 1

Вы можете использовать пользовательские ресурсы BackendConfig, которые существуют на каждом кластере GKE для настройки времени ожидания и другие параметры, такие как CDN здесь является Документационный

Пример отсюда показывает, как настроить на входе

Это определение BackendConfig:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-bsc-backendconfig
spec:
  timeoutSec: 40
  connectionDraining:
    drainingTimeoutSec: 60

И это как использовать на входе определение с помощью аннотаций

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

Ответ 2

просто для понимания, когда вы используете решение Google для балансировки нагрузки и управления своим Kubernetes Ingress, у вас будут GLBC работающие в пространстве имен kube-system.

Вы можете проверить это с помощью:

kubectl -n kube-system get po

Эти контейнеры предназначены для маршрутизации входящего трафика с фактического балансировщика нагрузки Google.

Я думаю, что время ожидания должно быть настроено там, на GLBC. Вы должны проверить, какие аннотации или ConfigMap GLBC могут потребоваться для настройки, если таковые имеются.

Здесь вы можете найти информацию:

Лично я предпочитаю использовать Nginx Ingress Controller на данный момент, и у него есть необходимые annotations и поддержка ConfigMap.

Увидеть: