1. 首页 > 快讯

Linkerd Service Mesh 快速上手-service mesh istio

大家好,今天小编来为大家解答以下的问题,关于Linkerd Service Mesh 快速上手-service mesh istio,这个很多人还不知道,现在让我们一起来看看吧!

容器网络接口插件:Linkerd 可以配置为运行CNI 插件,该插件会自动重写每个pod 的iptables 规则。

仪表板和 Grafana:Linkerd 提供Web 仪表板以及预配置的Grafana 仪表板。

分布式追踪:您可以在Linkerd 中启用分布式跟踪支持。

故障注入:Linkerd 提供了一种以编程方式将故障注入服务的机制。

高可用性:Linkerd控制平面可以在高可用性(HA)模式下运行。

HTTP、HTTP/2 和 gRPC 代理:Linkerd 将自动为HTTP、HTTP/2 和gRPC 连接启用高级功能(包括指标、负载平衡、重试等)。

Ingress:Linkerd 可与您选择的入口控制器配合使用。

负载均衡:Linkerd 自动对HTTP、HTTP/2 和gRPC 连接上的所有目标端点的请求进行负载平衡。

多集群通信:Linkerd 可以透明、安全地连接运行在不同集群中的服务。

重试和超时:Linkerd 可以执行特定于服务的重试和超时。

服务配置文件:Linkerd 的服务配置文件支持每个路由指标以及重试和超时。

TCP 代理和协议检测:Linkerd 能够代理所有TCP 流量,包括TLS 连接、WebSocket 和HTTP 隧道。

遥测和监控:Linkerd 自动从通过其发送流量的所有服务收集指标。

流量拆分(金丝雀、蓝/绿部署):Linkerd 可以动态地将一部分流量发送到不同的服务。

安装

我们可以在本地安装一个Linkerd CLI命令行工具,通过该工具可以在Kubernetes集群上安装Linkerd控制平面。

因此首先需要在本地运行kubectl 命令,以确保可以访问可用的Kubernetes 集群。如果没有集群,可以使用KinD在本地快速创建一个。

$ kubectl 版本--short

客户端版本: v1.23.5

服务器版本: v1.22.8可以使用以下命令在本地安装Linkerd CLI工具:

$curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh 如果是Mac系统,也可以使用Homebrew工具一键安装:

$brew install linkerd 同样直接到Linkerd Release页面https://github.com/linkerd/linkerd2/releases/下载安装。

安装完成后,使用以下命令验证CLI工具是否安装成功:

$ 链接器版本

客户端版本: stable-2.11.1

Server version: unavailable 正常情况下我们可以看到CLI版本信息,但是会出现Server version: unavailable信息。这是因为我们还没有在Kubernetes 集群上安装控制平面,所以接下来我们要安装Server 端。

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

$ linkerd 检查--pre

Linkerd 核心检查

===================

kubernetes-api

----------------

可以初始化客户端

可以查询Kubernetes API

kubernetes 版本

------------------

正在运行最低Kubernetes API 版本

正在运行最低kubectl 版本

预kubernetes 设置

-------------------

控制平面命名空间尚不存在

可以创建非命名空间资源

可以创建ServiceAccounts

可以创建服务

可以创建Deployment

可以创建CronJobs

可以创建ConfigMap

可以创建Secret

能读懂秘密

可以读取extension-apiserver-authentication configmap

未检测到时钟偏差

linkerd 版本

----------------

可以确定最新版本

cli 是最新的

正在运行版本2.11.1 但最新的稳定版本是2.11.4

请参阅https://linkerd.io/2.11/checks/#l5d-version-cli 以获取提示

状态检查结果为 如果所有检查均正常,则可以开始安装Linkerd 控制平面。只需执行以下命令即可一键安装:

$ linkerd 安装| kubectl apply -f - 在此命令中,linkerd install 会生成一个Kubernetes 资源清单文件,其中包含所有必需的控制平面资源,然后可以使用kubectl apply 命令将其安装到Kubernetes 集群中。

您可以看到Linkerd 控制平面将安装在名为linkerd 的命名空间下。安装完成后,将运行以下Pod:

$ kubectl 获取pod -n linkerd

