美文网首页
istio ingressgateway 负载后端grpc协议服

istio ingressgateway 负载后端grpc协议服

作者: 周周周_e600 | 来源:发表于2019-02-26 20:17 被阅读0次
    image

    疯啦疯啦!这个破问题困扰我好久好久

    问题场景描述

    1. k8s 利用 istio 的ingressgateway 服务负载后端搭建 的 grpc协议的服务
    2. ingressgateway deployment 搭建在 istio-system NameSpace ,dynamicloading (GRPC服务)搭建在default NameSpace 上

    遇见的问题:

    • 首先是无法路由的问题(一直报NR错误)
    • 其次是NameSpace 的问题
    ingress 日志,基本都是 流量打到ingress 后就无法向后端调度
    [2019-02-26T11:25:21.925Z] "POST /grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfoHTTP/2" 200 NR 0 0 0 - "10.16.101.62" "grpc-go/1.12.0" "d3036123-f9c7-9c7a-a4fa-cfd7f02bfb96" "10.16.101.62:80" "-" - - 10.42.16.33:80 10.16.101.62:61364
    
    2019/2/26 下午7:25:22
    

    解决方法(不多赘述,关键点在下面的yaml文件中注释):

    dynamicloading service yaml,解决grpc协议问题
    ...
    spec:
      clusterIP: 10.43.122.80
      ports:
      - name: 6120tcp02
        port: 6120
        protocol: TCP
        targetPort: 6120
      - name: grpc-6125  #### 关键点在这里, name中的定义,要以grpc- 开头,这样就会被识别为grpc协议
        port: 6125
        protocol: TCP
        targetPort: 6125
    ...
    
    grpc服务相关的 gateway 和 virtualservice yaml文件.跨namespace问题
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: dynamicloading-gateway
      namespace: istio-system  #### 因为gateway所关联的ingress 部署在istio namespace 所以这里指明namespace
    spec:
      selector:
        istio: ingressgateway # use Istio default gateway implementation
      servers:
      - port:
          number: 80  ### ingress 暴露端口不懂如何增加自定义端口,所以直接映射的ingress默认端口
          name: grpc
          protocol: HTTP
        hosts:
        #- "dynamic.rc.xxxx.org"
        - "dynamic.i.xxxx.net"
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: dynamicloading
      namespace: istio-system #### 因为gateway所关联的ingress 部署在istio namespace 所以这里指明namespace
    spec:
      hosts:
      #- "dynamic.rc.xxxxx.org"
      - "dynamic.i.xxxxxx.net"
      gateways:
      - dynamicloading-gateway
      http:
      - match:
        - port: 80
        route:
        - destination:
            host: dynamicloading.default.svc.cluster.local #### 路由后端service 由于跨namespace了,所以定义成全名称
            port:
              number: 6125
    

    相关文章

      网友评论

          本文标题:istio ingressgateway 负载后端grpc协议服

          本文链接:https://www.haomeiwen.com/subject/uavzyqtx.html