FAQ
如何查看当前已经通过Istio配置好的规则?
使用
istioctl get routerules -o yaml或kubectl get routerules -o yaml可以查看规则。我创建了一个权重路由规则,想把流量分配到某个服务的两个版本上,但无法看到预期行为。
对于目前的Envoy sidecar实现,100次以上的请求才可能是能被观测到的理想分布。
创建路由规则后为什么部分服务不可用了?
这是目前Envoy sidecar实现的一个已知问题。在创建规则2秒以后,服务就应当可用。
可以不设置路由规则直接使用标准Ingress规格吗?
主机、TLS和基于扩展路径匹配的简单ingress规格,都可以开箱即用,而无需路由规则。但需要注意的是,ingress资源所用的路径不能包含
.字符。举个例子,下列ingress资源匹配example.com主机上的/helloworld请求。
cat <<EOF | kubectl create -f -apiVersion: extensions/v1beta1kind: Ingressmetadata:name: simple-ingressannotations:kubernetes.io/ingress.class: istiospec:rules:- host: example.comhttp:paths:- path: /helloworldbackend:serviceName: myserviceservicePort: grpcEOF
但是下列规则并不能工作,因为在路径中使用了正则表达式,并使用了
ingress.kubernetes.io注释。cat <<EOF | kubectl create -f -apiVersion: extensions/v1beta1kind: Ingressmetadata:name: this-will-not-workannotations:kubernetes.io/ingress.class: istio# Ingress annotations other than ingress class will not be honoredingress.kubernetes.io/rewrite-target: /spec:rules:- host: example.comhttp:paths:- path: /hello(.*?)world/backend:serviceName: myserviceservicePort: grpcEOF