名称就绪状态重新开始年龄

linkerd-destination-79d6fc496f-dcgfx 4/4 运行0 166m

linkerd-identity-6b78ff444f-jwp47 2/2 运行0 166m

linkerd-proxy-injector-86f7f649dc-v576m 2/2 Running 0 166m安装完成后,运行以下命令等待控制平面就绪,验证安装结果是否正常:

$ linkerd 检查

Linkerd 核心检查

===================

kubernetes-api

----------------

可以初始化客户端

可以查询Kubernetes API

kubernetes 版本

------------------

正在运行最低Kubernetes API 版本

正在运行最低kubectl 版本

linkerd-存在

------------------

'linkerd-config' 配置映射存在

心跳ServiceAccount存在

控制平面副本集已准备就绪

没有不可调度的Pod

控制平面吊舱已准备就绪

集群网络包含所有节点的podCIDR

链接器配置

----------------

控制平面命名空间存在

控制平面ClusterRoles 存在

控制平面ClusterRoleBindings 存在

控制平面ServiceAccounts存在

控制平面CustomResourceDefinitions 存在

控制平面MutatingWebhookConfigurations 存在

控制平面ValidatingWebhookConfigurations 存在

linkerd 身份

----------------

证书配置有效

信任锚正在使用受支持的加密算法

信任锚在有效期内

信任锚的有效期至少为60天

颁发者证书正在使用支持的加密算法

发行人证书在有效期内

颁发者证书的有效期至少为60 天

发行人证书由信任锚签发

linkerd-webhooks-和-apisvc-tls

----------------------------------

代理注入器webhook 具有有效的证书

代理注入者证书的有效期至少为60 天

sp-validator webhook 具有有效的证书

sp-validator 证书有效期至少60 天

策略验证器webhook 具有有效的证书

策略验证者证书的有效期至少为60 天

linkerd 版本

----------------

可以确定最新版本

cli 是最新的

正在运行版本2.11.1 但最新的稳定版本是2.11.4

请参阅https://linkerd.io/2.11/checks/#l5d-version-cli 以获取提示

控制平面版本

--------------------------

可检索控制平面版本

控制平面已更新

正在运行版本2.11.1 但最新的稳定版本是2.11.4

有关提示,请参阅https://linkerd.io/2.11/checks/#l5d-version-control

控制平面和cli版本匹配

linkerd 控制平面代理

--------------------------

控制平面代理是健康的

控制平面代理是最新的

某些代理未运行当前版本:

* linkerd-destination-79d6fc496f-dcgfx(稳定-2.11.1)

* linkerd-identity-6b78ff444f-jwp47(稳定-2.11.1)

* linkerd-proxy-injector-86f7f649dc-v576m(稳定-2.11.1)

有关提示,请参阅https://linkerd.io/2.11/checks/#l5d-cp-proxy-version

控制平面代理和cli 版本匹配

状态检查结果为 当出现上述状态检查结果为 信息时,表示Linkerd 控制平面安装成功。除了使用CLI工具安装控制平面外,我们还可以通过Helm Chart进行安装,如下图:

$ helm 仓库添加linkerd https://helm.linkerd.io/stable

# 在Mac: 中设置一年后的到期日期

$ exp=$(日期-v+8760H +'%Y-%m-%dT%H:%M:%SZ')

# 在Linux: 中

$ exp=$(日期-d '+8760 小时' +'%Y-%m-%dT%H:%M:%SZ')

$ helm 安装linkerd2 \

--set-file IdentityTrustAnchorsPEM=ca.crt \

--set-file Identity.issuer.tls.crtPEM=issuer.crt \

--set-file Identity.issuer.tls.keyPEM=issuer.key \

--set Identity.issuer.crtExpiry=$exp \

linkerd/linkerd2 此外,此图表包含一个values-ha.yaml文件,该文件会覆盖一些默认值以在高可用性场景中设置,类似于linkerd安装中的--ha选项。我们可以通过获取图表文件来获取values-ha.yaml:

$ helm fetch --untar linkerd/linkerd2 然后使用-f 标志提供覆盖文件,例如:

## 参见上文如何设置$exp

