前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linkerd 2.x 入门指南

Linkerd 2.x 入门指南

作者头像
CNCF
发布于 2019-12-04 08:06:22
发布于 2019-12-04 08:06:22
2.4K10
代码可运行
举报
文章被收录于专栏:CNCFCNCF
运行总次数:0
代码可运行

欢迎来到Linkerd!?

在本指南中,我们将介绍如何将Linkerd安装到Kubernetes集群中。然后,我们将部署一个示例应用程序来展示Linkerd可以为你的服务做些什么。

安装Linkerd很容易。首先,你将在本地机器上安装CLI(命令行界面)。然后使用这个CLI,将Linkerd控制平面安装到Kubernetes集群中。最后,你将通过添加数据平面代理来“网格化”一个或多个服务。(详细信息请参阅架构页面。)

https://linkerd.io/2/architecture/

我们将一步一步地介绍这个过程。

步骤0:设置

在我们做任何事情之前,我们需要确保你能够访问运行1.10.0或更高版本的Kubernetes集群,以及本地机器上运行的kubectl命令。

你可以在本地机器上运行Kubernetes。我们建议Docker Desktop或Minikube。有关其他选项,请参阅完整列表。

https://kubernetes.io/docs/setup/

准备好后,请确保你正在运行Kubernetes的最新版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl version --short

在下一个步骤中,我们将安装CLI并验证集群是否准备好安装控制平面。

GKE

如果在GKE上安装Linkerd,则需要根据集群的配置方式执行一些额外的步骤。如果你正在使用这些特性中的任何一个,请查看附加说明。

  • 私有集群

https://linkerd.io/2/reference/cluster-configuration/#private-clusters

步骤1:安装CLI

如果这是你第一次运行Linkerd,那么你需要将命令行界面(CLI)下载到你的本地机器上。你将使用这个CLI与Linkerd交互,包括将控制平面安装到Kubernetes集群上。

要安装CLI,请运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -sL https://run.linkerd.io/install | sh

或者,你可以通过Linkerd版本页面直接下载CLI。

https://github.com/linkerd/linkerd2/releases/

接下来,将linkerd添加到你的路径中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PATH=$PATH:$HOME/.linkerd2/bin

验证CLI已安装并正确运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd version

你应该看到CLI版本,以及“Server version: unavailable”。这是因为我们还没有安装控制平面。我们很快就会这么做。

步骤2:验证Kubernetes集群

Kubernetes集群可以用许多不同的方式配置。为了确保控制平面将正确安装,Linkerd CLI可以检查和验证所有配置是否正确。

要检查你的集群配置是否正确,并准备安装控制平面,你可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd check --pre

步骤3:在集群上安装Linkerd

现在你已经在本地运行了CLI,集群已经准备就绪,现在是时候将轻量级控制平面安装到它自己的命名空间(linkerd)中了。如果你想将其安装到另一个命名空间中,请查看install的帮助文档。要做到这一点,请运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd install | kubectl apply -f -

linkerd install生成Kubernetes资源的列表。如果你想了解发生了什么,请独立运行它。通过将linkerd的输出管道连接到kubectl中,linkerd控制平面资源将被添加到集群中并立即开始运行。

根据你的网络连接速度,你的Kubernetes集群可能需要一到两分钟的时间来获取Linkerd镜像。在这过程中,我们可以通过运行以下来验证一切都是正确的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd check

此命令将耐心等待,直到安装并运行Linkerd。如果你对安装了哪些组件感兴趣,你可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl -n linkerd get deploy

请参阅架构文档,以深入解释这些组件是什么以及它们做什么。

https://linkerd.io/2/reference/architecture/#control-plane

步骤4:探索Linkerd

安装并运行控制平面后,你现在可以通过运行以下命令查看Linkerd仪表盘:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd dashboard &

Dashboard

控制平面组件都将代理安装在它们的Pod中,并且都是数据平面本身的一部分。这提供了深入研究这些组件的能力,并查看幕后发生了什么。事实上,你可以跑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd -n linkerd top deploy/linkerd-web

