了解 Linkerd Service Mesh 架构
从较高的层次上看,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
检查特定于 Linkerd
的 annotation
(linkerd.io/inject: enabled
)的资源。
当该 annotation
存在时,injector
会改变 pod
的规范,
并将 proxy-init
和 linkerd-proxy
容器以及相关的启动时间配置添加到 pod
中。
数据平面(data plane)
Linkerd 数据平面
包含超轻型微代理
,这些微代理
部署为应用程序 Pod
内的 sidecar
容器。
由于由 linkerd-init
(或者,由 Linkerd
的 CNI
插件)制定的 iptables
规则,
这些代理透明地拦截进出
每个 pod
的 TCP
连接。
代理(Linkerd2-proxy)
Linkerd2-proxy
是一个用 Rust 编写的超轻、透明的微代理
。
Linkerd2-proxy
专为 service mesh
用例而设计,并非设计为通用代理。
代理的功能包括:
HTTP
、HTTP/2
和任意TCP
协议的透明、零配置代理。HTTP
和TCP
流量的自动Prometheus
指标导出。- 透明、零配置的
WebSocket
代理。 - 自动、延迟感知、第
7
层负载平衡。 - 非
HTTP
流量的自动第4
层负载平衡。 - 自动
TLS
。 - 按需诊断
Tap API
。 - 还有更多。
代理支持通过 DNS
和目标 gRPC API 进行服务发现。
您可以在此处阅读有关这些微代理的更多信息:
Linkerd init 容器
linkerd-init
容器作为
Kubernetes init 容器
添加到每个网格 pod
中,该容器在任何其他容器启动之前运行。
它使用 iptables
通过代理将所有 TCP
流量,进出 Pod
的所有流量。
公众号:黑客下午茶
了解 Linkerd Service Mesh 架构的更多相关文章
- Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh
架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...
- service mesh架构
service mesh 系列文章 https://my.oschina.net/iamlipeng/blog/1631575 http://developer.51cto.com/art/2018 ...
- Linkerd Service Mesh 授权策略(Server & ServerAuthorization)
简介 Server 和 ServerAuthorization 是 Linkerd 中的两种策略资源, 用于控制对 mesh 应用程序的入站访问. 在 linkerd 安装期间,policyContr ...
- Linkerd Service Mesh 服务配置文件规范
服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...
- 微服务架构之「 下一代微服务 Service Mesh 」
Service Mesh 被大家称为下一代的微服务,是微服务领域的一颗新星,被大家讨论的非常多. 我在大家的讨论中,还看到有人说 “目前的微服务架构我都没学会呢,现在又来一个下一代微服务,真学不动了” ...
- Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...
- 微服务架构基础之Service Mesh
ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础. 那么到底什么是 Serv ...
- 蚂蚁金服缘何自研Service Mesh?
2018年,微服务方兴未艾,Service Mesh(服务网格)又快速崛起.有观点认为,2018年可被称之为“Service Mesh元年”,在未来两年中,Service Mesh将迎来爆发式增长,成 ...
- Service Mesh简介
1.1 Service Mesh 1.1.1 什么是Service Mesh Service Mesh是最近才兴起的一个名词,最早在2016年9月29日由开发Linkerd的Buoyant公司首次 ...
随机推荐
- WPF实现统计图
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 前言 有小伙伴提出需要实现统计图. 由于在WPF中没有现成的统计图控件,所以我们自己实现一个. PS:有更 ...
- 【mysql2】下载安装mysql5.7版|不再更新系列
一.下载MySQL 5.7 版 MySQL 5.7 版:官网下载地址 https://dev.mysql.com/downloads/windows/installer/5.7.html 下载的是50 ...
- java随手记 面向对象
// 可以把两个类放在同一个文件中,但文件中只能有一个类是公共类,且公共类必须与文件同名,即xxx.java,源代码中的每个类编译成class文件 // java库中的类 // java.util.* ...
- 编译原理中Follow集的求法
经过前阵子的各种百度以及对课本的反复研究,终于弄明白了follow集的求法,下面记录一下! 首先引用龙书里面的一段较为公式化的follow集求法的话: 计算所有非终结符号A的follow(A)集合时, ...
- Linux&C ——信号以及信号处理
linux信号的简单介绍 信号的捕捉和处理 信号处理函数的返回 信号的发送 信号的屏蔽 一:linux信号的简单介绍. 信号提供给我们一种异步处理事件的方法,由于进程之间彼此的地址空间是独立的,所以进 ...
- 一看就懂的IdentityServer4认证授权设计方案
查阅了大多数相关资料,总结设计一个IdentityServer4认证授权方案,我们先看理论,后设计方案. 1.快速理解认证授权 我们先看一下网站发起QQ认证授权,授权通过后获取用户头像,昵称的流程. ...
- 关于Python中用户输入字符串(与变量名相同)无法作为变量名引用的理解以及解决方案
在用户登录账号时,我需要在字典中查找是否存在其账号名称以及密码是否正确. 所以,我想将用户输入的账号赋值给变量,在字典中查找是否有此指值. 代码如下: 1 Ya = {'姓名': 'Ya', 'pas ...
- 3组-Alpha冲刺-3/6
一.基本情况 队名:发际线和我作队 组长博客:链接 小组人数:10 二.冲刺概况汇报 黄新成(组长) 过去两天完成了哪些任务 文字描述 使用labelimg工具对采集的数据进行标注,安装alphapo ...
- sql关联修改
UPDATE p set p.ClientID = c.id from PaymentTable p left JOIN ClientTable c on p.ClientID = c.Clie ...
- vue中使用echarts,地图上的涟漪特效大小设置
在使用echarts进行开发大屏时,使用到了地图这个组件 我们会根据返回的值来决定涟漪的大小 这时则使用 其它的value为返回的数组,一般格式为[经度,维度,值] 这样就能动态设置效果的大小了