舵安装linkerd2 \

--set-file IdentityTrustAnchorsPEM=ca.crt \

--set-file Identity.issuer.tls.crtPEM=issuer.crt \

--set-file Identity.issuer.tls.keyPEM=issuer.key \

--set Identity.issuer.crtExpiry=$exp \

-f linkerd2/values-ha.yaml \

Linkerd/linkerd2 可以通过任何方式安装。现在我们已经完成了Linkerd的安装。重新执行linkerd version命令查看服务器版本信息:

$ 链接器版本

客户端版本: stable-2.11.1

服务器版本: stable-2.11.1

示例

接下来我们安装一个简单的示例应用程序Emojivoto,这是一个简单的独立Kubernetes应用程序,它混合使用gRPC和HTTP调用来允许用户自定义他们最喜欢的表情符号。投票。

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

$curl -fsL https://run.linkerd.io/emojivoto.yml | kubectl 应用-f-

创建命名空间/表情符号

已创建服务帐户/表情符号

已创建服务帐户/投票

已创建服务帐户/网络

已创建服务/emoji-svc

已创建服务/投票svc

已创建服务/web-svc

创建了deployment.apps/emoji

创建了deployment.apps/vote-bot

部署.apps/投票已创建

已创建deployment.apps/web 可以看到该应用下总共有4个Pod服务。

$ kubectl 获取pods -n emojivoto

名称就绪状态重新开始年龄

emoji-66ccdb4d86-6vqvt 1/1 运行0 91s

vote-bot-69754c864f-k26fb 1/1 运行0 91s

投票-f999bd4d7-k44nb 1/1 运行0 91s

web-79469b946f-bz295 1/1 运行0 91s

$ kubectl 获取svc -n emojivoto

名称类型集群IP 外部IP 端口年龄

emoji-svc ClusterIP 10.111.7.125 无8080/TCP,8801/TCP 2m49s

vote-svc ClusterIP 10.105.192.118 无8080/TCP,8801/TCP 2m48s

web-svc ClusterIP 10.111.236.171 none 80/TCP 2m48s 我们可以通过port-forward 暴露web-svc 服务,然后在浏览器中访问应用程序。

$ kubectl -n emojivoto port-forward svc/web-svc 8080:80现在我们可以通过http://localhost:8080 在浏览器中访问Emojivoto 应用程序。

我们可以在页面上选择自己喜欢的表情进行投票,但是选择某些表情后会出现一些错误。例如,当我们点击甜甜圈表情符号时,我们会得到一个404页面。

但不用担心,这是应用程序中故意留下的错误,以便稍后可以使用Linkerd 来识别问题。

接下来,我们可以将上面的示例应用程序添加到Service Mesh 中,并为其添加Linkerd 的数据平面代理,然后直接运行以下命令来网格化Emojivoto 应用程序:

$ kubectl get -n emojivoto 部署-o yaml \

| linkerd注入-\

| kubectl 应用-f-

部署“表情符号”注入

注入部署“vote-bot”

注入部署“投票”

部署“web”注入

配置的deployment.apps/emoji

配置了deployment.apps/vote-bot

配置的deployment.apps/voting

上面配置的deployment.apps/web命令首先获取在emojivoto命名空间中运行的所有部署,然后通过linkerd注入运行它们的清单,然后将它们重新应用到集群。

请注意,linkerd注入命令仅向Pod规范添加启用linkerd.io/inject:的注释,并不会直接注入Sidecar容器。该注解指示Linkerd在创建Pod时将代理注入到Pod中,因此执行上面的命令后,会在应用Pod中添加一个sidecar代理容器。

$ kubectl 获取pods -n emojivoto

名称就绪状态重新开始年龄

emoji-696d9d8f95-8wrmg 2/2 跑步0 34m

vote-bot-6d7677bb68-c98kb 2/2 运行0 34m

投票-ff4c54b8d-rdtmk 2/2 运行0 34m

web-5f86686c4d-qh5bz 2/2 Running 0 34m 可以看到每个Pod 现在有2 个容器,比之前多了一个Linkerd sidecar 代理容器。

当应用程序更新完成时

