安装程序Kubernetes V1.13&Istio 1.0.5
我运行到其中Istio服务发现是建立符合TCP监听器,而不是HTTP侦听特使配置的问题。
通信是工作在服务网格,但我需要特使,作为一个7层代理服务器,而不是一个4层的通过。我没有得到我需要通过特使的HTTP请求日志。
以下是我在车斗istio代理日志中看到:
[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"
}
所以我的问题是:为什么试点提供特使为HTTP服务TCP配置?
我碰到过这样的,在我的情况为我服务的端口名称是不是在形式http-xyz
。
Istio /特使假定交通TCP,除非它从端口名称,这是其他一些协议的提示。
按https://istio.io/help/faq/traffic-management/#naming-port-convention
命名端口:服务端口必须命名。
端口名称必须是形式协议后缀以http,http2,GRPC,蒙戈,或redis的作为协议的,以便采取的Istio的路由功能。
例如,名称:http2foo或名称:http都是有效的端口名称,但名称:http2foo不是。如果端口名称不符合公认的前缀开头,或者如果端口是无名,端口流量将作为普通的TCP流量进行处理(除非该端口明确地使用协议:UDP以表示UDP端口)。