Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【译文连载】 理解Istio服务网格(第六章 可观测性)

【译文连载】 理解Istio服务网格(第六章 可观测性)

作者头像
SammyLiu
发布于 2020-03-11 03:04:36
发布于 2020-03-11 03:04:36
93000
代码可运行
举报
文章被收录于专栏:世民谈云计算世民谈云计算
运行总次数:0
代码可运行

全书目录

  • 第一章 概述
  • 第二章 安装
  • 第三章 流控
  • 第四章 服务弹性
  • 第五章 混沌测试

本文目录

第6章 可观测性

6.1 分布式调用链跟踪(tracing)

6.1.1 基本概念

6.1.2 Jaeger

6.1.3 Istio对分布式调用跟踪的支持

6.2 遥测(Metric)

6.3 服务图(Service graph)

第6章 可观测性

微服务架构管理中最大的挑战之一是如何通过简单方法就能了解系统各个组件之间的关系。终端用户的一次会话可能会流经多个甚至几十个独立部署的微服务,因此,发现哪里有性能瓶颈或错误变得尤为重要。

本章中,我们会通过Jaeger实现调用链跟踪、通过Grafana和Prometheus实现遥测数据收集和展示,通过Kiali生成服务可视化图。

Istio的Mixer模块由istio-policy和istio-telemetry服务组成,运行在istio-system命名空间的两个独立的pod中。下面的命令能很容易地将它们找出来,因为它们都带有同样的标签:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    oc get pods -l istio=mixer -n istio-system
    oc get services -l istio=mixer -n istio-system

6.1 分布式调用链跟踪(tracing)

通常,了解微服务系统架构所做的第一件事情就是看那些服务参与了终端用户会话。当多个团队部署了大量互相独立的微服务时,要理解它们之间的依赖会非常困难。Istio的Mixer模块带有开箱即用的能力,从分布式服务中获取跟踪跨度(tracing span)。这意味着跟踪功能是与编程语言无关的,因此使用不同语言进行编程的团队都可以使用它。

6.1.1 基本概念

分布式调用链跟踪这概念起源于Google发表的论文《Dapper,大规模分布式系统的跟踪系统》。它具有以下几个核心概念。

OpenTracing:是CNCF(云原生计算基金会)下的一个项目,其中包含了一套分布式调用跟踪的标准规范、各种语言的API、编程框架和函数库。其目的是定义一套分布式调用跟踪的标准,以统一各种分布式调用跟踪的实现。目前已有大量支持OpenTracing规范的跟踪程序(Tracer),包括Jaeger和Zipkin等。在微服务应用中采用OpenTracing API实现分布式调用各种,可以避免供应商锁定,从而以最小的代价和任何兼容OpenTracing的基础设施对接。

跨度(span):是两个服务之间的一次请求与响应过程,比如一次REST调用或者数据库操作。Jaeger将其定义为“系统中的一个逻辑的交互单元,具有操作名称(operation time)、操作开始时间(start timestamp)和结束时间(finish timestamp)”。跨度是分布式调用跟踪的最小跟踪单位。

调用链(trace):是分布式系统中的一个端到端事务,Jaeger将其定义为“数据或执行穿过系统的路径,可视为跨度的有向无环图”。

跨度上下文(Span context):这是分布式调用跟踪的上下文信息,包括Trace ID,Span ID以及其它需要传递到下游服务的内容。一个OpenTracing的实现需要将跨度上下文通过某种序列化机制在进程边界上进行传递,以将不同进程中的跨度关联到一个调用链上。在基于HTTP协议的分布式调用中,通常使用HTTP Header来传递跨度上下文信息。Zipkin使用b3 HTTP Header,Jaeger使用 uber-trace-id HTTP Header。Istio/Envoy支持b3 HTTP Header和x-ot-context Header。

