Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes Istio 1.7.2-有问题的WebSocket连接_Kubernetes_Websocket_Istio - Fatal编程技术网

Kubernetes Istio 1.7.2-有问题的WebSocket连接

Kubernetes Istio 1.7.2-有问题的WebSocket连接,kubernetes,websocket,istio,Kubernetes,Websocket,Istio,我遇到与-Istio入口网关上的WebSocket连接相关的问题 我的群集: Istio-1.7.2,Kubernetes-1.18.6 我正在尝试在新配置集群上运行我的应用程序,我的应用程序在Istio 1.5.1和k8s 1.15.11上运行正常 我有一个问题,正确的WebSocket连接在内部入口通道,其余的功能正在工作 配置: I使用两种Istio入口通道: 默认外部入口通道 apiVersion: networking.istio.io/v1alpha3 kind: Gateway

我遇到与-Istio入口网关上的WebSocket连接相关的问题
我的群集: Istio-1.7.2,Kubernetes-1.18.6

我正在尝试在新配置集群上运行我的应用程序,我的应用程序在Istio 1.5.1和k8s 1.15.11上运行正常

我有一个问题,正确的WebSocket连接在内部入口通道,其余的功能正在工作

配置:

I使用两种Istio入口通道:

  • 默认外部入口通道

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: external-gtw
      namespace: istio-system
      labels:
        app: ingressgateway
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 80
          protocol: HTTP2
          name: http
        hosts:
        - "*"
        tls:
          httpsRedirect: true # sends 301 redirect for http requests
      - port:
          number: 443
          protocol: HTTPS
          name: https-default
        tls:
          mode: SIMPLE
          serverCertificate: "sds"
          privateKey: "sds"
          credentialName: ........
        hosts:
        - "*"
    
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: internal-gtw
      namespace: istio-system
      labels:
        app: internal-gtw
    spec:
      selector:
        app: internal-ingressgateway
      servers:
      - port:
          number: 80
          protocol: HTTP2
          name: http
        hosts:
        - "*"
    
  • 内部入口通道(集群)

交通流示例:

互联网>外部入口通道>Ocelot网关>内部入口通道>服务(pods)

此通信对于http正常工作,但websocket不工作

我发现内部入口通道上的连接断开了

我只看到此日志-内部入口网关吊舱:

[2020-10-12T10:05:16.903Z]“--HTTP/2“0 DPE”--“0 0-”--“0-”--“10.244.2.62:8080 10.244.1.16:58426”-

我在目的地服务中没有看到任何流量

我已经直接在我的目标服务上检查了websocket连接,并且它工作正常

我已尝试更改VirtualService配置-添加“websocketUpgrade:True”-但新Istio上没有此字段

Istio安装: 我使用了istioctl,我的ISTIOperator如下:

你对这些问题有什么想法吗

更新-添加配置:

外部入口通道

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: external-gtw
  namespace: istio-system
  labels:
    app: ingressgateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"
    tls:
      httpsRedirect: true # sends 301 redirect for http requests
  - port:
      number: 443
      protocol: HTTPS
      name: https-default
    tls:
      mode: SIMPLE
      serverCertificate: "sds"
      privateKey: "sds"
      credentialName: ........
    hosts:
    - "*"
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: internal-gtw
  namespace: istio-system
  labels:
    app: internal-gtw
spec:
  selector:
    app: internal-ingressgateway
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"
内部入口通道

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: external-gtw
  namespace: istio-system
  labels:
    app: ingressgateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"
    tls:
      httpsRedirect: true # sends 301 redirect for http requests
  - port:
      number: 443
      protocol: HTTPS
      name: https-default
    tls:
      mode: SIMPLE
      serverCertificate: "sds"
      privateKey: "sds"
      credentialName: ........
    hosts:
    - "*"
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: internal-gtw
  namespace: istio-system
  labels:
    app: internal-gtw
spec:
  selector:
    app: internal-ingressgateway
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"
虚拟服务

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: notificationservice
spec:
  gateways:
  - istio-system/internal-gtw
  hosts:
  - '*'
  http:
  - match:
    - uri:
        prefix: /notificationservice/
    rewrite:
      uri: /
    route:
    - destination:
        host: notificationservice

DestinationRules-目前我不使用

Hi,你能添加网关、虚拟服务和DestinationRules yaml清单吗?@PiotrMalec我将所有配置添加到了主帖子中。感谢investigateHmm,在我看来,http2连接升级在新版本中失败了。您能否尝试将网关/服务配置中的协议名称更改为本节所述的
http
以外的名称?此@merdokss有任何更新吗?你们能解决它吗?嗨,你们能添加网关、虚拟服务和目的地规则yaml清单吗?@PiotrMalec我把所有配置都添加到了主帖子中。感谢investigateHmm,在我看来,http2连接升级在新版本中失败了。您能否尝试将网关/服务配置中的协议名称更改为本节所述的
http
以外的名称?此@merdokss有任何更新吗?你能解决它吗?