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

Linkerd 2.x 入门指南

作者头像
CNCF
发布2019-12-04 16:06:22
2.2K1
发布2019-12-04 16:06:22
举报
文章被收录于专栏:CNCFCNCF

欢迎来到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
复制
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
复制
curl -sL https://run.linkerd.io/install | sh

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

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

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

代码语言:javascript
复制
export PATH=$PATH:$HOME/.linkerd2/bin

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

代码语言:javascript
复制
linkerd version

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

步骤2:验证Kubernetes集群

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

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

代码语言:javascript
复制
linkerd check --pre

步骤3:在集群上安装Linkerd

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

代码语言:javascript
复制
linkerd install | kubectl apply -f -

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

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

代码语言:javascript
复制
linkerd check

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

代码语言:javascript
复制
kubectl -n linkerd get deploy

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

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

步骤4:探索Linkerd

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

代码语言:javascript
复制
linkerd dashboard &

Dashboard

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

代码语言:javascript
复制
linkerd -n linkerd top deploy/linkerd-web

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

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

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

代码语言:javascript
复制
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
复制
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
复制
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
复制
linkerd -n emojivoto check --proxy

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

步骤6:看着它跑

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

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

代码语言:javascript
复制
linkerd -n emojivoto stat deploy

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

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

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

代码语言:javascript
复制
linkerd -n emojivoto top deploy

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

代码语言:javascript
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档