跨度的数据结构中主要包括以下内容:

  • Name:Span所代表的操作名称,例如REST接口对应的资源名称。
  • Start timestamp:Span所代表操作的开始时间
  • Finish timestamp:Span所代表的操作的的结束时间
  • Tags:一系列标签,每个标签由一个键值对组成。该标签可以是任何有利于调用链分析的信息,例如方法名,URL等。
  • SpanContext:用于跨进程边界传递Span相关信息,在进行传递时需要结合一种序列化协议使用。
  • References:该Span引用的其它关联Span,主要有两种引用关系,Childof和FollowsFrom。

o Childof: 最常用的一种引用关系,表示Parent Span和Child Span之间存在直接的依赖关系。例PRC服务端Span和RPC客户端Span,或者数据库SQL插入Span和ORM Save动作Span之间的关系。

o FollowsFrom:如果Parent Span并不依赖Child Span的执行结果,则可以用FollowsFrom表示。例如网上商店购物付款后会向用户发一个邮件通知,但无论邮件通知是否发送成功,都不影响付款成功的状态,这种情况则适用于用FollowsFrom表示。

一条调用链(trace)可被认为是一个由多个跨度(span)组成的有向无环图,多个跨度组成一个请求的完整调用链。而分布式跟踪系统要实现的,就是记录每次发送和接受动作的标识符和时间戳,将一次请求涉及到的所有服务串联起来,只有这样才能搞清楚一次请求的完整调用链。图6-1是一个分布式调用的例子,客户端发起请求,请求首先到达负载均衡器(load balancer),接着经过认证(auth)服务,计费(billing)服务,然后请求资源(resource),最后返回结果。

图6-1. 一个分布式调用示例

分布式跟踪系统负责采集和存储调用链数据,然后通常会使用包含时间轴的时序图来将这个调用链展现出来,横坐标是时间,圆角矩阵是请求的各个执行阶段,如图6-2所示。

图6-2. 分布式跟踪系统生成的时序图

6.1.2 Jaeger

Jaeger是Uber推出的一款开源分布式跟踪系统,兼容OpenTracing API,于2017年9月加入CNCF基金会,其架构如图6-3所示。

图6-3. Jaeger架构

Jaeger 主要由以下几部分组成:

  • Client – Jaeger的客户端,实现了符合OpenTracing API标准的SDK,支持主流编程语言。客户端直接集成在应用代码中,应用程序通过其API写入数据,客户端库把调用链信息按照应用程序指定的采样策略传递给Agent。在应用中调用Jaeger Client库记录跨度的过程通常被称为埋点。
  • Agent - 它是一个监听在UDP端口上接收跨度数据的网络守护进程,它会将数据批量发送给Collector。它被设计成一个基础组件,部署在宿主机上。Agent将Client 库和Collector 解耦,为Client库屏蔽了路由和发现Collector的细节。
  • Collector - 接收Agent发送来的数据,然后将数据写入后端存储。Collector被设计成无状态的组件,因此您可以同时运行任意数量的Collector。
  • Data Store - 后端存储被设计成一个可插拔的组件,支持将数据写入Cassandra和Elastic search。
  • Query - 接收查询请求,然后从后端存储系统中检索调用链并通过UI进行展示。Query 是无状态的,您可以启动多个实例,把它们部署在Nginx这样的负载均衡器后面。

6.1.3 对分布式调用跟踪的支持

Istio利用Envoy的分布式调用跟踪功能来为网格中的应用提供开箱即用的跟踪能力。Istio支持接入多种跟踪后端系统(tracing backend),包括Zipkin、Jaege和LightStep。Istio支持与分布式跟踪系统的两种整合方式:

  • 基于Envoy的整合(Envoy-based)
  • 基于Mixer的整合(Mixer-based)

