基于 Istio 和 Kubernetes 实现微服务的弹性和容错

  • Srini Penchikala
  • 薛命灯

2018 年 1 月 29 日

话题:语言 & 开发架构KubernetesAI

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

来自 IBM 公司的 Animesh Singh 和 Tommy Li 在近期举行的北美 2017 KubeCon 和 CloudNativeCon 开发者大会上呈现了关于如何使用 Istio 来实现微服务弹性和容错的演讲。

微服务架构为我们带来了高可伸缩性,微服务生态系统包含了大量分布式服务,需要在各个层面进行故障管理,实现弹性和容错。我们还要实现服务级别的访问控制和速率限定。服务网格架构模式将与弹性相关的特性抽离出来,独立于应用程序和框架,以此来实现弹性和容错。

Singh 谈到了容器栈,Docker 和 Kubernetes 处于OSI 模型的第 5 层,是编配和调度服务模型的一部分。他还介绍了 IBM 的云容器服务(Cloud Container Service),可用于管理 Kubernetes 容器。Kubernetes 是微服务的最佳选择,它的容器编配包括了调度、集群管理和服务发现特性,便于部署和管理微服务。

Singh 和 Tommy 列出了构建反应式弹性微服务需要满足的部分要求:

  • 故障避免
  • 故障隔离
  • 故障检测
  • 恢复

服务网格实际上就是存在于服务之间的网络,为微服务带来了弹性。这种轻量级的边车(sidecar)负责管理服务之间的流量。

Istio 是服务网格的一种实现,可用于部署具有弹性的微服务。演讲者介绍了 Istio 的一些相关概念,如PilotMixerProxy,以及控制面板和数据面板。Istio 在不要求应用程序修改任何代码的情况下为应用程序带来了容错能力。容错特性包括超时、无超时重试、回路断路器、健康检测、AZ 负载均衡以及系统性故障注入。

他们介绍了如何使用 Istio 来实现微服务的弹性,如分流和引流(基于内容的引流)。他们在演讲中进行应用程序演示。该应用程序包含了一个自动生成的控制面板,借助 Istio 的故障注入特性手动创建故障场景。他们还模拟了微服务故障,以及从服务网格中观察服务的响应情况。

Singh 和 Tommy 总结了几种基于 Kubernetes 和微服务的开发者模式:

更多有关容器编配和开发者模式的内容可访问他们的网站

查看英文原文Microservices Resiliency and Fault Tolerance Using Istio and Kubernetes

语言 & 开发架构KubernetesAI