Kubernetes Istio Pilot正在创建应为HTTP的TCP侦听器

Kubernetes Istio Pilot正在创建应为HTTP的TCP侦听器,kubernetes,istio,Kubernetes,Istio,设置为Kubernetes v1.13和Istio 1.0.5 我遇到了一个问题,Istio服务发现正在创建与TCP侦听器而不是HTTP侦听器匹配的特使配置 通信在服务网格中工作,但我需要特使作为第7层代理,而不是第4层传递。我没有获得通过特使发送的HTTP请求所需的日志 以下是我在sidecar ISIO代理日志中看到的内容: [2019-02-05T15:40:59.403Z]-5739 7911 149929“127.0.0.1:80”入站| 80 | api-endpoint.defau

设置为Kubernetes v1.13和Istio 1.0.5

我遇到了一个问题,Istio服务发现正在创建与TCP侦听器而不是HTTP侦听器匹配的特使配置

通信在服务网格中工作,但我需要特使作为第7层代理,而不是第4层传递。我没有获得通过特使发送的HTTP请求所需的日志

以下是我在sidecar ISIO代理日志中看到的内容:

[2019-02-05T15:40:59.403Z]-5739 7911 149929“127.0.0.1:80”入站| 80 | api-endpoint.default.svc.cluster.local 127.0.0.1:44560 10.244.3.100:80 10.244.3.105:35204

当我检查侧车中的特使配置时,这是该日志消息的相应配置

      "name": "envoy.tcp_proxy",
      "config": {
       "cluster": "inbound|80||api-endpoint.default.svc.cluster.local",
       "access_log": [
        {
         "name": "envoy.file_access_log",
         "config": {
          "path": "/dev/stdout",
          "format": "[%START_TIME%] %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% \"%UPSTREAM_HOST%\" %UPSTREAM_CLUSTER% %UPSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_REMOTE_ADDRESS%\n"
         }
        }
       ],
       "stat_prefix": "inbound|80||api-endpoint.default.svc.cluster.local"
      }

因此,我的问题是:为什么Pilot要为Environment提供HTTP服务的TCP配置?

我遇到了这个问题,在我的情况下,我的服务的端口名的格式不是
HTTP xyz

Istio/ENVEGENT假定通信量是TCP,除非它从端口名得到提示,表明它是其他协议

依照

命名端口:必须命名服务端口

端口名必须采用协议后缀的形式,并以http、http2、grpc、mongo或redis作为协议,以便利用Istio的路由功能

例如,name:http2foo或name:http是有效的端口名,但name:http2foo不是。如果端口名不以可识别的前缀开头,或者如果端口未命名,则端口上的流量将被视为普通TCP流量(除非端口明确使用Protocol:UDP表示UDP端口)


就这样。。。啊。文件中完全没有提到。非常感谢。