Kubernetes Istio Pilot正在创建应为HTTP的TCP侦听器
设置为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 当我检查侧车中的特使配置时,这是该日志消息的相应配置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
"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端口)
就这样。。。啊。文件中完全没有提到。非常感谢。