Istio支持与LightStep、Zipkin以及与Zipkin API相兼容的后端比如Jaeger进行基于Envoy的整合。在这种整合中,Envoy边车代理直接向后端跟踪系统发送跟踪信息。它负责:

  • 为每个流经它的请求产生请求ID(request ID)和跟踪头(trace headers,比如x3-B3-TraceID)
  • 为每个流经它的请求根据请求及其响应的元数据产生跟踪跨度
  • 发送所产生的跟踪跨度信息到跟踪后端
  • 转发跟踪头给被代理的应用

以请求ID为例,Envoy使用x-request-id头去唯一地定位一个请求,并为它做日志和跟踪。Envoy会为每个从外部进入网格的请求产生x-request-id并放到HTTP头中,也会为不带有此信息的内部请求产生此ID。

Istio还支持以基于Mixer的方式与某些跟踪后端进行整合,比如Stackdriver。在这种方式中,Envoy负责为每个流经它的请求产生请求ID和跟踪头(比如x3-B3-TraceID),并异步发送给Mixer,同时转发跟踪头给被代理的应用;Mixer则负责为每个请求产生跟踪跨度数据,并把这些数据发给所配置的跟踪后端。

尽管Envoy能够自动产生跟踪信息,它还是要依赖应用将跟踪头信息传递给后续请求。在应用中,应用需要从进来的请求中获取以下信息并传递到出去的请求中:

· x-request-id

· x-b3-traceid

· x-b3-spanid

· x-b3-parentspanid

· x-b3-sampled

· x-b3-flags

· x-ot-span-context

对于某些应用,如果所选择的框架支持自动传递这些HTTP头,那么就不用显式传递跟踪上下文了。比如,Spring Boot框架在github中有个开源项目https://github.com/opentracing-contrib/java-spring-cloud ,能支持自动跟踪。我们customer和preference示例程序使用符合OpenTracing标准的TracerResolver库(https://github.com/jaegertracing/jaeger-client-java/tree/master/jaeger-tracerresolver),它会被自动加载。

在笔者的测试环境中,Istio采用基于Envoy的方式与后端跟踪系统Jaeger整合。Jaeger的服务和pod名称为istio-tracing,采用的Jaeger镜像是docker.io/jaegertracing/all-in-one,它包含jaeger-agent、jaeger-collector和jaeger-query这三个组件。其中,Envoy代理被配置为自动地将跟踪信息发送到jaeger-collector服务,jaeger-collector负责将跟踪数据写入存储卷。要注意的是,这个存储卷采用的是pod所在宿主机上的临时文件夹。因此,当istio-tracing这个pod被重建后,所保存的数据都会丢失。因此,在生产系统中,要考虑使用持久存储来保存数据。

运行下面的命令来打开Jaeger界面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    minishift openshift service tracing --in-browser

你可以从下拉列表中选择customer服务,再展开所产生的跟踪,如图6-4所示:

图6-4. Jager中的customer-preference-recommendation跟踪的展示

Istio能为所有流经网格的请求产生跟踪信息。这在开发阶段会很有用,能帮助你进行充分的调试;但是在某些时候,比如性能测试时或在生产系统中,这会对系统性能带来一定压力,而且数量庞大的数据也会占用大量存储空间。为了解决这个问题,Jaeger支持设置采样率。采样率通过Istio Pilot的“PILOT_TRACING_SAMPLING”环境变量进行配置。当PILOT_TRACING_SAMPLING的值为100时,表示全采样,也就是每一次请求都会采样;当PILOT_TRACING_SAMPLING值为50时,表示1/2采样,也就是每两次请求会采样一次。Istio中的PILOT_TRACING_SAMPLING的默认值为1,表示每100个请求采样一次。具体请查阅Jaeger官方文档。可通过下面的命令进行查看或修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    oc edit deployment istio-pilot -n istio-system

6.2 遥测(Metric)

Istio的另一个核心功能是网络流量的可观测性。因为网格内服务间的所有流量都会经过Envoy代理,Istio的控制平面就能从这些代理收集日志和指标,从而让你可深入地了解网格的状况。Istio控制平面中的一组件为Mixer,其在K8S中有两个独立的部署,一个是istio-policy,另一个是istio-telemetry。前者提供控制策略,后者提供遥测数据收集。

