Istio вызывает частое отключение в потоке grp c - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь настроить поток GRP c из внешнего мира в кластер istio через вход istio. Я могу установить sh соединение, но я вижу сброс соединения каждые 60se c.

Журналы контейнера сообщают "rp c error: code = Unavailable des c" перед разрывом

Заглянул в журналы входа и посланника. ничего особенного. прикрепил их ниже.

INGRESS LOGS
[2020-03-06T12:14:10.221Z] "- - -" 0 - "-" "-" 2679 2552 9993 - "-" "-" "-" "-" "10.244.0.93:5448" outbound|5448||grpc-broker.x-infra.svc.cluster.local 10.244.0.116:58094 10.244.0.116:443 10.222.2.9:37864 <xxxxxx DNS NAME xxxxxxxx> -

ENVOY LOGS
[2020-03-06T12:16:28.331Z] "- - -" 0 - "-" "-" 12021 2733 50282 - "-" "-" "-" "-" "127.0.0.1:5448" inbound|5448|tcp-broker|grpc-broker.x-infra.svc.cluster.local 127.0.0.1:56816 10.244.0.93:5448 10.244.0.116:34782 outbound_.5448_._.grpc-broker.x-infra.svc.cluster.local -

Должны ли мы добавить что-нибудь еще к потоку grp c для работы?

Кластер по умолчанию поддерживает mTLS, исходные и целевые модули являются развертыванием, а не набором состояний.

1 Ответ

0 голосов
/ 11 марта 2020

Со стороны istio, чтобы убедиться, что istio не закрывает соединение.:

Этого можно избежать, установив idleTimeout в DestinationRule.

В соответствии с istio документация о idleTimeout:

Тайм-аут простоя для соединений пула соединений в восходящем направлении. Время ожидания простоя определяется как период, в течение которого нет активных запросов. Если не установлено, время простоя отсутствует. По истечении времени ожидания простоя соединение будет закрыто. Обратите внимание, что тайм-ауты на основе запросов означают, что HTTP / 2 PING не будут поддерживать соединение активным. Относится как к соединениям HTTP1.1, так и к HTTP2.

Итак, если вы сделаете DestinationRule следующим образом:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: grpc-iddletimeout-policy
spec:
  host: grpcservice.servicenamespace.svc.cluster.local
  trafficPolicy:
    connectionPool:
      http:
        idleTimeout: 2m

Это должно закрыть любое соединение HTTP/2 с посланником Istio сторона прокси после простоя в течение 2 минут для grpcservice в servicenamespace пространстве имен.

Надеюсь, это поможет.

...