![cover](https://img-blog.csdnimg.cn/97a80e803a32489da18b464622b800db.jpeg)
istio 常见问题排查
istio场景问题排查
·
配置校验
istioctl validate
istioctl validate
可用于校验 istio 配置文件规则,即:验证YAML文件。
istioctl analyze
istioctl analyze
可用于检查istio配置潜在的问题。
如,校验某命名空间下资源配置:
$ istioctl analyze --namespace=bookinfo
2022-06-21T12:39:20.119874Z warn networking.istio.io/v1alpha3/Gateway resource [bookinfo/bookinfo-gateway1] could not be found
Error [IST0101] (VirtualService bookinfo/bookinfo) Referenced gateway not found: "bookinfo-gateway1"
Warning [IST0132] (VirtualService bookinfo/bookinfo) one or more host [*] defined in VirtualService bookinfo/bookinfo not found in Gateway bookinfo/bookinfo-gateway1.
Error: Analyzers found issues when analyzing namespace: bookinfo.
See https://istio.io/v1.13/docs/reference/config/analysis for more information about causes and resolutions.
资源 status
默认情况下,istio 资源是没有 status 字段,需单独进行配置来开启。
配置方法参考:Configuration Status Field
- 修改
istio-sidecar-injector
ConfingMap 中的 istiod.enableAnalysis 为 true(values 配置项); - 添加 istiod 的环境变量
PILOT_ENABLE_STATUS=true
(上述配置完后,istio 资源中会自动出现 status 字段)
实际配置时,发现 istio 1.9.0 版本未配置生效,在 1.13.4 版本配置生效。
与 istioctl analyze
对比发现,status 字段展示的信息并不完善:
-
status:并没有体现出潜在的配置问题。
(细看发现,该特性属于 Alpha 版本,静待后续稳定版本吧。)
status: conditions: - lastProbeTime: "2022-07-01T09:21:51.977984805Z" lastTransitionTime: "2022-07-01T09:21:51.977984930Z" message: 36/36 proxies up to date. status: "True" type: Reconciled observedGeneration: "4"
-
istioctl analyze:分析结果一目了然。
% istioctl analyze -n bookinfo
2022-07-01T09:40:39.338911Z warn networking.istio.io/v1alpha3/Gateway resource [bookinfo/bookinfo-gateway1] could not be found
Error [IST0101] (VirtualService bookinfo/bookinfo) Referenced gateway not found: "bookinfo-gateway1"
Warning [IST0132] (VirtualService bookinfo/bookinfo) one or more host [*] defined in VirtualService bookinfo/bookinfo not found in Gateway bookinfo/bookinfo-gateway1.
Error: Analyzers found issues when analyzing namespace: bookinfo.
See https://istio.io/v1.13/docs/reference/config/analysis for more information about causes and resolutions.
messages说明:istio/pkg/config/analysis/msg/messages.yaml
no healthy upstream
Istio Ingress resulting in “no healthy upstream”
redis、mysql等注入边车后,无法连接问题
通过DestinationRule 禁用 Redis Service 的 mTLS:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: redis-disable-mtls
spec:
host: redis.default.svc.cluster.local
trafficPolicy:
tls:
mode: DISABLE
参考:
TCP协议服务故障注入(如:redis)
目前istio故障注入是通过VS实现对http协议的故障,针对TCP协议还未直接支持。
为了解决TCP协议类服务的故障注入,可以采取以下两种方式实现:
- 基于 Envoy 的 RedisProxy能力 ,网格内的 Redis 流量将经由 Envoy 代理,通过配置EnvoyFilter来实现。(待验证)
- 通过 VS 将匹配到redis端口, 路由到一个未知的service 来实现。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: redis-route
namespace: redis
spec:
hosts:
\- devops-redis.redis.svc.cluster.local
tcp:
match:
\- port: 6379
route:
destination:
host: devops-redis-unknown.redis.svc.cluster.local
port:
number: 6379
参考:
更多推荐
所有评论(0)