有没有办法隔离 Istio 服务网格中的部署?



我正在尝试了解微服务架构和不同的微服务相互交互。我写了一个简单的基于微服务的Web应用程序,并对此有疑问。如果一个服务有多个版本正在运行,那么负载均衡很容易由 Istio 中的特使 siedcar 管理。我的问题是,如果在其中一个版本中检测到一些漏洞,有没有办法将 pod 与接收更多流量隔离开来。

我们可以在虚拟服务和适当的路由规则的帮助下手动执行此操作。但是它可以根据一些触发事件动态执行吗?

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: VirtualServiceName
spec:
hosts:
- SomeHost
http:
- route:
- destination:
host: SomeHost
subset: v1
weight: 0
- destination:
host: SomeHost
subset: v2
weight: 100

任何帮助不胜感激

根据 istio 文档,您可以使用 LocalityLoadBalancerSetting 配置故障转移。

如果操作员的目标不是跨区域和区域分配负载,而是限制故障转移的区域性以满足其他操作要求,则操作员可以设置"故障转移"策略而不是"分发"策略。

以下示例为区域设置本地故障转移策略。假设服务驻留在美国东部、美国西部和欧洲西部的区域中,此示例指定当美国东部的终结点变得不正常时,流量应故障转移到欧洲西部任何区域或子区域中的终结点,同样,美国西部应故障转移到美国东部。

failover:
- from: us-east
to: eu-west
- from: us-west
to: us-east

故障转移需要进行异常值检测才能正常工作。

但它更适用于区域/区域而不是 pod。


如果是关于 pod,你可以看看这个 istio 文档

虽然 Istio 故障恢复功能提高了网格中服务的可靠性和可用性,但应用程序必须处理故障或错误并采取适当的回退操作。例如,当负载均衡池中的所有实例都失败时,Envoy 会返回 HTTP 503 代码。应用程序必须实现处理 HTTP 503 错误代码所需的任何回退逻辑。

看看这个和这个github问题。

在 HTTP 健康检查期间,Envoy 会向上游主机发送 HTTP 请求。默认情况下,如果主机运行正常,它需要 200 响应。预期的响应代码是可配置的。如果上游主机希望立即通知下游主机不再向其转发流量,则可以返回 503。


我希望你觉得这有用。

最新更新