kubernetes - Kubernetes grpc http 2error
问题描述
我在 eks 上部署了一个 grpc 服务,并使用 ingress 公开该服务。我部署了一个演示 https 应用程序,它工作正常。但是,我对 grpc 应用程序有疑问。该服务正在运行,但是当我记录该服务时出现错误。
grpc 请求甚至不去服务器。日志如下
level=info msg="grpc: Server.Serve 未能创建 ServerTransport: 连接错误: desc = \"transport: http2Server.HandleStreams 收到来自客户端的虚假问候:\\"GET / HTTP/1.1\\r\\nHost: 19 \\"\"" 系统=系统
似乎它应该接收 http2 但它只有HTTP/1.1
??
对于入口,我尝试了
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:xxxx
alb.ingress.kubernetes.io/load-balancer-attributes: 'routing.http2.enabled=true'
对于 service.yml
annotations:
service.alpha.kubernetes.io/app-protocols: '{"grpc":"HTTP2", "http": "HTTP2"}'
对于部署的服务,它似乎很好。一旦我部署了入口,它就会一直出现上述错误。
解决方案
不确定 Ingress 是否支持 HTTP2/gRPC。如果你使用 GKE,你可以试试ESP
推荐阅读
- javascript - 将参数传递给 props react-native?
- python - 如何将 API 返回的列表解析为 pandas 数据帧
- python-3.x - 使用 Matplotlib 或 Seaborn 创建感知图
- laravel - Laravel Stevebauman 位置跟踪器无法动态工作
- python - 如何用 Python 中的 original_string 替换 search_character
- git - git put all too master, force, no compare
- r - 小标题中的矩阵乘法
- angular - Firebase 不保存对象的完整数据
- discord.js - 用用户名 Discord.js 替换参数
- bash - 7z 命令的脚本化 Jenkins 管道中具有特殊字符的密码