Istio网格中的每个pod中都会有一个Envoy代理,它负责在发出每个请求前调用istio-policy来检查前置条件,并在请求结束后调用istio-telemetry来发送遥测数据。为提高性能,Envoy代理会在本地缓存策略和遥测数据,以减少调用Mixer的次数。Mixer可配置多种后端,其中Metric后端负责接收遥测数据。在Istio部署中,通常会使用Prometheus来作为遥测后端。Prometheus(普罗米修斯)是一款开源弹性监控解决方案,它将其数据存储时序数据库,且提供了多维度的数据模型、强大的查询语言和简单的面板来生成被监控资源的报表。

图6-5. Mixer及其各种后端

默认地,Isito会利用Prometheus和Grafana来存储和展示服务网格中的测量数据。在Istio的默认部署中会部署Prometheus和Grafana服务,并做了基本配置,添加了若干度量指标,使得基本遥测数据能被收集到和展示出来。通过Istio提供的CRD,还能自定义度量指标,并使得它们被自动地收集到。Grafana是一款开源数据可视化看板,可指定多个数据源执行查询,将枯燥的数据转化为多维度的面板。Isito中的Grafana将Prometheus作为其数据源,提供了多个为Istio定制的面板(Dashboard),能从多个维度展示Istio服务网格的状态。遥测数据收集过程所涉及的服务之间的基本交互过程如图6-6所示,包括以下几个主要步骤:

  1. Envoy代理将每个请求的属性异步地报告给Mixer的istio-telemetry服务
  2. Mixer根据所配置的后端Prometheus的要求对这些属性进行格式转换
  3. Mixer将转换后的数据发给Prometheus
  4. Prometheus处理和存储遥测数据
  5. 用户通过Prometheus GUI或Grafana GUI查看遥测数据

图6-6. 有关服务之间的基本交互流程

运行下面的命令可直接在浏览器中打开Prometheus面板:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    minishift openshift service prometheus --in-browser

在Prometheus面板中,你可以自定义测量项并图形化结果。比如,你可以查看recommendation服务的v2版本的总请求数,如图6-7所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     istio_requests_total{destination_app="recommendation", destination_version="v2"}

图6-7.Prometheus面板

你还可以查看pod的内存使用量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    container_memory_rss{container_name="customer"}

Prometheus是一个非常强大的从Kubernetes/OpenShift集群中收集和展现测量数据的工具。目前它是CNCF联盟中顶级的已毕业项目之一。关于它的更多信息,请访问Prometheus官网。

运行下面的命令去获得Grafana界面的URL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    minishift openshift service grafana --url

在Grafana面板左上侧选择Istio Workload Dashboard,如图6-8所示:

图6-8. Grafana中的Istio Workload 面板

6.3 服务图(Service graph)

早期Istio就提供了开箱即用的基本的服务图形化功能。现在,Istio有了一个新的功能更全面的服务图形化工具和总体监控监控方案,那就是由红帽团队创建的Kiali,如图6-9所示。Kiali项目为一些有趣的问题提供了答案:我的Istio服务网格中有哪些微服务?它们之间是如何连接的?

本书写作时,Kiali还需要被单独安装,安装步骤还比较复杂。Kiali需要知道Jaeger和Granfana的URL,并需被设置给一些环境变量。Kiali安装步骤如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    # URLS for Jaeger and Grafana
    export JAEGER_URL="https://tracing-istio-system.$(minishift                                                      ip).nip.io"
    export GRAFANA_URL="https://grafana-istio-system.$(minishift
ip).nip.io"
    export IMAGE_VERSION="v0.10.0"
    curl -L http://git.io/getLatestKiali | bash

如果安装时碰到问题,请访问Kiali用户论坛https://groups.google.com/forum/#!forum/kiali-users。象Istio一样,Kiali也是一个快速发展中的项目。它的主菜单和Graph面板如图6-9所示。

