Проблема с переподключением коляски Istio

Я использую 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 ответ

Проблема заключается в подключении к безголовым услугам. мой 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 от ямля и все должно работать как положено.

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

Другие вопросы по тегам