问题标签 [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 投票
1 回答
78 浏览

linkerd - Unable to prevent requests reaching the endpoint after circuit breaking is in action

I am trying to verify linkerd's circuit breaking configuration by requesting through simple error prone endpoint deployed as a pod in the same k8s cluster where linkerd is deployed as a daemonset.

I have noticed circuit breaking happening by observing the logs but when I try to hit the endpoint again I still recieve the response from the endpoint.

Setup and Test

I used below configs to setup linkerd and its endpoint,

https://raw.githubusercontent.com/linkerd/linkerd-examples/master/k8s-daemonset/k8s/linkerd-egress.yaml

https://raw.githubusercontent.com/zillani/kubex/master/examples/simple-err.yml

endpoint behaviour:

endpoint always return 500 internal server error

failure accrual setting: default responseClassifier: retryable5XX

proxy curl:

Observations

1. At the Admin Metrics

2. At the log

Problem

After the node being marked as dead, a new request to the linkerd (same http_proxy command above) is hitting the endpoint and returning the response.

0 投票
1 回答
439 浏览

linkerd - linkerd Dtab 表达式未按预期转换

我已经根据此入门页面在本地运行了linkerd,并且基本代理示例有效。我的用例要求我将 Web 请求代理到多个 .NET WebApi 服务之一,因此我制作了一个在本地运行的具有两条路由的小示例 WebApi 项目:

  1. 本地主机:58371 返回hello world
  2. localhost:58371/api/values 返回["value1", "value2"]

使用匹配的路由映射请求

如果我让我的linkerd.yaml文件开箱即用:

routers: - protocol: http dtab: | /svc => /#/io.l5d.fs

然后映射路由直接起作用:

curl -H "Host: web" http://localhost:4140/-->hello world

curl -H "Host: web" http://localhost:4140/api/values-->["value1", "value2"]

映射不匹配的路线

现在,我想映射localhost:4140/tacos--> localhost:58371/api/values。因此,我将 .yaml 文件更新为:

routers: - protocol: http dtab: | /svc => /#/io.l5d.fs; /tacos => /api/values; 并重新启动链接器。

然而,http://localhost:4140/似乎总是下决心http://localhost:58371/tacos,不是http://localhost:58371/api/values。我不明白什么?

我已经阅读了 linkerd 网站上的一堆示例 dtab 转换,并且在我的 yaml 文件中使用了一堆不同的配置。当然,我缺少的只是一些愚蠢的事情,因为这似乎是一个非常简单的用例。

0 投票
1 回答
71 浏览

microservices - Linkerd 不显示请求数、成功率和失败率

我是 linkerd 的新手,并试图通过 linkerd 和基于文件的服务发现将所有请求代理到我的微服务。我能够成功地做到这一点,并且请求成功地在端口 9990 上运行的管理仪表板中注册。

但我的问题是仪表板总是显示 N/A 的成功率和失败率。收到请求后,它会在几秒钟内变为 100%,然后再次返回 N/A。但我想通过 linkerd 跟踪我的所有请求,即我希望 linkerd 记住请求的数量以及成功率和失败率。

这是我的问题的屏幕截图

在此处输入图像描述

0 投票
0 回答
69 浏览

service-discovery - 基于 LinkerD 文件的服务发现不起作用

我无法在 LinkerD 中使用基于文件的服务发现。

这是我的目录结构:

LinkerD 配置文件如下所示:

这是我的初始 dcs 配置文件副本:

现在,如果我在 dcs 下添加任何新服务器,例如:

除非我重新启动 LinkerD,否则请求不会路由到新 VM。请建议这里可能有什么问题?

0 投票
1 回答
107 浏览

linkerd - 如何使用 linkerd 插件中的标识符设置 HTTP 状态代码

我正在使用 linkerD 在 Java 中设置授权插件。目前我正在使用标识符来拦截请求并检查用户是否被授权。(以https://github.com/linkerd/linkerd-examples/tree/master/plugins/header-classifier为例)

如果用户未经授权,则请求不应到达后端服务。在这种情况下,我会抛出运行时异常(如果有其他方法可以阻止请求到达后端,请告诉我)。Linkerd 将响应作为 502 Bad Gateway 发送。Linkerd 应该有一种机制,通过它我可以指定我想要发回的 HTTP 状态代码。

我尝试将 responseClassifier 与标识符一起使用,但看起来在引发异常时未调用 responseClassifier。

0 投票
1 回答
815 浏览

nginx - 支持动态路由到 Kubernetes 服务的反向代理:端口名和 WebSockets

我想对支持 WebSocket 的 Kubernetes 服务执行基于路径的动态路由。

例如,这条路径:

应该使用路径foo将流量路由到命名端口myport(默认命名空间)上的服务myservice

我使用以下 ConfiMap 路由器条目(使用 io.l5d.k8s 命名器)通过 Linkerd接近实现了这一点:

除了我需要在 Linkerd 中不可用的 WebSocket 支持之外,它可以工作。

我尝试使用正则表达式来定位NGINX并重写规则。这看起来像这样:

除了 NGINX 不会路由到 NGINX 启动后创建的服务之外,这很有效。我不确定这是否与 nginx 中的 DNS 缓存问题或对SRV DNS 记录的支持有关。这种情况应该在NGINX Plus中工作,但我必须依赖开源软件。

反向代理/服务网格支持动态路由到 K8s service:port 以及 WebSockets 的任何想法?

编辑 这可以用Istio完成吗?似乎必须在Istio 路由配置中指定一个硬编码的目的地。我可以在源(请求)上指定一个正则表达式,但不能使用正则表达式捕获组来指定目标。

0 投票
1 回答
176 浏览

scala - 如何构建简单的 Linkerd 命名器插件?

我正在尝试使用一些自定义命名器插件运行 linkerd,但在启动时失败。我已经获得了 io.l5d.fs 的源代码,并切断了所有业务逻辑,以获得一些带有硬编码地址的简约示例。

初始化器:

配置:

姓名:

构建.sbt

我还暴露了 META-INF/services/io.buoyant.namer.NamerInitializer 下的“com.consg.MyInitializer”服务

然后我构建插件 jar 并将其放在插件下 (linkerd-1.3.1/plugins)

现在我正在尝试使用配置运行 linkerd:

结果我得到了:

所以看起来插件根本没有加载。需要一些帮助。

github上的代码

0 投票
2 回答
139 浏览

nginx - 为 DNS 使用 namerd?(或者:如何用 Linkerd 配置一个 nginx 入口服务)

我目前在 上部署了一个 hello world 服务/svc/hello,并且在我的 namerd internaldtab 中添加了一个 dentry 为/svc/app => /svc/hello.

我还部署了一个nginx服务,它将作为我的入口控制器,并将所有流量转发到相关服务。最终它将进行标头剥离,仅向白名单 IP 范围内的开发人员公开管理服务等,但现在我通过以下配置使其保持非常简单:

但是,这些nginxpod 无法启动,并出现错误

nginx:在 /etc/nginx/conf.d/default.conf:3 的上游“app”中找不到 [emerg] 主机

我需要做什么才能让 nginx 服务能够通过 linkerd 转发到应用程序服务?

0 投票
1 回答
238 浏览

routing - 链接器、kubernetes 和 dtab

我对 Kubernetes 中的 linkerd 非常陌生,我对 dtab 和路由不太熟悉。

我一步一步地遵循了这个非常简单的“入门指南”:https ://blog.buoyant.io/2016/10/04/a-service-mesh-for-kubernetes-part-i-top-line-service-指标/

一切正常,但它并没有对整个事情的工作方式给出深入的解释。

所以,我有这些“传入”规则:

/srv=>/#/io.l5d.k8s/default/http; /host=>/srv; /svc=>/host; /host/world=>/srv/world-v1

在本教程中,为了测试它是否有效,我需要发出这个 curl 请求:

$ http_proxy=$INGRESS_LB:4140 curl -s http://hello

..它有效!但我真的不知道我是如何http://hello成为一个/svc/hello……这种魔法是如何以及在哪里发生的?

我看到“默认”命名空间是“硬编码”的/#/io.l5d.k8s/default/http,所以我想我无法访问位于另一个命名空间中的服务。我怎样才能更新规则来做这样的事情?

感谢您帮助我在 linkerd 上取得进步 ^^

0 投票
0 回答
120 浏览

kubernetes - 如何为 AWS Kubernetes 服务设置 gRPC

知道如何为 Kubernetes 公开的服务设置 gRPC 吗?我们已经在我们的集群中部署了 Linkerd,它似乎运行良好,并在 Kubernetes 中为我们提供了 gRPC。但是,我们还没有找到从集群外部为我们提供 gRPC 连接的解决方案。