zoukankan      html  css  js  c++  java
  • Service Mesh服务网格之Linkerd架构

    今天详细介绍一下Linkerd的架构。

    控制平面

    Linkerd控制平面是一组在专用Kubernetes命名空间中运行的服务(在Linked默认情况下)。这些服务完成各种事情——聚合遥测数据、提供面向用户的API、向数据平面代理提供控制数据等。它们共同驱动着数据平面的行为。

    控制平面由四个部分组成:

    • 控制器——控制器部署由多个容器(public-api,proxy-api,destination,tap)组成,这些容器提供了控制平面的大部分功能。

    • Web——Web部署提供Linkerd Dashboard。

    • Prometheus—— Linkerd公开的所有指标都通过Prometheus进行删除并存储。这是Prometheus的一个实例,它已被配置为专门用于处理Linkerd生成的数据。 

    • Grafana—— Linkerd配备了许多开箱即用的Dashboard。Grafana组件用于呈现和显示这些Dashboard。你可以通过LinkerdDashboard中的链接访问这些Dashboard。

    架构

    数据平面

    Linkerd数据平面由轻量级代理组成,它们作为sidecar容器与服务代码的每个实例一起部署。为了将服务“添加”到Linkerd服务网格,你必须重新部署该服务的pod来让每个pod中都包含数据平面代理。(linkerd inject 命令完成此操作,以及完成通过代理透明地从每个实例传递流量所需的配置工作)你可以使用单个CLI命令将服务添加到数据平面。

    这些代理透明地拦截与每个pod之间的通信,并添加诸如检测和加密(TLS)之类的功能,以及根据相关策略允许和拒绝请求。

    这些代理不是手动配置的。相反,它们的行为是由控制平面驱动的。

    代理

    用Rust编写的超轻透明代理,它安装在服务的每个pod中,并成为数据平面的一部分。它接收pod的所有传入流量,并通过配置initcontainer的iptables,拦截传出流量和正确转发流量。因为它是一个sidecar并拦截服务的所有传入和传出流量,所以不需要更改代码,甚至可以将其添加到正在运行的服务中。

    代理的功能包括:

    • HTTP,HTTP / 2和任意TCP协议的透明、零配置代理

    • 用于HTTP和TCP流量的自动Prometheus度量导出

    • 透明、零配置得WebSocket代理

    • 自动、延迟感知、第7层负载均衡

    • 针对非HTTP流量的自动第4层负载均衡

    • 自动TLS(实验)

    • 按需诊断分类API

    • 代理支持通过DNS和目标gRPC API进行服务发现 。

    CLI

    Linkerd CLI在你的机器上本地运行,并用来和控制和数据平面交互。它可用于查看统计信息,实时调试生产问题以及安装/升级控制和数据平面。

    Dashboard

    Linkerd Dashboard提供了一个高级视图,能够实时显示你的服务发生情况。它可用于查看“黄金”指标(如成功率、请求/秒和延迟)、可视化服务依赖性,并了解特定服务路由的运行状况。

    Top Line指标

    Grafana

    作为控制平面的一个组件,Grafana为你的服务提供开箱即用的可操作Dashboard。你可以查看高级指标并深入了解细节,即使对于pod也是如此。

    开箱即用的Dashboard包括:

    Top Line指标

    部署细节

    Pod细节

    Linkerd 健康诊断

    Prometheus

    Prometheus是一种云原生监控解决方案,用于收集和存储所有Linkerd指标。它是作为控制平面的一部分安装的,并提供CLI、Dashboard和Grafana使用的数据。

    代理在4191端口上公开一个/metrics端点,让Prometheus获取数据,并且每隔10秒就会获取一次

    指标集合

     

    更多技术文章,扫描下方二维码

  • 相关阅读:
    IOS使用正则表达式去掉html中的标签元素,获得纯文本
    iOS 拨打电话的三种方式总结
    iOS中Block的基础用法
    如何避免在Block里用self造成循环引用
    对MAC自带的SVN进行升级
    IOS开发之记录用户登陆状态
    Xcode7 添加PCH文件
    mysql upgrade
    Ubuntu下更改用户名和主机名
    mysql 查询的时候没有区分大小写的解决方案
  • 原文地址:https://www.cnblogs.com/cloudtogo/p/10345625.html
Copyright © 2011-2022 走看看