这是查看仪表板本身生成的流量!

步骤5:安装示例应用程序

要了解Linkerd如何为你的服务工作,可以安装示例应用程序。它提供了一个查看Linkerd提供的所有功能的绝佳方式。要在自己的集群上,在它自己的命名空间(emojivoto)中安装,运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -sL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -

在我们对其进行网格化之前,让我们先看一下这个应用程序。如果你使用Docker for Desktop,此时你可以直接访问http://localhost。如果你不使用Docker for Desktop,我们需要转发web-svc服务。要将web-svc本地转发到端口8080,可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl -n emojivoto port-forward svc/web-svc 8080:80

现在访问http://localhost:8080。瞧!emojivoto应用程序的所有功能。

单击周围,你可能会注意到应用程序的某些部分被破坏了!例如,如果你点击一个甜甜圈表情符号,你会看到404页面。别担心,这些错误是故意的。(我们可以使用Linkerd来识别问题。如果你对如何准确地找出问题所在感兴趣,请参阅调试指南。)

https://linkerd.io/2/debugging-an-app/

接下来,让我们将Linkerd添加到Emojivoto应用程序中,方法是运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -

该命令检索emojivoto命名空间中运行的所有部署,通过inject运行Kubernetes资源集,最后将其重新应用于集群。inject命令增加了资源,以包含数据平面的代理。与install一样,inject是一个纯文本操作,这意味着你可以在使用它之前检查输入和输出。你甚至可以遍历diff来查看到底发生了什么变化。

一旦导入kubectl apply,Kubernetes将执行滚动部署,并使用数据平面的代理更新每个pod,所有这些操作都没有任何停机时间。

你已经在不接触原始YAML的情况下将Linkerd添加到现有服务中!因为inject增强了YAML,所以也可以使用emojivoto.yml本身也做同样的事情(cat emojivoto.yml | linkerd inject -)。这是将Linkerd集成到CI/CD管道中的好方法。你可以一次选择使用一个Linkerd的服务,并逐步将它们添加到数据平面。

就像控制平面一样,可以验证数据平面上的所有工作方式是否正常。要执行此检查,请运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd -n emojivoto check --proxy

请注意: 在这一步中,我们在emojivoto应用程序已经运行时对其进行了网格化。虽然这种特别的方法在很多情况下都可以很好地工作,但是Linkerd还支持自动代理注入,这通常更适合使用自动部署模式的应用程序。

步骤6:看着它跑

你可以查看Linkerd仪表板,并看到示例应用程序中的所有HTTP/2(gRPC)和HTTP/1(web frontend)对话服务都显示在emojivoto命名空间中运行的资源列表中。由于示例应用程序附带了负载生成器,因此可以查看一些Linkerd功能。

要查看该应用程序的一些高级统计数据,可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd -n emojivoto stat deploy

这将显示每个部署的“黄金”度量:

  • 成功率
  • 请求率
  • 延迟分配百分位数

为了深入研究,可以实时地top正在运行的服务,并了解每条路径上发生了什么。要看到这个,你可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd -n emojivoto top deploy

如果你有兴趣进行更深入的研究,tap将显示跨单个pod、部署甚至emojivoto命名空间中的所有内容的请求流。要查看web部署的这个流,你只需运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
linkerd -n emojivoto tap deploy/web

如果你想使用浏览器,仪表板也提供了所有这些功能。仪表板视图如下:

Top Line Metrics

Deployment Detail

Top

Tap

这些都是查看实时数据的好方法,但是对于过去发生的事情呢?Linkerd包括Grafana,以可视化Prometheus收集的所有伟大指标,并附带一些非常有价值的仪表板。你可以通过单击overview页面中的Grafana图标来获得这些。

Deployment Detail Dashboard

就是这样!?

你可以做更多的事情:

  • 调试emojivoto
  • 将Linkerd添加到你的服务中
  • 了解更多关于Linkerd架构的信息
  • 跳到Linkerd Slack上的#linkerd2频道

https://linkerd.io/2/debugging-an-app/

https://linkerd.io/2/adding-your-service/

