从较高的层次上看,Linkerd 由一个控制平面(control plane) 和一个 数据平面(data plane) 组成。

控制平面是一组服务,提供对 Linkerd 整体的控制。

数据平面由在每个服务实例“旁边”运行的透明微代理(micro-proxies)组成,作为 Pod 中的 sidecar

这些代理会自动处理进出服务的所有 TCP 流量,并与控制平面进行通信以进行配置。

Linkerd 还提供了一个 CLI,可用于与控制平面数据平面进行交互。

系列

中文手册(https://hacker-linner.com)

CLI

Linkerd CLI 通常在集群外部运行(例如在您的本地机器上),用于与 Linkerd 交互。

控制平面(control plane)

Linkerd 控制平面是一组在专用 Kubernetes 命名空间(默认为 linkerd)中运行的服务。

控制平面有几个组件,列举如下。

目标服务(destination)

数据平面代理使用 destination 服务来确定其行为的各个方面。

它用于获取服务发现信息(即发送特定请求的位置和另一端预期的 TLS 身份);

获取有关允许哪些类型的请求的策略信息;

获取用于通知每条路由指标重试超时的服务配置文件信息;和更多其它有用信息。

身份服务(identity)

identity 服务充当 TLS 证书颁发机构

接受来自代理的 CSR 并返回签名证书。

这些证书在代理初始化时颁发,用于代理到代理连接以实现 mTLS

代理注入器(proxy injector)

proxy injector 是一个 Kubernetes admission controller,它在每次创建 pod 时接收一个 webhook 请求。

injector 检查特定于 Linkerdannotationlinkerd.io/inject: enabled)的资源。

当该 annotation 存在时,injector 会改变 pod 的规范,

并将 proxy-initlinkerd-proxy 容器以及相关的启动时间配置添加到 pod 中。

数据平面(data plane)

Linkerd 数据平面包含超轻型微代理,这些微代理部署为应用程序 Pod 内的 sidecar 容器。

由于由 linkerd-init(或者,由 LinkerdCNI 插件)制定的 iptables 规则,

这些代理透明地拦截进出每个 podTCP 连接。

代理(Linkerd2-proxy)

Linkerd2-proxy 是一个用 Rust 编写的超轻、透明的微代理

Linkerd2-proxy 专为 service mesh 用例而设计,并非设计为通用代理。

代理的功能包括:

  • HTTPHTTP/2 和任意 TCP 协议的透明、零配置代理。
  • HTTPTCP 流量的自动 Prometheus 指标导出。
  • 透明、零配置的 WebSocket 代理。
  • 自动、延迟感知、第 7 层负载平衡。
  • HTTP 流量的自动第 4 层负载平衡。
  • 自动 TLS
  • 按需诊断 Tap API
  • 还有更多。

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

您可以在此处阅读有关这些微代理的更多信息:

Linkerd init 容器

linkerd-init 容器作为

Kubernetes init 容器

添加到每个网格 pod 中,该容器在任何其他容器启动之前运行。

它使用 iptables 通过代理将所有 TCP 流量,进出 Pod 的所有流量。

公众号:黑客下午茶

了解 Linkerd Service Mesh 架构的更多相关文章

  1. Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh

    架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...

  2. service mesh架构

    service  mesh 系列文章 https://my.oschina.net/iamlipeng/blog/1631575 http://developer.51cto.com/art/2018 ...

  3. Linkerd Service Mesh 授权策略(Server & ServerAuthorization)

    简介 Server 和 ServerAuthorization 是 Linkerd 中的两种策略资源, 用于控制对 mesh 应用程序的入站访问. 在 linkerd 安装期间,policyContr ...

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

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

  5. 微服务架构之「 下一代微服务 Service Mesh 」

    Service Mesh 被大家称为下一代的微服务,是微服务领域的一颗新星,被大家讨论的非常多. 我在大家的讨论中,还看到有人说 “目前的微服务架构我都没学会呢,现在又来一个下一代微服务,真学不动了” ...

  6. Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh

    本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...

  7. 微服务架构基础之Service Mesh

    ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础. 那么到底什么是 Serv ...

  8. 蚂蚁金服缘何自研Service Mesh?

    2018年,微服务方兴未艾,Service Mesh(服务网格)又快速崛起.有观点认为,2018年可被称之为“Service Mesh元年”,在未来两年中,Service Mesh将迎来爆发式增长,成 ...

  9. Service Mesh简介

    1.1 Service Mesh   1.1.1 什么是Service Mesh Service Mesh是最近才兴起的一个名词,最早在2016年9月29日由开发Linkerd的Buoyant公司首次 ...

随机推荐

  1. 力扣 - 剑指 Offer 66. 构建乘积数组

    题目 剑指 Offer 66. 构建乘积数组 思路1 按照一般的思路就是将所有的相乘,然后除以每一位数字就是答案,但是题目要求我们不能使用除法,因此我们会想到每次遍历到每个数字的时候,在遍历一遍数组, ...

  2. Burp Suite Pro 2021.10 Full (macOS, Linux) -- 查找、发现和利用漏洞

    申明:底层组件来自网络论坛或开源社区的分享,本站所有软件免费分享,仅供学习和测试使用,严禁用于任何商业用途!!! 请访问原文链接:https://sysin.cn/blog/burp-suite-pr ...

  3. Uncaught (in promise) Error: Request failed with status code 500解决方案

    今天又学到一种修改bug的方法  : let newpwd = crypto.createHash('md5').update(req.body.upwd).digest('hex'); 在点击按钮加 ...

  4. Spark性能调优——9项基本原则

    原则一:避免创建重复的RDD 通常来说,我们在开发一个Spark作业时,首先是基于某个数据源(比如Hive表或HDFS文件)创建一个初始的RDD:接着对这个RDD执行某个算子操作,然后得到下一个RDD ...

  5. 第三章 sql 的约束

    1.0 约束分类 约束类型: 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN NOT NULL 2.0 建立含约束的表    3.0 主 ...

  6. Android系统编程入门系列之硬件交互——传感器

    到目前为止,关于应用程序与用户之间的相关内容便比较肤浅的大致介绍完毕.而在整个系统架构中,应用程序与用户之间的交互,犹如参天大树上的枝干和树叶,交互起来五彩缤纷,但使整个生态系统保持生命力的核心,在于 ...

  7. Android学习—下载Android SDK的两种方式

    在Android Studio中下载Android SDK的两种方式 Android studio下载地址:http://www.android-studio.org/ 方式一.设置HTTP Prox ...

  8. [cf1361E]James and the Chase

    称一个点是"好点",当且仅当其到其余所有点恰存在一条简单路径 结论1:$x$为好点当且仅当以$x$为根的dfs树包含所有点且非树边均为返祖边 若不包含所有点,那么$x$到不被包含的 ...

  9. 一个初步的lilypond模板

    代码文档在下方,涉及了许多基本的文档操作,包括: 1)页面设置,包括纸张大小.页边距 2)段落设置,包括不同内容之间的行距 3)乐谱设置,包括设置谱子大小.谱号.调号.拍号,甚至还有拍号/小节线不可见 ...

  10. 【IDEA】字体大小和类型

    字体大小和类型 2020-09-08  09:06:21  by冲冲 1.工具界面的字体 2.代码的字体 注意:如果已经设置颜色主题,则还需要设置颜色主题的字体,才能生效.