我最初创建了一个 EnvoyFilter 来应用于idle_timeout
来自5s
带有标签的工作负载的出站请求app: mecha-dev
。
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: tcp-idle-timeout
spec:
workloadSelector:
labels:
app: mecha-dev
filters:
- listenerMatch:
listenerType: SIDECAR_OUTBOUND
listenerProtocol: TCP
filterName: envoy.tcp_proxy
filterType: NETWORK
filterConfig:
idle_timeout: 5s
然而,该过滤器对我来说不起作用,我发现这是因为我的集群正在使用istio v1.2.5
一个非常旧的版本并且不能EnvoyFilters
正确支持,并且相同的 envoy API 已经被弃用。
因此,我删除了EnvoyFilter
使用kubectl
。
但是,即使删除了过滤器,istio-proxy
sidecar 容器仍然会反复显示以下错误:
[2021-05-11 11:59:14.109][22][warning][config] [external/envoy/source/common/config/grpc_mux_subscription_impl.cc:73] gRPC config for type.googleapis.com/envoy.api.v2.Listener rejected: Error adding/updating listener(s) 10.155.0.113_443: Proto constraint validation failed (TcpProxyValidationError.StatPrefix: ["value length must be at least " '\x01' " bytes"]): idle_timeout {
seconds: 5
}
我删除了 Pod 并重新创建了新 Pod,但这个错误仍然出现。我还需要清理或删除其他内容来消除这个错误吗?
答案1
正如您已经意识到的,EnvoyFilter
Istio 尚不支持1.2.5。
使用旧的、不受支持的软件版本会让您面临此类情况。在这种情况下,最好的办法是升级到 Istio 的新版本并重新创建EnvoyFilter
您最初想要的方式。
filterName
envoy.tcp_proxy
另外,请注意堕落的自特使以来1.4.0. 您应该使用envoy.filters.network.tcp_proxy
。