图6-9. Kiali面板

Kiali的架构如图6-10所示。它包括两个组件Kiali front-end和Kiali back-end。前者用于界面展示,它从Kiali back-end获取数据并展现给用户;后者和Istio通信,获取和处理数据,并将数据通过Kiali front-end展现给用户。Kiali依赖于Istio,它通过底层平台API和Prometheus获取Istio的数据和配置。当前Kiali支持OKD和Kubernetes,利用它们的API去获得集群和服务网格的配置,比如命名空间、服务、部署等等。Kiali直接与Prometheus通信,使用保存在Prometheus中的数据,计算出服务网格的拓扑结构,展示遥测数据,计算健康状态以及展示存在的问题等。

图6-10. Kiali架构

Kiali还可以与Grafana集成,在其Workload界面中添加View in Granfana链接,点击后直接跳转至Grafana界面,展示该应用的遥测数据,如图6-11所示。

图6-11. 在Kiali中集成Grafana链接

Kiali还可以与Jaeger集成,在其页面中可以直接查看服务的分布式调用跟踪信息,如图6-12所示。具体配置方法请查阅https://kiali.io/documentation/distributed-tracing/。

图12. 在Kiali中查询服务的分布式调用跟踪信息

在Istio中,Kiali与Grafana和Jaeger的集成,是在ConfigMap kiali中配置的。它会被挂载到kiali pod中,成为kiali的配置文件/kiali-configuration/config.yaml。在译者的环境中,其内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
istio_namespace: istio-system
auth:
  strategy: login
server:
  port: 20001
  web_root: /kiali
external_services:
  tracing:
    in_cluster_url: http://tracing.istio-system/jaeger
    url: http://tracing-istio-system.router.default.svc.cluster.local/jaeger
  grafana:
    url: http://grafana-istio-system.router.default.svc.cluster.local
  prometheus:
url: http://prometheus:9090

本章中,你已经看到了好几个开箱即用的工具和第三方工具,Istio使得你的应用的各个微服务组件变得越来越可视和可观测。在前面章节中介绍了如何引入错误和网络延迟,现在,通过这些工具,你就能更好地跟踪问题在哪里了。

书籍英文版下载链接为 https://developers.redhat.com/books/introducing-istio-service-mesh-microservices/,作者 Burr Sutter 和 Christian Posta

