kubernetes - 本地 Kubernetes 集群上的 Istio Ingress Gateway 无法路由流量(Linux 容器)
问题描述
我有一个用于测试本地 docker、本地 Kubernetes 和 Istio 设置的演示应用程序。我最初将演示服务公开为 type=NodePort,它在没有 Istio 的 http://localhost:<NodePort#> 上运行良好。然后,我尝试安装 Istio 并将服务配置为 ClusterIP,并通过 Istio-IngressGateway 和 VirtualService 将其公开,基本配置是 inline :
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: demo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: demoservice
spec:
hosts:
- "*"
gateways:
- demo-gateway
http:
- route:
- destination:
host: demo-service
port:
number: 80
部署后,导航到 http://localhost/ 会出现 HTTP 404 错误。服务、VS、网关在集群上一切正常。由于我是新手,我不确定我是否缺少 Istio 或 Kubernetes 的一些基本内容。
解决方案
istio-ingressgateway 和 virtualservice 的配置看起来不错。IstioByExample ( link ) 有几个在各种用例中使用 istio 的示例。
由于您在尝试本地访问服务时收到 404,我怀疑 istio sidecar 未安装在服务本身中。Istio 具有启用自动边车部署(链接)的配置,该配置会在部署新 pod 时安装边车。我还建议您阅读本书示例(链接)以了解它的各种组件。
样本中的一些片段是
要启用边车注入 - 使用
$ kubectl label namespace default istio-injection=enabled
启用 sidecar 注入后再次执行部署,因为它将在后续部署(之前未部署)中工作
如果这有效或无效,请在此处发表评论,以便我可以尝试查看还有什么可能导致问题。
推荐阅读
- javascript - 关于JS中异步执行顺序的问题
- java - 什么时候定义枚举值?
- jquery - jquery 触发鼠标中键单击不起作用?
- visual-studio - 永久删除机器范围的包源
- python - 如何让 HTML 按钮激活 python 脚本?
- python - 找不到正确的异常
- powershell - 通过管理员帐户使用 powershell 删除文件
- asp.net-core - 在 asp .net 核心中使用 HTTPS 的最佳方法是什么?
- typescript - 是否有一种简洁的函数式方法来断言集合中的元素类型?
- asp.net - ASP.NET 中的回发事件和控件更改事件