如何解决Istio无法将请求路由到具有不同目标端口的工作负载
我创建了一个k8s服务类型的负载均衡器,监听端口80,同时将目标端口设置为8080,该端口与容器公开的端口相同。当我尝试从浏览器通过简单的http get调用服务时,Istio不会将请求路由到工作负载容器,而是在超时后重置请求。
我还有一个虚拟服务,该服务通过端口80(为该服务配置的唯一端口)路由到该服务。如果服务端口和容器端口相同,则可以使用相同的配置。
我的kubernetes集群实际上是AKS。 这是Istio中的限制吗?我是否缺少Istio的任何配置?我也尝试过边车在80/8080上接收请求并将其绑定到127.0.0.1:8080,但没有运气。
解决方法
当我尝试通过浏览器从简单的http get调用服务时,Istio不会将请求路由到工作负载容器,而是在超时后重置请求。
如果您使用istio,则服务类型应为ClusterIP,而不是LoadBalancer,并且您应将istio Ingress网关服务与相应的gateway和{{3 }}来管理来自外部(浏览器)的流量。
来自外部的流量-> istio入口网关->网关->虚拟服务-> [特使边车代理->吊舱]
如果要在网格内的Pod之间进行通信,则可以使用clusterIP服务的ip或dns名称。
我还有一个虚拟服务,该服务通过端口80(为该服务配置的唯一端口)路由到该服务。如果服务端口和容器端口相同,则可以使用相同的配置。
那是正确的方法。
我建议从virtual service开始,以了解其工作原理。
我的kubernetes集群实际上是AKS。这是Istio中的限制吗?还是我缺少Istio的任何配置?
在AKS上唯一需要添加的就是将注释添加到istio-ingressgateway服务。
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
您可以使用bookinfo application进行设置。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
profile: default
components:
ingressGateways:
- name: istio-ingressgateway
enabled: true
k8s:
serviceAnnotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。