后,我们就成功将应用引入到 Linkerd 的网格服务中来了,新增的代理容器组成了数据平面,我们也可以通过下面的命令检查数据平面状态: $ linkerd -n emojivoto check --proxy Linkerd core checks =================== kubernetes-api -------------- √ can initialize the client √ can query the Kubernetes API kubernetes-version ------------------ √ is running the minimum Kubernetes API version √ is running the minimum kubectl version linkerd-existence ----------------- √ 'linkerd-config' config map exists √ heartbeat ServiceAccount exist √ control plane replica sets are ready √ no unschedulable pods √ control plane pods are ready √ cluster networks contains all node podCIDRs linkerd-config -------------- √ control plane Namespace exists √ control plane ClusterRoles exist √ control plane ClusterRoleBindings exist √ control plane ServiceAccounts exist √ control plane CustomResourceDefinitions exist √ control plane MutatingWebhookConfigurations exist √ control plane ValidatingWebhookConfigurations exist linkerd-identity ---------------- √ certificate config is valid √ trust anchors are using supported crypto algorithm √ trust anchors are within their validity period √ trust anchors are valid for at least 60 days √ issuer cert is using supported crypto algorithm √ issuer cert is within its validity period √ issuer cert is valid for at least 60 days √ issuer cert is issued by the trust anchor linkerd-webhooks-and-apisvc-tls ------------------------------- √ proxy-injector webhook has valid cert √ proxy-injector cert is valid for at least 60 days √ sp-validator webhook has valid cert √ sp-validator cert is valid for at least 60 days √ policy-validator webhook has valid cert √ policy-validator cert is valid for at least 60 days linkerd-identity-data-plane --------------------------- √ data plane proxies certificate match CA linkerd-version --------------- √ can determine the latest version ‼ cli is up-to-date is running version 2.11.1 but the latest stable version is 2.11.4 see https://linkerd.io/2.11/checks/#l5d-version-cli for hints linkerd-control-plane-proxy --------------------------- √ control plane proxies are healthy ‼ control plane proxies are up-to-date some proxies are not running the current version: * linkerd-destination-79d6fc496f-dcgfx (stable-2.11.1) * linkerd-identity-6b78ff444f-jwp47 (stable-2.11.1) * linkerd-proxy-injector-86f7f649dc-v576m (stable-2.11.1) see https://linkerd.io/2.11/checks/#l5d-cp-proxy-version for hints √ control plane proxies and cli versions match linkerd-data-plane ------------------ √ data plane namespace exists √ data plane proxies are ready ‼ data plane is up-to-date some proxies are not running the current version: * emoji-696d9d8f95-8wrmg (stable-2.11.1) * vote-bot-6d7677bb68-c98kb (stable-2.11.1) * voting-ff4c54b8d-rdtmk (stable-2.11.1) * web-5f86686c4d-qh5bz (stable-2.11.1) see https://linkerd.io/2.11/checks/#l5d-data-plane-version for hints √ data plane and cli versions match √ data plane pod labels are configured correctly √ data plane service labels are configured correctly √ data plane service annotations are configured correctly √ opaque ports are properly annotated Status check results are √当然,我们还是可以通过 http://localhost:8080​ 访问应用,当然在使用上和之前没什么区别,我们可以通过 Linkerd 去查看应用实际上做了哪些事情,但是我们需要去单独安装一个插件,由于 Linkerd 的核心控制平面非常轻量级, 所以 Linkerd 附带了一些插件,这些插件为 Linkerd 添加了一些非关键但通常有用的功能,包括各种仪表板,比如我们可以安装一个 viz​ 插件,Linkerd-Viz 插件包含 Linkerd 的可观察性和可视化组件。安装命令如下所示: $ linkerd viz install | kubectl apply -f -上面的命令会创建一个名为 linkerd-viz 的命名空间,会在该命名空间中安装监控相关的应用,比如 Prometheus、Grafana 等。 $ kubectl get pods -n linkerd-viz NAME READY STATUS RESTARTS AGE grafana-8d54d5f6d-wwtdz 2/2 Running 0 3h1m metrics-api-6c59967bf4-pjwdq 2/2 Running 0 4h22m prometheus-7bbc4d8c5b-5rc8r 2/2 Running 0 4h22m tap-599c774dfb-m2kqz 2/2 Running 0 4h22m tap-injector-748d54b7bc-jvshs 2/2 Running 0 4h22m web-db97ff489-5599v 2/2 Running 0 4h22m安装完成后,我们可以使用下面的命令打开一个 dashboard 页面: $ linkerd viz dashboard &当 viz 插件部署完成后,执行上面的命令后会自动在浏览器中打开一个 Linkerd 的可观察性的 Dashboard。 此外我们也可以通过 Ingress 来暴露 viz 服务,创建如下所示的资源对象: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: web-ingress namespace: linkerd-viz annotations: nginx.ingress.kubernetes.io/upstream-vhost: $service_name.$namespace.svc.cluster.local:8084 nginx.ingress.kubernetes.io/configuration-snippet: | proxy_set_header Origin ""; proxy_hide_header l5d-remote-ip; proxy_hide_header l5d-server-id;spec: ingressClassName: nginx rules: - host: linkerd.k8s.local http: paths: - path: / pathType: Prefix backend: service: name: web port: number: 8084应用后就可以通过 linkerd.k8s.local 访问 viz 了。还可以显示自动生成的拓扑图。在页面上我们可以找到每个 Emojivoto 组件的实时指标,就可以确定哪个组件出现了部分故障了,这样就可以有针对性的去解决问题了。 在对应的资源后面包含一个 Grafana 的图标,点击可以自动跳转到 Grafana 的监控页面。