本中文译稿版权由本人所有。水平有限,错误肯定是有的,还请海涵。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 世民谈云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Istio服务网格的可观察性
前面我们学习了 Istio 中的流量管理功能,本节我们来学习如何配置 Istio来自动收集网格中的服务遥测。Istio为网格内所有的服务通信生成详细的遥测数据,这种遥测技术提供了服务的可观察性,使运维人员能够排查故障、维护和优化应用程序,而不会给服务的开发人员带来任何额外的负担。通过 Istio,运维人员可以全面了解到受监控的服务如何与其他服务以及Istio组件进行交互。
王先森sec
2023/04/24
9550
Istio服务网格的可观察性
《istio实战指南》第7章 可视化工具
第7章 可视化工具 分布式追踪 分布式追踪(Distributed Tracing)主要用于记录整个请求链的信息。在微服务应用中,一个完整的业务往往需要调用多个服务才能完成,服务之间就产生了交互。当出现故障时,如何找到问题的根源非常重要。追踪系统可以地展示出请求的整个调用链以及每一步的耗时,方便查找问题所在 本节主要介绍如何使用Jaeger在Istio中实现追踪 启动Jaeger Jaeger是一个开源的分布式追踪系统,它可以在复杂的分布式系统中进行监控和故障排查。Jaeger的主要功能包括分布式请求监控
yeedomliu
2020/07/15
1.8K0
《istio实战指南》第7章 可视化工具
Service Mesh - Istio服务观测篇
Kiali属于Istio的集成组件之一,是一个用于Istio的可观测性控制台,具有服务网格配置和验证功能。它通过监控网络流量来推断服务拓扑和报告错误,帮助你了解服务网格的结构和运行状况。Kiali提供了详细的度量和基本的Grafana集成,可用于高级查询。
端碗吹水
2020/12/28
1.1K0
Service Mesh - Istio服务观测篇
istio-1:部署与体验istio-1.4.2
istio搁置有一段时间了,并且现在开始介入的是最新版本1.4.2,所以难免有些错误的地方,非常欢迎指正与讨论。
千里行走
2019/12/27
1.2K0
istio-1:部署与体验istio-1.4.2
服务网格中如何设计可观测性以降低故障定位成本? -基于Istio与Envoy的实践路径
在微服务架构中,服务间依赖复杂度呈指数级增长,传统日志与指标监控难以快速定位根因。服务网格通过无侵入式代理(如Envoy)和统一遥测体系,将可观测性能力下沉至网络通信层,实现端到端链路可视化。本文结合Istio实践,探讨如何通过分布式追踪、动态路由监控和智能告警设计,降低故障定位成本。
Towserliu
2025/02/24
1330
服务网格中如何设计可观测性以降低故障定位成本? 
-基于Istio与Envoy的实践路径
Istio可观测性
Istio的可观测性包括metrics,日志,分布式链路跟踪以及可视化展示。下面主要介绍如何在istio中部署基于Prometheus的metrics监控,基于jaeger的链路跟踪和基于kiali的可视化界面。
charlieroro
2020/09/07
2.9K0
在 Kubernetes 中部署微服务架构 Istio
Istio 是 Service Mesh(服务网格)的主流实现方案。该方案降低了与微服务架构相关的复杂性,并提供了负载均衡、服务发现、流量管理、断路器、监控、故障注入和智能路由等功能特性。
iMike
2019/07/29
1.9K0
实现全托管,腾讯云服务网格的架构演进
|导语 腾讯云服务网格(TCM)作为一个兼容 isito 的服务网格平台,已经在腾讯内外部有诸多落地案例。本文深度解析服务网格架构演进和发展趋势。 一、 istio 现状和发展趋势 1. istio发展现状 istio现在是目前最流行的服务网格实现,它的流行主要体现在两个方面。 一是社区非常的活跃,过去一年,Istio 在 GitHub 增长最快的开源项目排行榜上名列第四。 另一方面 istio 在业界有了越来越多的生产落地。在一项云原生调研报告中,已经有18% 的用户在生产环境中使用mesh 技术,
腾讯大讲堂
2020/10/09
2.2K0
Isito 入门(四):微服务可观测性
Istio 集成了 Jaeger、Zipkin 和 Skywalking 等链路追踪应用,能够有效地捕获服务网格的结构,展示网络拓扑结构,并分析网格的健康状况。
痴者工良
2023/07/24
4910
Isito 入门(四):微服务可观测性
Istio介绍
服务网格(Service Mesh)这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互。随着规模和复杂性的增长,服务网格越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等。
全栈程序员站长
2022/07/31
8440
从Service Mesh谈如何做好监控
谈到 Service Mesh,人们总是想起微服务和服务治理,从 Dubbo 到 Spring Cloud (2016开始进入国内研发的视野,2017年繁荣)再到 Service Mesh (2018年开始被大家所熟悉),正所谓长江后浪推前浪,作为后浪,Service Mesh 别无选择,而 Spring Cloud 对 Service Mesh 满怀羡慕,微服务架构的出现与繁荣,是互联网时代架构形式的巨大突破。Service Mesh 具有一定的学习成本,实际上在国内的落地案例不多,大多是云商与头部企业,随着性能与生态的完善以及各大社区推动容器化场景的落地,Service Mesh 也开始在大小公司生根发芽,弥补容器层与 Kubernetes 在服务治理方面的短缺之处。本次将以一个选型调研者的视角,来看看 Service Mesh 中的可观察性主流实践方案。
用户5397975
2020/06/04
1.4K0
从Service Mesh谈如何做好监控
《云原生服务网格Istio》第2章 Istio架构概述
第2章 Istio架构概述 2.1 Istio的工作机制 分为控制面和数据面两部分。可以看到,控制面主要包括Pilot、Mixer、Citadel等服务组件;数据面由伴随每个应用程序部署的代理程序Envoy组成,执行针对应用程序的治理逻辑 即观察frontend服务对 forecast 服务进行一次访问时,在 Istio 内部都发生了什么,以及 Istio 的各个组件是怎样参与其中的,分别做了哪些事情 虽然从时序上来讲,控制面的配置在前,数据面执行在后,但为了便于理解,在下面介绍这些动作时以数据面上的数据流
yeedomliu
2019/10/11
1.6K0
《云原生服务网格Istio》第2章 Istio架构概述
Istio是一个服务网格
   现在,基于这些容器编排提供了很多核心功能,如负载平衡,服务发现和安全性,这就是在基础架构上创建所谓的服务网格。
