kubernetes - 有没有办法隔离 Istio 服务网格中的部署?
问题描述
我正在尝试了解微服务架构和不同的微服务之间的交互。我编写了一个简单的基于微服务的 Web 应用程序,但对此有疑问。如果一个服务有多个版本在运行,负载均衡很容易由 Istio 中的 envoy 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 配置故障转移。
如果运营商的目标不是跨区域和区域分配负载,而是限制故障转移的区域性以满足其他运营要求,则运营商可以设置“故障转移”策略而不是“分布”策略。
以下示例为区域设置本地故障转移策略。假设服务驻留在 us-east、us-west 和 eu-west 内的区域中,此示例指定当 us-east 内的端点变得不健康时,流量应故障转移到 eu-west 内的任何区域或子区域中的端点,类似地我们- west 应该故障转移到 us-east。
failover:
- from: us-east
to: eu-west
- from: us-west
to: us-east
故障转移需要进行异常值检测才能正常工作。
但它更适用于区域/区域而不是 pod。
如果是关于 pod,你可以看看这个istio 文档
虽然 Istio 故障恢复功能提高了网格中服务的可靠性和可用性,但应用程序必须处理故障或错误并采取适当的回退操作。例如,当负载均衡池中的所有实例都失败时,Envoy 返回 HTTP 503 代码。应用程序必须实现处理 HTTP 503 错误代码所需的任何回退逻辑。
在 HTTP 健康检查期间,Envoy 将向上游主机发送 HTTP 请求。默认情况下,如果主机健康,它会收到 200 响应。预期的响应代码是可配置的。如果上游主机想立即通知下游主机不再向其转发流量,上游主机可以返回 503。
希望这个对你有帮助。
推荐阅读
- firebase - 我可以使用哪个 oAuth 2.0 流程进行服务器到服务器的令牌发行?
- c# - 重定向在某些 MVC 视图中不起作用?
- sql - 如何使用 Angular 制作简单的网络核心身份验证 api?
- python - 随着时间的推移绘制一个不同命名的元组列表
- html - JAWS 在读取第一个元素之前读取父标签的标签
- haskell - 当您给出正确的类型时,修复的最佳方法无法匹配预期的类型(可能不是)
- java - 有没有办法感知玩家传出的聊天消息?我的世界锻造 1.16.1
- android - 如何在视图分页器选项卡中切换列表片段和详细信息片段?
- android - 从服务发送隐式意图
- java - Spring Boot 测试中出现 HTTP 401 Unauthorized 错误