本地Kubernetes群集上的Istio Ingress网关无法路由流量(Linux容器)

时间:2020-07-19 22:03:23

标签: kubernetes kubernetes-ingress istio

我有一个演示应用程序,用于测试本地docker,本地Kubernetes和Istio设置。我最初将演示服务公开为type = NodePort,并且在没有Istio的情况下在http:// localhost:上运行良好。 然后,我尝试安装Istio,并将服务配置为ClusterIP,然后通过Istio-IngressGateway和VirtualService公开它,基本配置为内联:

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错误。 Service,VS,Gateway在群集上一切正常。 由于我是新手,因此不确定Istio或Kubernetes是否在这里缺少基本知识。

1 个答案:

答案 0 :(得分:0)

istio-ingressgateway和virtualservice的配置看起来不错。 IstioByExample(link)有几个在各种用例中使用istio的示例。

由于尝试在本地访问服务时遇到404错误,因此我怀疑istio sidecar未安装在服务本身中。 Istio具有启用自动边车部署(link)的配置,该功能可以在部署新Pod时安装边车。我还建议您仔细阅读本书样本(link),以了解其中的各个组成部分。

样本中的一些片段是

要启用Sidecar注入-使用

$ kubectl label namespace default istio-injection=enabled

启用sidecar注入后,再次执行部署,因为它将在后续部署(以前未部署)中起作用

如果这行得通或行不通,请在此处评论,以便我可以尝试查看导致问题的其他原因。