今天详细介绍一下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秒就会获取一次

指标集合

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

Service Mesh服务网格之Linkerd架构的更多相关文章

  1. Service Mesh服务网格:是什么和为什么

    Service Mesh服务网格:是什么和为什么 - 好雨云帮 CSDN 博客 - CSDN博客 https://blog.csdn.net/zyqduron/article/details/8043 ...

  2. Service Mesh服务网格新生代--Istio(转)

    万字解读:Service Mesh服务网格新生代--Istio  官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...

  3. Service Mesh服务网格清单

    Service Mesh服务网格清单 Istio Istio官网 Istio中文官网 Istio开源 无需太多介绍Service Mesh明日之星,扛把子,截止2019.11还有太多问题没解决 复杂性 ...

  4. Service Mesh服务网格新生代--Istio

    原文: 数人云|万字解读:Service Mesh服务网格新生代--Istio 参考: istio 简介 Istio是啥?一文带你彻底了解! 使用Istio治理微服务入门 Istio 流量管理 ist ...

  5. Service Mesh服务网格新生代——Istio

    Istio 是什么?使用云平台可以为组织提供丰富的好处.然而,不可否认的是,采用云可能会给 DevOps 团队带来压力.开发人员必须使用微服务已满足应用的可移植性,同时运营商管理了极其庞大的混合和多云 ...

  6. Linkerd Service Mesh 服务配置文件规范

    服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...

  7. Qcon2017实录|Service Mesh:下一代微服务

    https://zhuanlan.zhihu.com/p/30292372 数人云11月Meetup报名开启,看中西方大神如何论道云原生与微服务!本文作者敖小剑老师将在本次Meetup上继续分享Ser ...

  8. 第八章 跨语言服务治理方案 Service Mesh

    8.1 Service Mesh 概述 新兴的下一代微服务架构,被称为下一代微服务,同时也是云原生技术栈的代表技术之一. 8.1.1 Service Mesh的由来 从2016年到2018年,serv ...

  9. Linkerd 2:5 分种厘清 Service Mesh 相关术语

    API Gateway(API 网关) API gateway 位于应用程序的前面,旨在解决身份验证和授权.速率限制以及为外部消费者提供公共访问点等业务问题. 相比之下,service mesh 专注 ...

随机推荐

  1. [CQOI 2018]破解D-H协议

    Description 题库链接 给出 \(A,B,P,g\) ,\(g\) 是 \(P\) 的原根,求出 \(A\equiv g^a\pmod{P}\) , \(B\equiv g^b\pmod{P ...

  2. bzoj 5341: [Ctsc2018]暴力写挂

    Description Solution 边分治+边分树合并 这个题很多做法都是启发式合并的复杂度的,都有点卡 以前有个套路叫做线段树合并优化启发式合并,消掉一个 \(log\) 这个题思路类似,建出 ...

  3. Linq to xml 操作带命名空间的xml

    昨天需要操作用代码操作csproj文件,实现不同vs版本的切换. 在用XElement读取了csproj文件以后怎么也获取不到想要的对象. 反反复复试验了好多次都不得要领:先看下csproj文件的内容 ...

  4. ShellExecute 启动外部程序 参数详细介绍

    ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...

  5. C# 实现二叉树各种排序

    1. 引言 在实际的项目中,树还是用的比较多的一种,尤其是对于具有层次结构的数据.相信很多人都学过树的遍历,比如先序遍历,后序遍历等,利用递归还是很容易理解的. 今天给大家介绍下二叉树的几种遍历算法, ...

  6. (POI)Excel格式转Html格式

    Demo结构和引用的Jar包 源代码(TestDemo.java) POI中将Excel转换为HTML方法仅能转换HSSFWorkBook类型(即03版xls),故可以先将读取的xlsx文件转换成xl ...

  7. 第二节:Java开发环境的搭建

    一.认识并安装JDK 1.JDK(Java Development Kit)是Java开发工具集,包括Java运行环境(JRE).Java开发工具以及一些基础类库,进行Java开发所必须安装的软件. ...

  8. C#设计模式六大原则——接口隔离

    接口隔离定义: 一般有两种定义: 1:客户端不应该依赖他不需要的接口     2:类间的依赖关系应该建立在最小的接口上 我们在建立接口时,应该尽量建立单一,不臃肿庞大的接口,应尽量使接口细化,方法尽量 ...

  9. IntelliJ IDEA 使用经验总结

    一. 准备工作 1. 点击此下载 IntelliJ IDEA 开发工具 二. 注册 1. 修改  C:\Windows\System32\drivers\etc\hosts ,在末尾添加  0.0.0 ...

  10. PCA vs Linear Regression 可视化理解

    https://shankarmsy.github.io/posts/pca-vs-lr.html https://shapeofdata.wordpress.com/2013/04/09/princ ...