Я использую 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 с включенными колясками.
Чего мне не хватает?Заранее спасибо за помощь.