Kubernetes Istio&x27;s的默认网关不是网关,而是服务

Kubernetes Istio&x27;s的默认网关不是网关,而是服务,kubernetes,istio,istio-gateway,Kubernetes,Istio,Istio Gateway,我试图了解Istio交通路线。我在演示模式下安装了Istio,并开始使用示例。这些示例让您安装了一些网关(我安装了bookinfogateway和httpbin网关) apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: httpbin spec: gateways: - httpbin-gateway [...] 但我的所有通信似乎都通过istio-ingresgateway中定

我试图了解Istio交通路线。我在演示模式下安装了Istio,并开始使用示例。这些示例让您安装了一些网关(我安装了
bookinfogateway
httpbin网关

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin
spec:
  gateways:
  - httpbin-gateway
[...]
但我的所有通信似乎都通过
istio-ingresgateway
中定义的
istio-system
命名空间中的“http2”端口

提到这一点:

Istio提供了一些预配置的网关代理部署(Istio ingressgateway和Istio ExgressGateway),您可以使用它们-如果您使用我们的演示安装,这两种部署都是部署的

但是当我运行时:
kubectl-nistio system get service istio-ingresgateway-o yaml
结果显示
kind:service

演示让我制作的其他网关显示
kind:Gateway

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin
spec:
  gateways:
  - httpbin-gateway
[...]
所以我感到困惑

  • 服务和网关之间有区别吗
  • 如何使用示例应用程序网关而不是
    istio-ingresgateway
    (这实际上是一项服务)
  • istio如何将我的
    虚拟服务
    连接到
    istio入口网关
    。它只是在查找所有
    虚拟服务
  • 服务和网关之间有区别吗

    • istio入口网关
      是一种类型为
      LoadBalancer
      (或
      NodePort
      ,取决于您的设置)的kubernetes服务,作为集群的入口点。入口网关是istio的入口控制器,是完全可选的
    • gateway
      是istio的自定义资源,用作网格的入口。它通过选择器绑定到入口网关,如
    我如何使用示例应用程序网关而不是istio入口网关(这实际上是一种服务)

    您需要两者(或另一种形式的入口控制器,并通过mesh gateway路由所有流量,详情见下文)

    istio如何将我的虚拟服务连接到istio入口网关。它只是在寻找所有的虚拟服务吗

    再次查看此yaml文件:

    网关绑定到入口网关

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: httpbin-gateway
    spec:
      selector:
        istio: ingressgateway
    [...]
    
    与文件中类似的
    VirtualService
    绑定到
    网关

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: httpbin
    spec:
      gateways:
      - httpbin-gateway
    [...]
    
    因此,如果流量使用您的网关,
    VirtualService

    除了您配置的网关之外,还有mesh网关。因此,如果您希望内部群集流量使用istio配置,您需要将mesh网关添加到您的虚拟服务:

      gateways:
      - httpbin-gateway
      - mesh
    
    或者为此创建一个独立的虚拟服务。如果您没有设置任何网关,将使用mesh网关,因为它是默认的。 请参阅:->网关入口

    服务和网关之间有区别吗

    • istio入口网关
      是一种类型为
      LoadBalancer
      (或
      NodePort
      ,取决于您的设置)的kubernetes服务,作为集群的入口点。入口网关是istio的入口控制器,是完全可选的
    • gateway
      是istio的自定义资源,用作网格的入口。它通过选择器绑定到入口网关,如
    我如何使用示例应用程序网关而不是istio入口网关(这实际上是一种服务)

    您需要两者(或另一种形式的入口控制器,并通过mesh gateway路由所有流量,详情见下文)

    istio如何将我的虚拟服务连接到istio入口网关。它只是在寻找所有的虚拟服务吗

    再次查看此yaml文件:

    网关绑定到入口网关

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: httpbin-gateway
    spec:
      selector:
        istio: ingressgateway
    [...]
    
    与文件中类似的
    VirtualService
    绑定到
    网关

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: httpbin
    spec:
      gateways:
      - httpbin-gateway
    [...]
    
    因此,如果流量使用您的网关,
    VirtualService

    除了您配置的网关之外,还有mesh网关。因此,如果您希望内部群集流量使用istio配置,您需要将mesh网关添加到您的虚拟服务:

      gateways:
      - httpbin-gateway
      - mesh
    
    或者为此创建一个独立的虚拟服务。如果您没有设置任何网关,将使用mesh网关,因为它是默认的。
    请参阅:->网关入口

    这是一个很好的答案!非常感谢。如果我可以问一个后续问题。您的群集中是否有多个
    istio ingressgateway
    ?(例如,我在同一集群中运行开发和测试环境。我想知道我的集群中是否应该有两个
    istio-ingresgateway
    服务。)谢谢!是的,可能有多个ingress gw。请参阅本例第25行和以下内容:这是一个很好的答案!非常感谢。如果我可以问一个后续问题。您的群集中是否有多个
    istio ingressgateway
    ?或者这是不受支持/不需要的?(例如,我在同一个集群中运行开发和测试环境。我想知道我的集群中是否应该有两个
    istio ingressgateway
    服务。)谢谢!是的,可能有多个ingress gw。请参见第25行和下面的示例:和