快速上手

快速上手

欢迎来到 Linkerd! 🎈

在本指南中,我们将引导您了解如何将 Linkerd 安装到您的 Kubernetes 集群中。然后我们将部署一个示例应用程序来展示 Linkerd 的功能。

本指南旨在引导您了解 Linkerd 的基础知识。首先,您将在本地计算机上安装 CLI(命令行界面)。使用此 CLI,然后您将 控制平面 安装到您的 Kubernetes 集群上。最后,您将通过向它们添加 Linkerd数据平面网格化(mesh) 您自己的一个或多个服务。

Step 0: 设置

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

通过运行以下命令验证您的 Kubernetes 设置:

kubectl version --short

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

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

(注意:如果您使用的是 GKE “私有集群”,则需要一些额外的步骤才能继续下一步。)

Step 1: 安装 CLI

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

要手动安装 CLI,请运行:

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

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

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

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

linkerd version

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

Step 2: 验证您的 Kubernetes 集群

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

linkerd check --pre

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

Step 3: 安装控制平面到你的集群

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

linkerd install | kubectl apply -f -

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

此处介绍的基于 CLI 的安装既快速又简单,但还有多种其他方法可以安装 Linkerd,包括使用 Helm charts;通过对具有严格安全策略的集群使用多阶段安装;或者使用来自 Kubernetes 提供商的 marketplace 安装。

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

linkerd check

Step 4: 安装 demo app

恭喜,Linkerd 安装成功!但是,它还没有做任何事情。要查看 Linkerd 的运行情况,我们需要一个应用程序。

让我们安装一个名为 Emojivoto 的演示应用程序。Emojivoto 是一个简单的独立 Kubernetes 应用程序,它混合使用 gRPCHTTP 调用,允许用户对他们最喜欢的表情符号进行投票。

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

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

此命令将 Emojivoto 安装到您的集群上,但尚未在其上激活 Linkerd — 我们需要先 mesh 应用程序,然后 Linkerd 才能发挥其魔力。

在对它进行 mesh 之前,让我们先看看 Emojivoto 的自然状态。我们将通过将流量转发到它的 web-svc 服务来做到这一点,以便我们可以将浏览器指向它。通过运行以下命令将 web-svc 本地转发到端口 8080

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

现在访问 localhost:8080

点击周围,您可能会注意到 emojivoto 的某些部分有点坏了!例如,如果你点击一个甜甜圈表情符号(donut emoji),你会得到一个 404 页面。别担心,这些错误是故意的。
(在后面的指南中,我们将向您展示如何使用 Linkerd 来识别此问题。)

安装并运行 Emoji 后,我们准备对它进行 mesh,即向其中添加 Linkerd数据平面代理。由于 Kubernetes 的滚动部署,我们可以在不停机的情况下在实时应用程序上执行此操作。通过运行以下命令将您的 Emojivoto 应用程序网格化:

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

此命令检索在 emojivoto 命名空间中运行的所有部署,通过 linkerd inject 运行它们的清单,然后将其重新应用到集群。(linkerd inject 命令只是在 pod 规范中添加 annotations,指示 Linkerd 在创建 pod 时将 proxy 注入到其中。)

install 一样,inject 是一个纯文本操作,这意味着你可以在使用之前检查输入和输出。一旦管道进入 kubectl applyKubernetes 将执行滚动部署并使用 数据平面代理 更新每个 pod

恭喜! 您现在已将 Linkerd 添加到应用程序中!就像 控制平面 一样,可以在 数据平面 一侧验证一切是否按应有的方式工作。检查您的 数据平面

linkerd -n emojivoto check --proxy

Step 5: 探索 Linkerd !

也许最后一步有点不尽如人意。我们在 Emojivoto 中添加了 Linkerd,但应用程序没有明显变化!这是 Linkerd 设计的一部分——它尽量不干扰一个正常运行的应用程序。

让我们仔细看看 Linkerd 实际上在做什么。去做这个,我们需要安装一个 扩展Linkerd 的核心 控制平面 非常小,因此 Linkerd 附带了一些扩展,这些扩展为Linkerd 添加了非关键但通常有用的功能,包括各种仪表板。

对于本指南,我们将需要以下其中一项:

  1. viz 扩展,将安装集群上的指标堆栈(metrics stack);或者
  2. buoyant-cloud 扩展,将连接到托管的指标堆栈。

您可以安装一个或两个扩展。要安装 viz 扩展,请运行:

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

要安装 buoyant-cloud 扩展,请运行:

curl -fsL https://buoyant.cloud/install | sh # get the installer
linkerd buoyant install | kubectl apply -f - # connect to the hosted metrics stack

安装扩展程序后,让我们最后一次验证所有内容:

linkerd check

安装并运行 控制平面扩展 后,我们现在准备探索 Linkerd!如果您安装了 viz 扩展,请运行:

linkerd viz dashboard &

你应该看到这样的屏幕:

The Linkerd dashboard in action

如果您安装了 buoyant-cloud 扩展,请运行:

linkerd buoyant dashboard &

你应该看到这样的屏幕:
The Buoyant Cloud dashboard in action

点击周围,探索,玩得开心!看看您是否可以找到每个 Emojivoto 组件的实时指标,并确定哪个组件出现了部分故障。(有关这方面的更多信息,请参阅下面的调试教程。)

就是这样!👏

恭喜!以下是一些建议的后续步骤: