Проблема с переподключением коляски Istio - PullRequest
0 голосов
/ 19 марта 2019

Я использую istio 1.0.6 (без mTLS) в нашем кластере EKS и испытываю проблемы с соединением между двумя модулями, которые я не могу понять.

У меня работает клиент gRPC (abc-client) и сервер (abc-server), написанные на ходу.В кластере включена автоматическая инъекция коляски, поэтому оба работают.
Все работает нормально, если я просто запускаю две службы, но всякий раз, когда сервер перезапускается, клиент не может подключиться к нему.После перезапуска я постоянно получаю следующее сообщение об ошибке на клиенте:

{"level":"error","error":"rpc error: code = Unavailable desc = upstream connect error or disconnect/reset before headers","time":"2019-03-19T12:07:52Z","message":"abc-server service unhealthy"}

Без дополнительной коляски istio переподключение работает немедленно.Когда я просматриваю журналы с коляской abc-client, я вижу множество следующих сообщений о проверках работоспособности, которые пытается выполнить клиент:

2019-03-19T12:09:41.527Z] "POST /grpc.health.v1.Health/CheckHTTP/2" 200 UF 5 0 1002 - "-" "grpc-go/1.15.0" "6a874d67-9c43-4b67-ad24-7337a26cac8d" "abc-server.abc-namespace:8086" "172.31.18.194:8086" outbound|8086||abc-server.abc-namespace.svc.cluster.local - 172.31.18.194:8086 172.31.22.131:44994

Мой вывод из этихВ журналах указывается, что прокси-сервер испытывает проблемы с подключением к вышестоящему серверу, которого там больше нет, поэтому флаг UF (сбой вышестоящего) все еще возвращает клиенту код состояния 200.Мне кажется, что это поведение не вызывает переподключение.

У меня нет настроенных VirtualService или DestinationRule, это просто простой кластер istio с включенными колясками.

Чего мне не хватает?Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 29 марта 2019

Проблема в подключении к безголовым услугам.Моя service.yaml выглядела так:

apiVersion: v1
kind: Service
metadata:
  name: grpc-test-server
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app: grpc-test-server
    role: grpc-test-server
  ports:
    - name: grpc
      port: 9999
      targetPort: grpc

В соответствии с проблемами # 10659 и # 7495 istio еще не работает с безголовыми службами.

Итак, если вам не нужен ваш сервис, чтобы быть безголовым, вы можете просто удалить clusterIP: None из yaml, и все должно работать как положено.

Я до сих пор не знаю, как заставить работать наборы состояний, которые требуют безголовых сервисов.

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