Linkerd2入门
目录
- 1. 引言
- 2. Linkerd入门
- 2.1 安装Linkerd CLI(Command Line Interface)工具
- 2.2 安装Linkerd控制平面Control Plane
- 2.3 安装示例程序
- 2.4 将示例程序加入到Linkerd服务网格(即注入linkerd-proxy)
- 2.5 安装Linkerd扩展viz
- 2.6 使用Linkerd viz Dashboard调试HTTP/GRPC请求
1. 引言
随着单个服务的代码库越来越大(提交冲突、维护困难)、服务逻辑越来越复杂、单体服务性能出现瓶颈(分布式、功能拆分重点优化)以及开发团队的日益壮大(部门拆分、职能分工),我们将服务进行拆分进行微服务化管理。但是微服务化后也加重了服务部署、监控、运维的难度,例如使用Spring Cloud框架会将微服务管理的功能引入到业务代码中,增加了应用的集成、开发难度,且具有一定学习难度。而随着K8S以及Service Mesh的兴起,引入Sidecar代理的方式(不侵入代码、应用无感知)来接管微服务管理的功能,带来了更便捷的微服务接入方式,使得开发人员仅需关注核心业务逻辑开发,而由架构和运维人员统一制定Service Mesh管理策略。但Servie Mesh也不是万能药水,由于额外引入了Sidecar代理(A -> proxy for A -> proxy for B -> B)所以资源消耗(CPU、内存)、请求延时均有所增加,所以要考虑清楚是否真的需要Service Mesh(取舍)。
记得当初团队决定接入Istio,是建立在:
- 团队技术栈由Spring刚升级到SpringBoot(并无实际落地SpringCloud的经验)
- 对服务路由编排有要求(例如服务编号s257到具体服务的映射)
- 服务间请求调用采用HTTP + JSON
- Pass平台决定升级K8S
- 开发语言包括Java、Python、Nodejs等
在上述场景下,借助Istio应该是成本最小的微服务升级:
- 建立在K8s之上
- 不侵入代码(后续服务追踪需透传tracing相关请求头)且语言无关(开发人员无感)
- 丰富的流量路由策略(VirtualService、Destination、Gateway)
由于Service Mesh(无论Istio还是本文介绍的Linkerd)是具有一定难度和门槛的,所以要充分考虑好团队是否真正需要接入Service Mesh:
- 如已全栈接入Spring Cloud(功能比Service Mesh更强大),则可优先使用SpringCloud相关模块解决问题(但相比起侵入代码的微服务框架我更看好Service Mesh的前景)。
- Service Mesh需配合K8S使用(通过K8S可以方便的部署服务及其Sidecar代理)
- 目前Service Mesh对HTTP/1.1、 HTTP/2、gRPC支持的较为完善,其他RPC协议还有待完善,所以团队若使用其他RPC目前并不适合接入ServiceMesh。
- 关于代理的形式Sidecar(每个Pod内注入代理)、Per-node(每个K8s节点注入代理)、Per-service-account、eBPF还有待观望(目前Istio、Linkerd均使用Sidecar模式,且Linker1.x由最初的Per-node模式调整为Linker2.x的Sidecar模式)。
- 如果对安全要求较高,如需集群内服务均采用TLS或mTLS加密通信,则可考虑Service Mesh无侵入全栈升级TLS。
- 如全栈无侵入接入OAuth2协议,服务作为Resource Sever(借助Istio RequestAuthentication、AuthorizationPolicy)。
- 以较小侵入(如透传tracing相关请求头)集成分布式服务追踪(HTTP、GRPC)、请求监控。
- 有灰度发布的需求(如按比例、用户拆分流量等)
- …
由于之前有过使用Istio的经验(上手较难、配置比较多),现在同样想对Linkerd2
进行了解,所以有了本次的Linkerd快速上手。
Linkerd相较于Istio,官方号称其更轻量级、更简单,且其代理实现linkerd-proxy(Rust编写)相较于Istio Envoy(C++编写)实现在资源消耗、性能上提升近乎10倍,但目前支持的功能不如Istio丰富,且其采用和Istio类似的数据平面Data Plane(由linkerd-proxy组成)、控制平面Controll Plane的架构,如下图:
关于Linkerd架构的详细说明可参见:
https://linkerd.io/2.11/reference/architecture/
2. Linkerd入门
基础环境:
VirtualBox Ubuntu 20.04.3-live-server
IP: 192.168.3.120
Kubephere All-in-One V3.2.0
Kubernetes v1.21.5
可通过如下命令查看K8s版本:
kubectl version --short
2.1 安装Linkerd CLI(Command Line Interface)工具
可直接通过官方提供的脚本进行安装:
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
注:
可通过curl --proto ‘=https’ --tlsv1.2 -sSfL https://run.linkerd.io/install查看脚本内容,
具体脚本内容可参见:https://gitee.com/luoex/linkerd-install/blob/master/get-started/linkerd-cli.install
安装过程如下图:
在Github下载https://github.com/linkerd/linkerd2/releases/download/stable-2.11.2/linkerd2-cli-stable-2.11.2-linux-amd64 ,
总共44.7M花了半个小时Linkerd2入门相关推荐
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 命名实体识别入门教程(必看)
关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...
最新文章
- python面向对象大段代码_python面向对象部分简单整理
- Zonbu-售价 99 美元的袖珍电脑
- java.lang.Record:规范草案
- 致诺奖得主:低报酬、超工时,为什么我们要追求科学事业?
- 【项目管理】合同和采购
- Tensorflow学习笔记(三)
- 驾校学员驾考成绩管理系统
- 变量可以存储在堆中,栈中,方法区中。哪里都可以啊。对象只能存储在堆中...
- mfc之CPtrArray数组
- 通过数据流处理-微信小程序生成临时二维码
- (转)2017中国互联网证券年度报告
- 转Java 开发环境配置
- Skype国际版使用国内卡
- win7 IE11下,无法通过Windows更新为其他微软产品获取更新
- 小米怎么卸载html,小米11内容中心有什么用?怎么关闭和卸载呢
- 域名被劫持的处理办法和预防
- java计算机毕业设计废品回收管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
- GrayLog 设置日志保留时间每天1个索引,保留183天(6个月)
- 什么是安全沙箱技术?如何评估应用程序安全性?
- LoRa和NB-IoT的对比,LoRa感觉毫无胜算可言
热门文章
- 月末关账流程和政策规定
- 太虚幻境 文/江湖一劍客
- 《算法笔记》学习日记——5.2 最大公约数与最小公倍数5.3 分数的四则运算5.4 素数
- 家装与家电的碰撞,三星电视诠释“新春换新”的“新选择”
- 【微信小程序开发(云壁纸小程序教程)】
- SIGMOD 2017论文的摘要与看法
- 无线智能蓝牙追踪防丢器
- 佳能数码相机,不能安装驱动程序
- 【第二十四期】golang 一年经验开发 富途
- win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式