Я развернул службу gRPC (образ загрузчика с весенней загрузкой) в своем локальном кластере kubernetes. Я следовал этой документации , чтобы правильно настроить манифесты развертывания, обслуживания и входа kubernetes.
Я попытался проверить свой сервис, используя grpcurl:
grpcurl -insecure fortune-teller.mydomain.cloud:443 build.stack.fortune.FortuneTeller/Predict
и запрос все еще застрял на несколько минут.
Во входных журналах (отладка включена) я вижу тайм-аут клиента:
client timed out (110: Connection timed out), client: 1.2.3.4, server: _, request: "POST /grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo HTTP/2.0", host: "fortune-teller.mydomain.cloud:443"
После 4-х тайм-аутов во входных журналах команда заканчивается на стороне клиента:
Error invoking method "build.stack.fortune.FortuneTeller/Predict": failed to query for service descriptor "build.stack.fortune.FortuneTeller": rpc error: code = Internal desc = stream terminated by RST_STREAM with error code: PROTOCOL_ERROR
Я использую nginx/1.13.12
с rancher/nginx-ingress-controller:0.16.2-rancher1
изображением.
На уровне аннотации я тестировал:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
и
nginx.ingress.kubernetes.io/grpc-backend: "true"
и оба имеют одинаковый результат (тайм-аут).
Примечание : я обошел входное тестирование другой службы gRPC напрямую, используя службу kubernetes DNS, и она работает.
Есть идеи, что происходит не так?