好了,关于Linkerd Service Mesh 快速上手-service mesh istio和的问题到这里结束啦,希望可以解决您的问题哈!

用户评论

限量版女汉子

终于找到了解释 Linkerd 就简单明了的教程!

    有16位网友表示赞同!

致命伤

一直在想搞明白服务网格的概念,看来这个教程能帮我入门。

    有8位网友表示赞同!

挽手余生ら

Istio 作为热门技术也是很吸引人的,希望能在这篇教程中了解它的应用场景。

    有7位网友表示赞同!

陌上花

上手 Linkerd 服务网格听起来很棒!速度快才是硬道理啊。

    有5位网友表示赞同!

淡抹丶悲伤

对于微服务架构来说,Linkerd 是个不错的选择吗?教程里能解答这个疑问吗?

    有7位网友表示赞同!

我一个人

我一直对服务网格很感兴趣,希望能通过这个教程深入了解它的原理和优势。

    有11位网友表示赞同!

心安i

想学习一下服务网格相关的技术,Linkerd 听起来是个不错的入门工具。

    有20位网友表示赞同!

醉红颜

快速上手是关键!期待教程能清晰地介绍 Linkerd 的使用方法。

    有7位网友表示赞同!

青衫负雪

需要快速提高微服务的部署效率,服务网格是不是个好方案?

    有7位网友表示赞同!

┲﹊怅惘。

学习 Istio 相对复杂吗?这篇文章能否为我提供一些入门指南?

    有13位网友表示赞同!

在哪跌倒こ就在哪躺下

在实践中如何应用这些服务网格技术呢?教程里会有相关案例吗?

    有8位网友表示赞同!

逾期不候

希望这篇教程能涵盖 Linkerd 的主要功能和特点。

    有16位网友表示赞同!

封心锁爱

学习新的技术总让人兴奋,期待这篇文章能带给我启发!

    有6位网友表示赞同!

暖瞳

通过这个教程能否学到一些实际操作的技巧来部署服务网格?

    有18位网友表示赞同!

伪心

微服务架构越来越流行了,了解服务网格技术显得尤为重要。

    有19位网友表示赞同!

失心疯i

Linkerd 的性能怎么样?这篇教程会对比它和其他服务网格吗?

    有19位网友表示赞同!

追忆思域。

学习 Istio 和 Linkerd 能够给我带来哪些机遇?

    有13位网友表示赞同!

﹎℡默默的爱

这个教程适合什么水平的读者,我需要提前了解一些基础知识吗?

    有10位网友表示赞同!

▼遗忘那段似水年华

期待这个快速上手的教程能帮我轻松入门服务网格!

    有7位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7176.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666