今天详细介绍一下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. Asterist搭建步骤

    环境: # cat /proc/version Linux version 2.6.18-308.el5 (mockbuild@x86-010.build.bos.redhat.com) (gcc v ...

  2. 在懒加载的Ionic工程中使用 ionic2-auto-complete 组件:Can't bind to 'dataProvider' since it isn't a known property of 'ion-auto-complete'

    问题描述: 在基于懒加载的Ionic工程中,使用ionic2-auto-complete组件(GitHub地址:https://github.com/kadoshms/ionic2-autocompl ...

  3. 面试6 在c#中如何声明一个类不能被继承

    C#通过关键字 sealed 可以声明一个类型不能被继承. 设计中应该为所有不被作为基类的类型添加sealed关键字,用以避免各种来自继承的易产生的错误.

  4. Java中反射和Unsafe破坏单例设计模式

    有如下单例模式设计代码: class Singleton { private String info = "HELLO SHIT"; private static Singleto ...

  5. MySQL7:性能优化

    性能优化 优化MySQL数据库是数据库管理员和数据库开发人员的必备技能.MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库的整体性能:一方面需要合理的结构设计和参数调整,以提高用户操作响应的 ...

  6. TortoiseGit用户手册

    3 配置TortoiseGit 3.1 生成公钥 生成SSH安全密钥,提供给GIT版本库管理员以访问Git 版本库,点击桌面上生成的图标 然后执行执行“ssh-keygen”生成自己的公钥: 一路回车 ...

  7. 百度Ueditor编辑器

    百度的Ueditor编辑器出于安全性考虑,用户在html模式下粘贴进去的html文档会自动被去除样式和转义.虽然安全的,但是非常不方便. 1. ueditor.config.js 做出如下修改即可: ...

  8. Tips——Flatlist的onEndReached多次触发问题解决

    一.问题 RN项目里使用Flatlist组件,上拉刷新item过多时,出现跳屏.闪屏.空白屏等问题. 二.原因 先在render函数里log了一下,发现没有re-render,判断不是网络请求或页面内 ...

  9. 前端AMD、CMD和commonJs-前端知识

    前端AMD和CMD是在模块化的基础上产生并且得到大幅度的引用的. AMD 即Asynchronous Module Definition(点击链接可以查看AMD面试题),中文名是异步模块定义的意思.它 ...

  10. 关于微信小程序开发中遇到的缺少game.json问题的解决

    一.小程序开发的两种选项 ①小游戏开发:内部对应的入口配置文件为game.json丶game.wxml之类的文件或者项目. ②小程序开发:内部对应的入口配置文件为app.json丶app.wxml之类 ...