快速上手 Linkerd v2 Service Mesh(服务网格)

简介: 快速上手 Linkerd v2 Service Mesh(服务网格)

设置



在我们做任何事情之前,我们需要确保您可以访问 Kubernetes 集群并在本地机器上运行 kubectl 命令。(如果您还没有 Kubernetes 集群,一个简单的选择是在您的本地机器上运行一个。有很多方法可以做到这一点,包括 kind、k3d、Docker for Desktop 等更多。)


您可以通过运行以下命令来验证设置:


kubectl version --short


您应该看到包含 Client VersionServer Version 组件的输出。

现在我们有了集群,我们将安装 Linkerd CLI 并使用它来验证您的集群是否能够托管 Linkerd 控制平面。


安装 CLI



如果这是您第一次运行 Linkerd,则需要将 linkerd 命令行界面 (CLI) 下载到本地计算机上。 CLI 将允许您与 Linkerd 部署进行交互。

要手动安装 CLI,请运行:


curl -sL https://run.linkerd.io/install | sh


请务必按照说明将其添加到您的路径中。

或者,如果您使用 Homebrew,则可以使用 brew install linkerd 安装 CLI。您还可以通过 Linkerd releases 页面直接下载 CLI


安装后,使用以下命令验证 CLI 是否正常运行:


linkerd version


您应该会看到 CLI 版本以及 Server version: unavailable。这是因为您尚未在集群上安装控制平面。别担心 - 我们会尽快解决这个问题。


验证你的 Kubernetes 集群



Kubernetes 集群可以通过多种不同的方式进行配置。在我们安装 Linkerd 控制平面之前,我们需要检查并验证所有配置是否正确。要检查您的集群是否已准备好安装 Linkerd,请运行:


linkerd check --pre


如果有任何检查未通过,请确保按照提供的链接并在继续之前解决这些问题。


安装控制平面(Control Plane)在你的集群



现在您已经在本地运行了 CLI,并且集群已经准备就绪,是时候安装控制平面了。

第一步是安装控制平面核心。为此,请运行:


linkerd install | kubectl apply -f -


在此命令中,linkerd install 命令生成一个 Kubernetes manifest,其中包含所有必要的控制平面资源。将此清单通过管道传输到 kubectl apply 然后指示 Kubernetes 将这些资源添加到您的集群中。


现在让我们等待控制平面完成安装。根据集群 Internet 连接的速度,这可能需要一两分钟。通过运行以下命令等待控制平面准备就绪(并验证您的安装):


linkerd check


接下来,我们将安装一些扩展。扩展为 Linkerd 添加了非关键但通常有用的功能。对于本指南,我们需要 viz 扩展,它会将 Prometheus、仪表板(dashboard)和指标组件(metrics components)安装到集群上:


linkerd viz install | kubectl apply -f - # on-cluster metrics stack


或者,此时您可以安装其他扩展。例如:


## optional
linkerd jaeger install | kubectl apply -f - # Jaeger collector and UI
linkerd multicluster install | kubectl apply -f - # multi-cluster components


请注意,扩展也可以来自第三方来源。例如,Buoyant Cloud 是针对 Linkerd 的,可免费托管指标仪表板(metrics dashboard)。可以与 viz 一起安装,但它是可选的:


## optional
curl -sL buoyant.cloud/install | sh
linkerd buoyant install | kubectl apply -f - # hosted metrics dashboard


一旦您安装了 viz 扩展程序和您想要的任何其他扩展程序,我们将再次验证所有内容:


linkerd check


假设一切都是绿色的,我们已准备好进行下一步!


浏览 Linkerd



安装并运行控制平面和扩展后,您现在可以通过运行以下命令查看 Linkerd 仪表板:


linkerd viz dashboard &


image.gif

此命令设置从本地系统到 linkerd-web pod 的端口。(也可以暴露仪表板供所有人访问。)

由于控制平面组件都在其 pod 中安装了代理,因此每个组件也是数据平面本身的一部分。这提供了深入了解控制平面本身在幕后发生了什么的能力。事实上,你可以运行:


linkerd -n linkerd-viz viz top deploy/web


这是您通过查看仪表板本身产生的流量!


安装 demo app



要了解 Linkerd 如何为您的一项服务工作,您可以安装一个 demo 应用程序。 emojivoto 应用程序是一个独立的 Kubernetes 应用程序,它混合使用 gRPCHTTP 调用,允许用户对他们最喜欢的表情符号进行投票。


通过运行以下命令将 emojivoto 安装到 emojivoto 命名空间中:


curl -sL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -


在我们对它进行网格(mesh)划分之前,让我们先来看看这个应用程序。如果此时您正在使用 Docker Desktop,则可以直接访问 http://localhost。如果你没有使用 Docker Desktop,我们需要转发 web-svc 服务。要将 web-svc 本地转发到端口 8080,您可以运行:


kubectl -n emojivoto port-forward svc/web-svc 8080:80


现在访问 http://localhost:8080。

