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

安装 Linkerd 很容易。首先,您将在本地计算机上安装 CLI(命令行界面)。 使用此 CLI,然后您将控制平面安装到您的 Kubernetes 集群上。 最后,您将通过向它们添加 Linkerd 的数据平面来“网格化(mesh)”您自己的一个或多个服务。

设置

在我们做任何事情之前,我们需要确保您可以访问 Kubernetes 集群并在本地机器上运行 kubectl 命令。(如果您还没有 Kubernetes 集群,一个简单的选择是在您的本地机器上运行一个。有很多方法可以做到这一点,包括 kindk3dDocker 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 &

此命令设置从本地系统到 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

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

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

我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)

快速上手 Linkerd v2 Service Mesh(服务网格)的更多相关文章

  1. Service Mesh服务网格新生代--Istio(转)

    万字解读:Service Mesh服务网格新生代--Istio  官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...

  2. Service Mesh服务网格:是什么和为什么

    Service Mesh服务网格:是什么和为什么 - 好雨云帮 CSDN 博客 - CSDN博客 https://blog.csdn.net/zyqduron/article/details/8043 ...

  3. Service Mesh服务网格清单

    Service Mesh服务网格清单 Istio Istio官网 Istio中文官网 Istio开源 无需太多介绍Service Mesh明日之星,扛把子,截止2019.11还有太多问题没解决 复杂性 ...

  4. Service Mesh服务网格新生代--Istio

    原文: 数人云|万字解读:Service Mesh服务网格新生代--Istio 参考: istio 简介 Istio是啥?一文带你彻底了解! 使用Istio治理微服务入门 Istio 流量管理 ist ...

  5. Service Mesh服务网格之Linkerd架构

    今天详细介绍一下Linkerd的架构. 控制平面 Linkerd控制平面是一组在专用Kubernetes命名空间中运行的服务(在Linked默认情况下).这些服务完成各种事情——聚合遥测数据.提供面向 ...

  6. Service Mesh服务网格新生代——Istio

    Istio 是什么?使用云平台可以为组织提供丰富的好处.然而,不可否认的是,采用云可能会给 DevOps 团队带来压力.开发人员必须使用微服务已满足应用的可移植性,同时运营商管理了极其庞大的混合和多云 ...

  7. Linkerd Service Mesh 服务配置文件规范

    服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...

  8. 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代

    Linkerd 提供了许多功能,如:自动 mTLS.自动代理注入.分布式追踪.故障注入.高可用性.HTTP/2 和 gRPC 代理.负载均衡.多集群通信.重试和超时.遥测和监控.流量拆分(金丝雀.蓝/ ...

  9. 腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用

    Linkerd 是 Kubernetes 的服务网格. 它通过为您提供运行时调试(runtime debugging).可观察性(observability).可靠性(reliability)和安全性 ...

随机推荐

  1. k8s service NodePort 方式向外发布

    k8s service NodePort 方式向外发布 k8s 无头service 方式向内发布 k8s service 服务发现 {ServiceName}.{Namespace}.svc.{Clu ...

  2. Android Studio在android Emulator中运行的项目黑屏

    前言: 最近在做一个Android相关的小项目,因为之前这方面的项目做的比较的少.今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题,经过自己多次的尝试和搜索终于解决了这些问题. 问题: 每次run ...

  3. ASP检测客户是否取消微信公众号

    有时因为项目内需要用到检测客户是否已经取消关注微信公众号,只有没被取消执行相关模板信息发送.图文信息发送.视频语音等信息发送给客户才有意义.也可以知道多少客户还在我们的微信公众号关注内.方便后期做公众 ...

  4. 没有SEO的DiscuzQ 值不值得站长选择?

    此文写于2021年1月22日.至少到今天,Discuz Q 依然没有推出SEO的解决方案. 据官方团队交流说,SEO是在需求池中排在第一位,但目前还没有相应的措施来解决无法SEO. Discuz Q: ...

  5. HTML5中meta属性的使用详解

    meta属性在HTML中占据了很重要的位置.如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等.虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能够熟 ...

  6. <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  7. 【python】Leetcode每日一题-螺旋矩阵

    Leetcode每日一题-螺旋矩阵 [题目描述] 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例1: 输入:matrix = [[1,2,3], ...

  8. XAMPP修改Apache默认网站目录htdocs的详解

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成环境包,大量站长在使用.正确安装好XAMPP后,默认是必须将php程序放到xampp\htdocs文件 ...

  9. SQL Server强制使用特定索引 、并行度、锁

    SQL Server强制使用特定索引 .并行度 修改或删除数据前先备份,先备份,先备份(重要事情说三遍) 很多时候你或许为了测试.或许为了规避并发给你SQL带来的一些问题,常常需要强制指定目标sql选 ...

  10. 改善c++程序的150个建议(读后总结)-------12-18

    12.优先使用前置操作符 #include <iostream> using namespace std; class A { private: int num; public: A op ...