流量管理的常见问题
怎样查看在 Istio 中已配置的当前路由规则?
可以使用这个命令查看 kubectl get virtualservice -o yaml
Sidecar 代理在哪些端口上截获入站流量?
Istio 默认截获所有端口的入站流量。
您可以通过 traffic.sidecar.istio.io/includeInboundPorts 这个 pod 注解指定一组端口来截获流量,或通过 traffic.sidecar.istio.io/excludeOutboundPorts 指定一组端口来放行流量,以更改这种默认行为。
我可以不配置任何路由规则,使用 Ingress 的标准配置吗?
简单的 Ingress 规范,提供了开箱即用,通过 Host,TLS 以及基本 Path 精确匹配就可以使用,无需配置路由规则。
然而,Path 在使用 Ingress 资源时不应该有任何 . 字符。
比如,下面 Ingress 的资源匹配 Host 为 example.com 以及 URL 为 /helloworld 的请求。
$ kubectl create -f - <<EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: simple-ingress
annotations:
kubernetes.io/ingress.class: istio
spec:
rules:
- host: example.com
http:
paths:
- path: /helloworld
backend:
serviceName: myservice
servicePort: grpc
EOF
然而,这下面的规则将不工作,因为他们在 Path 中使用了匹配表达式,并且添加了 ingress.kubernetes.io 注解。
$ kubectl create -f - <<EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: this-will-not-work
annotations:
kubernetes.io/ingress.class: istio
# Ingress annotations other than ingress class will not be honored
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /hello(.*?)world/
backend:
serviceName: myservice
servicePort: grpc
EOF
Istio 支持哪些协议?
目前,Istio 支持基于 TCP 的协议。此外,Istio 还为其他协议(如 http 和 mysql)提供路由和指标等功能。
对于所有协议列表以及协议配置信息,请查看文档协议选择 。