点击周围,您可能会注意到 emojivoto 的某些部分已损坏!例如,如果你点击一个甜甜圈表情符号(doughnut emoji),你会得到一个 404 页面。别担心,这些错误是故意的。(我们可以使用 Linkerd 来识别问题。如果您对如何准确找出问题感兴趣,请查看调试指南。)


接下来,让我们通过运行以下命令将 linker 添加到 emojivoto


kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -


此命令检索在 emojivoto 命名空间中运行的所有部署(deployments),通过 linkerd inject 运行清单,然后将其重新应用到集群。linkerd inject 命令向 pod spec 添加注解(annotations),指示 Linkerd 将代理(proxy)作为容器添加(“注入”)到 pod spec 中。(有关更多信息,请参阅自动代理注入。)

install 一样,inject 是纯文本操作,这意味着您可以在使用之前检查输入和输出。一旦通过管道传输到 kubectl applyKubernetes 将执行滚动部署(rolling deploy)并使用数据平面的代理更新每个 pod,所有这些都没有任何停机时间。


恭喜!您现在已将 Linkerd 添加到现有服务中!就像控制平面一样,可

以验证一切是否按照数据平面应有的方式工作。要进行此检查,请运行:

linkerd -n emojivoto check --proxy


监测它的运行



您现在可以查看 Linked 面板并查看 demo app 中的所有服务。由于 demo app 附带了 load generator,我们可以通过运行以下命令查看实时流量指标(live traffic metrics):


linkerd -n emojivoto viz stat deploy


这将显示每个部署的“黄金(golden)”指标:


  • 成功率(Success rates)
  • 请求率(Request rates)
  • 延迟分布百分位数(Latency distribution percentiles)

为了进一步深入,可以使用 top 来实时查看正在调用哪些路径:


linkerd -n emojivoto viz top deploy


为了更深入,我们可以使用 tap 显示跨单个 poddeployment 甚至 emojivoto 命名空间中的所有内容的请求流:


linkerd -n emojivoto viz tap deploy/web


如果您想改用浏览器,所有这些功能也可在仪表板中使用:


微信图片_20220612124241.png

微信图片_20220612124243.png

微信图片_20220612124246.png

微信图片_20220612124249.png


那过去发生的事情呢?Linkerd 包含 Grafana 来可视化 Prometheus 收集的指标,并附带一些预配置的仪表板。您可以通过单击概览页面中的 Grafana 图标来访问这些。


微信图片_20220612124253.png

相关文章
|
运维 负载均衡 监控
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
667 0
|
10月前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
10月前
|
负载均衡 监控 Go
Golang深入浅出之-Go语言中的服务网格(Service Mesh)原理与应用
【5月更文挑战第5天】服务网格是处理服务间通信的基础设施层,常由数据平面(代理,如Envoy)和控制平面(管理配置)组成。本文讨论了服务发现、负载均衡和追踪等常见问题及其解决方案,并展示了使用Go语言实现Envoy sidecar配置的例子,强调Go语言在构建服务网格中的优势。服务网格能提升微服务的管理和可观测性,正确应对问题能构建更健壮的分布式系统。
506 1
|
10月前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践之路
【4月更文挑战第30天】 在现代云计算的大背景下,微服务架构以其灵活性和可扩展性成为众多企业转型的首选。然而,随着服务的激增和网络交互的复杂化,传统的服务通信模式已无法满足需求,服务网格(Service Mesh)应运而生。本文通过分析服务网格的核心组件、运作机制以及在企业中的实际应用案例,探讨了服务网格在微服务架构中的关键作用及其带来的变革,同时提出了实施过程中面临的挑战和解决策略。
|
10月前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践
【4月更文挑战第28天】 在现代云原生应用的后端开发领域,微服务架构已成为一种广泛采用的设计模式。随着分布式系统的复杂性增加,服务之间的通信变得愈加关键。本文将深入探讨服务网格这一创新技术,它旨在提供一种透明且高效的方式来管理、监控和保护微服务间的交互。我们将从服务网格的基本概念出发,分析其在实际应用中的优势与挑战,并通过一个案例研究来展示如何在现有的后端系统中集成服务网格。
|
Kubernetes 监控 Go
《Linkerd 2.0:下一代服务网格的探索》
《Linkerd 2.0:下一代服务网格的探索》
395 0
|
Kubernetes 监控 负载均衡
企业级服务网格优化中心:优化Service Mesh以提高性能和高可用性
 以下内容是根据王夕宁在2023年6月份在北京举行的CNCF Kubernetes Community Day(KCD)会议上的演讲主题整理而成。 Service Mesh是一种用于管理微服务架构中网络通信的解决方案,通过在每个服务实例中添加代理,实现流量控制、服务发现、负载均衡等功能。虽然Service Mesh能够提供很多优秀的功能,但也存在一些性能问题, 譬如:延迟增加:Service Me
175 0
企业级服务网格优化中心:优化Service Mesh以提高性能和高可用性
|
Kubernetes Linux 网络安全
Service Mesh 服务网格一:Sidecar模式
Service Mesh 服务网格一:Sidecar模式
|
10月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
428 2
|
5月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。