使用 Kubernetes 和 Istio 进行基于容器的全面服务监控
原文链接:https://www.circonus.com/2018/06/comprehensive-container-based-service-monitoring-with-kubernetes-and-istio/
作者:Fred Moyer
译者:殷龙飞
运营容器化基础设施带来了一系列新的挑战。您需要对容器进行测试,评估您的 API 端点性能,并确定您的基础架构中的不良的组件。Istio 服务网格可在不更改代码的情况下实现 API 的检测,并且可以自由的设置服务延迟。但是,你如何理解所有这些数据?用数学的方式,对,就是这样。
Circonus 是 Istio 的第一个第三方适配器。在 之前的文章中,我们讨论了第一个用于监视基于 Istio 的服务的 Istio社区适配器。这篇文章将对此进行扩展。我们将解释如何全面了解您的 Kubernetes 基础设施。我们还将解释如何为基于容器的基础架构增加 Istio 服务网格实现。
Istio 概述
Istio 是 Kubernetes 的服务网格,这意味着它负责所有服务之间的通信和协调,就像网络路由软件为 TCP/IP 流量所做的一样。除了 Kubernetes 之外,Istio 还可以与基于 Docker 和 Consul 的服务进行交互。它与 LinkerD 相似,它已经存在了一段时间。
Istio 是由 Google,IBM,思科和 Lyft 的 Envoy 开发的开源项目。该项目已经有一年的历史了,而 Istio 已经进入了大规模生产环境。在这篇文章发布时,当前版本为 0.8。
那么,Istio 如何融入Kubernetes 生态系统?Kubernetes 充当数据层,Istio 充当控制层。Kubernetes 承载应用程序流量,处理容器编排,部署和扩展。Istio 路由应用程序流量,处理策略执行,流量管理和负载均衡。它还处理遥测联合,如指标,日志和跟踪。Istio 是基于容器的基础设施的交叉防护装置和报告部分。
上图显示了服务网格体系结构。Istio 为每项服务使用了一个 envoy sidecar proxy。Envoy 通过 GRPC 调用代理到 Istio Mixer 服务的入站请求。然后,Mixer 应用流量管理规则,并联合请求遥测。Mixer 是 Istio 的大脑。运维人员可以编写 YAML 文件来控制 Envoy 如何重定向流量。他们还可以指定监测信息推送和可观测性系统的遥测技术。可以在运行时根据需要应用规则,而无需重新启动任何 Istio 组件。
Istio 支持多种适配器将数据发送到各种监控工具。包括普罗米修斯,Circonus 或 Statsd。您也可以同时启用Zipkin 和 Jaeger 追踪。而且,您可以把可视化所涉及的服务生成图形。
Istio 易于部署。回想起来,大约7到8个月之前,您必须通过一系列 kubectl 命令将 Istio 安装到 Kubernetes 群集上。你今天仍然可以。但是现在,您只需在 Google Cloud platform,只需点击几下鼠标即可部署启用了 Istio 的Kubernetes 群集,其中包括监视,跟踪和示例应用程序。您可以很快运行起来,然后使用 istioctl 命令开始玩乐。
另一个好处是我们可以从服务中收集数据,而不需要开发人员对他们的服务进行测试以提供数据。这有很多好处。它减少了维护。它消除了代码中的失败点。它提供了供应商不可知的接口,这减少了供应商绑定的机会。
借助 Istio,我们可以部署不同版本的服务并加权它们之间的流量。Istio 本身使用多个不同的 pods 来操作,如下所示:
kubectl get pods -n is