了解 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公司首次 ...
随机推荐
- 前端面试手写代码——JS数组去重
目录 1 测试用例 2 JS 数组去重4大类型 2.1 元素比较型 2.1.1 双层 for 循环逐一比较(es5常用) 2.1.2 排序相邻比较 2.2 查找元素位置型 2.2.1 indexOf ...
- 【网络好文】---MySQL为Null导致的四大坑
正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如所示: select version(); -- 版本为 8.0.22 "兵马未动粮草先行",看完了相关的配置之 ...
- element-UI 中的upload组件如何添加token?
<el-upload :show-file-list="false" :on-error="errmsg" :headers="headers& ...
- 设计模式学习-使用go实现建造者模式
建造者模式 定义 适用范围 与工厂模式的区别 优点 缺点 参考 建造者模式 定义 Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式. 建造者模式(Builder Patt ...
- 执行新程序 execve()
新程序的执行 一:execve() 之所以叫新程序的执行,原因是这部分内容一般发生在fork()和vfork()之后,在子进程中通过系统调用execve()可以将新程序加载到子进程的内存空间.这个操作 ...
- idea连接数据库时区错误
错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设 ...
- Code Runner,率先支持刚发布的 Visual Studio 2022!
Visual Studio 被不少网友成为"宇宙第一IDE".但是,我写✍ PHP.Java 和 C#,也都是用的 VS Code. 我所在的组,是 Visual Studio C ...
- Vue3+Vue-cli4项目中使用腾讯滑块验证码
Vue3+Vue-cli4项目中使用腾讯滑块验证码 简介: 滑块验证码相比于传统的图片验证码具有以下优点: 验证码的具体验证不需要服务端去验证,服务端只需要核验验证结果即可. 验证码的实现不需要我们去 ...
- The Ninth Week (Lucklyzpp)
The Ninth Week (Lucklyzpp) 1.简述DNS服务器原理,并搭建主-辅服务器. [10:36:39 root@lucklyzpp ~]#vim /etc/named.conf ...
- 第三课 Dubbo设计中的设计模式
责任链模式 责任链模式在Dubbo中发挥的作用举足轻重,就像是Dubbo框架的骨架.Dubbo的调用链组织是用责任链模式串连起来的. 责任链中的每个节点实现Filter接口,然后由ProtocolF ...