物流IT圈
2019/07/19
6400
Istio是一个服务网格
Istio 可观测性之日志
访问日志提供了一种从单个工作负载实例的角度监控和理解行为的方法,同样访问日志是我们在生产环境中必不可少的一种监控手段,Istio 通过 Envoy 来提供访问日志功能,Envoy Proxy 打印访问信息到标准输出,Envoy 容器的标准输出能够通过 kubectl logs 命令打印出来。
我是阳明
2023/12/05
8910
Istio 可观测性之日志
【译文连载】 理解Istio服务网格(第二章 安装)
本章中,我们会介绍如何在Kubernetes上安装Istio。Istio并没有和Kubernets绑定,实际上,它合适很多种基础架构平台。但是,Kubernetes因为原生支持边车部署(sidecar deployment)概念,因此它是运行Istio的最佳平台之一。你可以使用任何版本的Kubernetes。本章中,我们将使用Minishift,这是一个可以让你的OpenShift安装并运行在本地虚拟机上的工具,而OpenShift则是一个面向开发者的Kubernetes企业发行版。
SammyLiu
2020/02/25
7840
服务网格比较:Istio vs Linkerd
本文译自 Service Mesh Comparison: Istio vs Linkerd[1],作者 Anjul Sahu,译者张晓辉。
CNCF
2021/02/23
1.1K0
服务网格比较:Istio vs Linkerd
Istio: 服务网格领域的新王者
Istio 是当前 Service Mesh 领域最完善的解决方案,同源自 kubernetes 项目团队。
钟华
2019/02/12
4.4K0
Istio架构、技术栈及适用场景
Istio 是一个开源的服务网格(Service Mesh)平台,设计用于简化微服务架构中的服务间通信和服务管理。其架构主要分为两个核心部分:控制平面(Control Plane)和数据平面(Data Plane)。
用户7353950
2024/06/18
4220
Istio架构、技术栈及适用场景
【译文连载】 理解Istio服务网格(第七章 安全)
越来越多的现代云原生应用开发体系中都会有好几个独立的开发团队,每个团队采用不同的开发迭代周期,新功能以周或天为单位迭代上线,只对他们自己的任务负责。Istio的使命是从组成整个应用的所有微服务层面,确保一定程度的连续性。Isitio的关键能力之一是实施安全约束,同时对每个服务的逻辑代码透明。有了Istio代理后,你就可以在服务之间的网络层面施加这些约束。
SammyLiu
2020/03/11
1.2K0
【译文连载】 理解Istio服务网格(第一章 概述)
书籍英文版下载链接为 https://developers.redhat.com/books/introducing-istio-service-mesh-microservices/,作者 Burr Sutter 和 Christian Posta。
SammyLiu
2020/02/25
6120
相关推荐
Istio服务网格的可观察性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验