https://linkerd.io/2/architecture/

https://slack.linkerd.io

点击文末<<阅读原文>>进入网页了解更多。


KubeCon + CloudNativeCon + Open Source Summit China 2019

一周热话:

CNCF Weekly 19-26

演讲材料:

https://kccncosschn19chi.sched.com/

精彩图片:

https://500px.com/g/16c9f7e39efe59370a9210eeee4b0b54b7514c28aeea47ebd8a5657385eae6a3

视频重温:

https://v.qq.com/vplus/dbc4895dfc0a6ec609ad9e42a10507e0/

https://github.com/cncf/presentations/blob/master/chinese/2019Shanghai.md

成为赞助商:

https://events.linuxfoundation.cn/events/kubecon-cloudnativecon-china-2019/sponsors/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
您,实机操作过没
您,实机操作过没
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
快速上手 Linkerd v2 Service Mesh
在本指南中,我们将引导您了解如何将 Linkerd 安装到您的 Kubernetes 集群中。然后我们将部署一个示例应用程序来展示 Linkerd 的功能。
我是阳明
2021/06/25
6440
快速上手 Linkerd v2  Service Mesh
Emoji.voto,Linkerd 服务网格(service mesh)的示例应用程序
一个微服务应用程序,允许用户为他们最喜欢的表情符号(emoji)投票,并跟踪排行榜上收到的投票。愿最好的 emoji 获胜。
为少
2021/07/30
8190
Emoji.voto,Linkerd 服务网格(service mesh)的示例应用程序
Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
GitOps 是一种使用 Git 作为单一事实来源自动管理和交付 Kubernetes 基础设施和应用程序的方法。它通常利用一些软件代理来检测和协调 Git 中受版本控制的工件与集群中运行的工件之间的任何差异。
为少
2021/07/07
1.9K0
Linkerd服务网格的基础知识和服务配置
Linkerd 服务网格解决的最重要问题之一是可观察性:提供服务行为的详细视图,Linkerd 对可观察性的价值主张是,它可以为你的 HTTP 和 gRPC 服务提供黄金指标,这些都是自动执行,无需更改代码或开发人员参与的。
王先森sec
2024/01/12
1730
Linkerd服务网格的基础知识和服务配置
tke集群搭建Linkerd2
Linkerd 是 Kubernetes 的服务网格。它通过为您提供运行时调试、可观察性、可靠性和安全性,使运行服务更轻松、更安全——所有这些都不需要对您的代码进行任何更改。
聂伟星
2021/11/17
3760
Linkerd 2.10—设置服务配置文件
Service profiles 为 Linkerd 提供 了关于服务以及如何处理服务请求的附加信息。
为少
2021/07/07
5390
Linkerd 2.10(Step by Step)—1. 将您的服务添加到 Linkerd
为了让您的服务利用 Linkerd,它们还需要通过将 Linkerd 的数据平面代理(data plane proxy)注入到它们服务的 pod 中,从而进行网格化。
为少
2021/07/07
7200
Linkerd 2.10(Step by Step)—Ingress 流量
从 Linkerd 2.9 版开始,有两种方式可以让 Linkerd 代理 与您的 Ingress Controller 一起运行。
为少
2021/07/07
1.4K0
使用Linkerd进行分布式跟踪的指南
我们很高兴地宣布Linkerd 2.6增加了对分布式跟踪的支持!这意味着Linkerd数据平面代理,现在可以发出跟踪跨度(span),允许你查看请求在跟踪请求的Linkerd代理中花费的确切时间。由于在实践中使用分布式跟踪是相当困难的,在这篇文章中,我们收集了一个参考架构,并推荐了使用Linkerd进行分布式跟踪的最佳方法。
CNCF
2019/12/04
1K0
Linkerd服务网格中的Ingress流量管理与服务限制
出于简单性和可组合性的原因,Linkerd 本身没有提供内置的 Ingress 控制器。Linkerd 旨在与许多现有的 Kubernetes Ingress 解决方案一起使用。
王先森sec
2024/04/08
1850
Linkerd服务网格中的Ingress流量管理与服务限制
在 Linkerd 中实现流量拆分功能
在 Linkerd 中,金丝雀发布是通过流量拆分来管理的,这项功能允许你根据可动态配置的权重,将请求分配给不同的 Kubernetes 服务对象。虽然流量分割可以适用于任意的 Service 对象,但一般情况下是将一个 Service 的传入流量分给不同版本的 Service。
我是阳明
2022/09/29
1.1K0
在 Linkerd 中实现流量拆分功能
Linkerd|实现Kubernetes可观察性监测
在本文中,我们将向您展示如何完成基本的Kubernetes可观察性任务:从运行在Kubernetes集群上的应用程序获得黄金指标或黄金信号。我们不需要修改任何代码,也不需要进行任何配置,只要安装Linkerd(一个开源的超轻服务网格)就可以做到这一点。我们将介绍什么是服务网格,术语可观察性是什么意思,以及这两者在Kubernetes上下文中是如何关联的。
用户5166556
2023/03/18
4190
Linkerd|实现Kubernetes可观察性监测
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
这个演示是一个Ruby应用程序,可以帮助您管理书架。它由多个微服务组成,并通过 HTTP 使用 JSON 与其他服务通信。有三种服务:
为少
2021/07/07
5350
使用Prometheus和Linkerd建立Kubernetes服务水平目标(SLO)的指南
https://buoyant.io/2020/10/21/kubernetes-SLO-with-prometheus-linkerd/
CNCF
2020/11/25
9700
使用Prometheus和Linkerd建立Kubernetes服务水平目标(SLO)的指南
Linkerd 通过 ServiceProfile 实现超时和重试
Linkerd 服务网格解决的最重要问题之一是可观察性:提供服务行为的详细视图,Linkerd 对可观察性的价值主张是,它可以为你的 HTTP 和 gRPC 服务提供黄金指标,这些都是自动执行,无需更改代码或开发人员参与的。
我是阳明
2022/09/29
7230
Linkerd 通过 ServiceProfile 实现超时和重试
使用服务网格来实现Kubernetes可观察性
你们刚刚采用了Kubernetes。恭喜你!但是现在要做什么?任何Kubernetes采用者的第一个可观察性任务之一是监控——至少,你需要知道什么时候出现了问题,以便你可以快速地修复它们。
CNCF
2021/03/15
3690
使用服务网格来实现Kubernetes可观察性
Linkerd 2.10—使用 Debug Sidecar,注入调试容器来捕获网络数据包
调试服务网格(service mesh)可能很困难。当某些东西不起作用时, 是代理(proxy)有问题吗?与应用程序(application)?与客户端(client)?与底层网络?(underlying network)有时, 没有什么比查看原始网络数据更好的了。
为少
2021/07/07
7250
Linkerd 与 ingress-nginx 结合使用以及对服务的访问限制
出于简单,Linkerd 本身并没有提供内置的 Ingress 控制器,Linkerd 旨在与现有的 Kubernetes Ingress 解决方案一起使用。
我是阳明
2022/09/29
1.1K0
Linkerd 与 ingress-nginx 结合使用以及对服务的访问限制
Linkerd服务网格中重试与超时和金丝雀发布
在构建分布式系统时,保证可靠性是一项关键任务。Linkerd 是一个功能强大的服务网格工具,通过其重试与超时机制,可以帮助应对临时错误和延迟问题,从而提高系统的可靠性。本文将深入探讨 Linkerd 中的重试与超时特性,以及它们如何帮助应对故障和提升用户体验。
王先森sec
2024/01/13
1840
Linkerd服务网格中重试与超时和金丝雀发布
详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代
Linkerd 提供了许多功能,如:自动 mTLS、自动代理注入、分布式追踪、故障注入、高可用性、HTTP/2 和 gRPC 代理、负载均衡、多集群通信、重试和超时、遥测和监控、流量拆分(金丝雀、蓝/绿部署)等。
为少
2021/07/07
1.4K0
推荐阅读
相关推荐
快速上手 Linkerd v2 Service Mesh
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文