全栈工程师开发手册 (作者:栾鹏)
架构系列文章


官方地址:https://linkerd.io/2/getting-started/

步骤1:安装CLI

如果这是您第一次运行Linkerd,则需要将命令行界面(CLI)下载到本地计算机上。此CLI与Linkerd进行交互,包括将控制平面安装到Kubernetes集群上。

要安装CLI,请运行:

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

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

接下来,将linkerd客户端复制到环境变量目录下/usr/local/bin/下,并重命名为linkerd:这样就能在任何地方使用linker命令了

cp linkerd-stable-2.6.0 /usr/local/bin/linkerd

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

linkerd version

您应该看到CLI版本,以及Server version: unavailable。这是因为您尚未在集群上安装控制平面。不用担心,您将很快安装控制平面。

步骤3:将Linkerd安装到群集上

现在您已经有了在本地运行的CLI和可以使用的集群,现在该将控制平面安装到其自己的名称空间中了(默认情况下为 linkerd)。为此,请运行:

linkerd install >> deploy-linker.yaml

该linkerd install命令将生成带有所有必要控制平面资源的Kubernetes清单。(如果需要,您可以检查输出!)。

deploy-linker.yaml文件中有部分镜像是无法拉取的,需要我们转为或制作为国内镜像. 我们可以使用github和阿里云仓库来制作成国内镜像,参考:https://blog.csdn.net/luanpeng825485697/article/details/83378731
我这里已经制作了部分版本的镜像

gcr.io/linkerd-io/web:stable-2.6.0
替换为
registry.cn-shenzhen.aliyuncs.com/luanpeng/gcr.io.linkerd-io.web:stable-2.6.0

gcr.io/linkerd-io/proxy:stable-2.6.0
替换为
registry.cn-shenzhen.aliyuncs.com/luanpeng/gcr.io.linkerd-io.proxy:stable-2.6.0

gcr.io/linkerd-io/proxy-init:v1.2.0
替换为
registry.cn-shenzhen.aliyuncs.com/luanpeng/gcr.io.linkerd-io.proxy-init:v1.2.0

prom/prometheus:v2.11.1
替换为
registry.cn-shenzhen.aliyuncs.com/luanpeng/prom.prometheus:v2.11.1

gcr.io/linkerd-io/grafana:stable-2.6.0
替换为
registry.cn-shenzhen.aliyuncs.com/luanpeng/gcr.io.linkerd-io.grafana:stable-2.6.0

这样在通过kubectl apply将清单插入其中将指示Kubernetes将这些资源添加到您的集群中,要求kubernetes在1.12版本以上。

根据群集的Internet连接速度,群集可能需要一两分钟才能提取Linkerd映像。发生这种情况时,我们可以通过运行以下命令来验证安装:

linkerd check

该命令将耐心等待,直到Linkerd已安装,正在运行并变得正常为止。

打开dashboard

本地代理的方式

linkerd dashboard &

开发 linkerd-web service的端口

为应用注入

1 命令注入

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

此命令检索在yournamespace 名称空间中运行的所有部署,通过运行linkerd inject,然后将其重新应用于集群。该linkerd inject命令将注释添加到Pod规范,指示Linkerd添加(“注入”)数据平面的代理作为容器添加到Pod规范。

2 也可以通过手动添加后apply文件

也就是在deployment的spec/template中添加 annotations: linkerd.io/inject: enabled

spec:  
  selector:
    matchLabels:
      app: yourapp
      version: v1.0.0
  replicas: 2  
  template: 
    metadata:
      annotations: 
        linkerd.io/inject: enabled
#        linkerd.io/inject: disabled  禁用自动注入
      labels:
        app: yourapp
        version: v1.0.0
    spec: 

注入效果

每个应用pod会增加两个容器

  • linkerd-init,一个Kubernetes 初始化容器 ,配置iptables为通过代理自动转发所有传入和传出的TCP流量。(请注意,如果已启用Linkerd CNI插件,则此容器不存在。)
  • linkerd-proxy,Linkerd数据平面代理本身。

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

linkerd -n yournamespace check --proxy

监控

linkerd -n yournamespace stat deploy        实时流量指标
linkerd -n yournamespace top deploy         查看每种请求的统计情况(次数,最大时延,最小时延等)
linkerd -n yournamespace tap deploy        查看每次请求的情况

而这些都是可以在web界面中查看到的,所以我们可以通过web界面查看.
在这里插入图片描述
同时在web界面还配有grafana显示

参考:https://mp.weixin.qq.com/s?__biz=MzIwNDIzODExOA==&mid=2650167427&idx=1&sn=dc219a9e725d371086065fc00e78182f&chksm=8ec1c4cab9b64ddc263d97e995a91be0f38628d2452c40d15421cfa4a5fe77ca643a8ef073e1&mpshare=1&scene=1&srcid=&sharer_sharetime=1572345436364&sharer_shareid=13fe4d560ad7f178a70a6b90efad8011#rd

Logo

开源、云原生的融合云平台

更多推荐