腾讯云-Istio案例分析: 流控规则下发顺序问题

2020-11-27 15:30:31 浏览数 (1)

背景

异常描述: 在批量更新流量规则的过程中,偶尔会出现流量异常(503),envoy 日志中 RESPONSE_FLAGS包含「NR」标志(No route configured),持续时间不长,会自动恢复。

原因分析

当用户使用kubectl apply -f multiple-virtualservice-destinationrule.yaml 时,这些对象的传播和生效先后顺序是不保证的,所谓最终一致性,比如VirtualService 中引用了某一个 DestinationRule 定义的子版本,但是这个 DestinationRule 资源的传播和生效可能在时间上落后于 该 VirtualService 资源。

image.pngimage.png

最佳实践:make before break

将更新过程从批量单步拆分为多步骤,确保整个过程中不会引用不存在的 subset:

当新增 DestinationRule subset时,应该先 apply DestinationRule subset,等待 subset 生效后,再 apply 引用了该 subsetVirtualService

当删除 DestinationRule subset 时,应该先 删除 VirtualService 中对 该 subset 的引用,等待 VirtualService 的修改生效后,在执行删除 DestinationRule subset

0 人点赞