问题标签 [linkerd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
421 浏览

kubernetes - Kubernetes - Service Mesh 是必须的吗?

最近我用 Nginx 入口控制器在 k8s 集群中构建了几个微服务,它们工作正常。

在处理微服务之间的通信时,我尝试了 gRPC,它成功了。然后我发现当微服务 A -> gRPC -> 微服务 B 时,所有请求只发生在微服务 B 的 1 个 pod 上(例如,微服务 B 总共有 10 个 pod 可用)。为了对微服务 B 的所有 pod 的请求进行负载平衡,我尝试了 linkerd,它成功了。但是,我意识到 gRPC 有时会产生内部错误(例如 100 个请求中的 1 个错误),使我改用 k8s DNS 方式(例如 my-svc.my-namespace.svc.cluster-domain.example)。然后,请求永远不会失败。我开始支持 gRPC 和 linkerd。

后来,我对 istio 产生了兴趣。我成功地将它部署到集群中。但是,我观察到它总是创建自己的负载均衡器,这与现有的 Nginx 入口控制器不太匹配。

此外,我尝试了 prometheus 和 grafana,以及 k9s。这些工具让我更好地了解 Pod 的 CPU 和内存使用情况。

在这里,我有几个问题想了解:-

  1. 如果我需要监控集群资源,我们有prometheus、grafana和k9s。它们是否与服务网格(例如 linkerd、istio)具有相同的监控作用?
  2. 如果 k8s DNS 已经可以实现负载均衡,那我们还需要 Service Mesh 吗?
  3. 如果使用没有服务网格的 k8s,是否落后于正常做法?

其实我也想每天都用服务网格。

0 投票
1 回答
36 浏览

kubernetes - 从链接器注入部署到正常部署的请求路径

我的 Kubernetes 集群中有很多部署。HTTP/1.x 请求的路径如何从一个注入了 linkerd 的 pod 到另一个没有注入 linkerd 的 pod?

0 投票
1 回答
21 浏览

microservices - Linkerd 代理指标重置

晚上好,

我是罗马 Tor Vergata 大学的学生。我目前正在撰写涉及 Linkerd 使用的硕士论文。这篇论文非常简单,是关于为微服务架构实现一个完全分布式的根本原因定位系统。在指标收集阶段,我遇到了 Linkerd 的问题,因为我没有使用 Prometheus,而是通过 /metrics 端点手动从代理中抓取指标。我不明白 Linkerd 的代理如何或何时重置他们收集的各种指标。有人知道他们有没有计时器吗?或者有没有办法让他们在抓取后重置指标?

提前感谢任何人会给我的任何帮助。

0 投票
0 回答
46 浏览

linkerd - LinkerD Cert Rotation 未在文档中明确描述

我最近开始使用 LinkerD 并尝试在集群上设置它。我面临的问题是证书轮换。LinkerD 文档没有详细说明如何使用颁发者证书为代理请求生成 CSR 的过程,也没有提到如何使用证书管理器来存储颁发者证书。

如果我没有遗漏任何东西,您能否指点我完全阐述相同内容的文档?

另外,我想澄清一下,如果我们只是生成根证书和中间证书,然后使用它注入它,那么它--identity-trust-anchors-file--identity-issuer-certificate-file起作用吗,或者我们需要专门找到如何轮换证书。

我可能在错误的频道上发帖,但缺乏文档导致我提出上述问题。

0 投票
2 回答
228 浏览

kubernetes - 基于动态标头的路由和回退

我想根据标头将流量路由到 pod - 带有后备。

期望的结果将是一个 k8s 集群,其中可以部署同一服务的多个版本并使用标头值路由到该集群。

svcA svcB svcC

这些服务中的每一个(git repo 的主分支)都将部署到默认命名空间或标记为“main”。每个服务的任何功能分支也可以部署到其自己的命名空间中或标有分支名称。

理想情况下,通过将标头设置为X-svcA与分支名称匹配的值,我们会将任何流量路由到匹配的命名空间或标签。如果没有这样的名称空间或标签,请将流量路由到默认(主)pod。

第一个问题 - istio 或 linkerd 是否可能(或类似的东西)

0 投票
1 回答
3385 浏览

kubernetes - 修复 Argo CD 中的不同步警告 - 无法忽略可选的“preserveUnknownFields”字段

Argo CD 显示来自 linkerd(由 Helm 安装)的两个项目不同步。警告是由该部分中的可选引起preserveUnknownFields: falsespec

trafficsplits.split.smi-spec.io 在此处输入图像描述

在此处输入图像描述

serviceprofiles.linkerd.io

在此处输入图像描述

在此处输入图像描述

但我无法弄清楚如何忽略清单中使用ignoreDifferences的差异。json 路径不起作用Application/spec/preserveUnknownFields是因为左侧版本中不存在字段 preserveUnknownFields 吗?

0 投票
1 回答
657 浏览

kubernetes - 如何通过 Ingress 公开 Linkerd 仪表板

我有一个带有 Linkerd 和 NGINX 入口控制器的 3 节点 K3s 集群。我使用默认配置安装了 Linkerd:

然后为了安装 NGINX 入口控制器,我也使用了默认配置的 helm:

我可以通过调用来访问 Linkerd 仪表板linkerd viz dashboard,但我想使用 Ingress 定义公开仪表板。我从位于此处的 Linkerd 网站修改了示例 yaml 文件,以便我可以使用前缀路径。最后,我的 yaml 文件如下所示:

对于我的任何其他自定义微服务,我可以简单地通过我的 nginx 入口服务的公共 IP 地址访问它们。我可以像这样得到这个IP:

当我尝试通过 http://EXPOSED_IP/linkerd 访问仪表板时,系统提示我输入我的用户名和密码(默认均为admin),但随后出现 404 not found 错误。

有谁知道可能是什么问题?非常感谢!

0 投票
2 回答
212 浏览

linkerd - 使用 linkerd 和 argo 推出的 Canary 推出

我正在尝试为演示配置金丝雀推出,但我无法让流量拆分与 linkerd 一起使用。有趣的是,我能够使用 istio 来实现这一点,而且我发现 istio 比 linkerd 复杂得多。

我有一个基本的 go-lang 服务定义,如下所示:

当我通过 ArgoCD 进行部署(同步)时,我可以看到流量拆分为 50/50:

但是在while循环中执行curl命令我只能取回stable-svc。我唯一一次看到变化是在我将服务完全移动到 100% 之后。

我试图遵循这个:https ://argoproj.github.io/argo-rollouts/getting-started/smi/

任何帮助将不胜感激。

谢谢

0 投票
1 回答
94 浏览

amazon-web-services - Linkerd 仪表板在 AWS Cloud9 中不起作用

我正在尝试将 Linkerd 安装到我的 AWS EKS 集群。

一切正常,但我无法访问 Linkerd 仪表板..

我的 IDE 是 AWS Cloud9,我按照说明进行操作。

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

  2. linkerd version

  3. linkerd check --pre

  4. linkerd install | kubectl apply -f -

  5. linkerd check -> **All Green**

  6. linkerd viz install | kubectl apply -f -

  7. linkerd viz dashboard --port 33335 &

在浏览器中访问 http://localhost:33335 以查看仪表板

当我访问 http://localhost:33335 时,它说ERR_CONNECTION_REFUSED

教程显示了仪表板,但我不能……</p>

谢谢你。

0 投票
0 回答
30 浏览

linkerd - 具有未知响应的链接器响应类

我正在集成链接器,并添加路由配置。我根据 openAPI 文件生成 serviceProfile,如此所述, 我获得了以下规范:

它在那里添加了这个 responseClasses,它与我的 openapi 文件的可能响应相匹配。我的问题是,如果服务要回答此处不存在的代码(例如 5xx)怎么办。代理会继续转发它,还是会忽略整个响应?