问题标签 [envoyproxy]

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 回答
481 浏览

kubernetes - Istio (1.0) 内部 ReplicaSet 路由 - 支持 Kubernetes Deployment 中 pod 之间的流量

Istio 如何支持同一 Service(或者更具体的 ReplicaSet)中的 Pod 之间基于 IP 的路由?

我们想在 Istio 网格中部署副本 > 1 的 Tomcat 应用程序。该应用程序运行 Infinispan,它使用 JGroups 来整理通信和集群。JGroups 需要识别其集群成员,为此目的有 KUBE_PING(用于 JGroups 的 Kubernetes 发现协议)。它将通过类似于kubectl get pods的查找来查询 K8S API 。集群成员既可以是其他服务中的 pod,也可以是同一 Service/Deployment 中的 pod。

尽管我们的问题是由相当具体的需求驱动的,但这个主题是通用的。我们如何使 pod 能够在副本集中相互通信?

示例:作为展示,我们部署了演示应用程序https://github.com/jgroups-extras/jgroups-kubernetes。相关的东西是:

在没有 Istio的情况下运行,三个 pod 将找到彼此并形成集群。在my-istio-namespace中使用 Istio部署相同的内容并添加基本服务定义:

请注意,下面的输出很宽 - 您可能需要向右滚动才能获取 IP

在https://istio.io/help/ops/traffic-management/proxy-cmd/#deep-dive-into-envoy-configuration的指导下,让我们看看其中一个 Pod 的 Envoy conf:

Istio 文档将上述监听器描述为

从侦听器接收相关 IP:PORT 对的出站非 HTTP 流量0.0.0.0_15001

这一切都说得通。pod ispn-perf-test-558666c5c6-g9jb5可以在 10.44.4.63 上访问自己,通过 10.41.13.74 访问服务。但是...如果 pod 向 10.44.4.64 或 10.44.3.22 发送数据包怎么办?侦听器中不存在这些 IP,因此对于ispn-perf-test-558666c5c6-g9jb5 来说,这两个“兄弟”pod 是不可访问的。

Istio 今天可以支持这一点 - 那么如何支持呢?

0 投票
1 回答
582 浏览

authorization - 为什么 Envoy ext-authz 不遵守 connect_timeout?

我正在使用ext-authz使用如下集群设置的过滤器:

但是,通过查看时间戳(Envoyloglevel=debug在我的docker-compose.yml文件中以开头),Envoy 似乎仍然使用 200 毫秒的默认超时:

我是否在这里遗漏了一些明显的东西,或者这是 Envoy 中的错误?

这导致我的第一个请求失败,因为建立连接需要很长时间。后续请求成功,因为它们使用 HTTP/2 持久连接,因此握手不需要任何时间。(或者至少,更少的时间)

0 投票
3 回答
2154 浏览

kubernetes - 运行 istio-proxy 后启动容器/pod

我正在尝试使用 Istio 和 Envoy 使用 Kubernetes 为服务实现服务网格。我能够设置服务和 istio-proxy,但我无法控制容器和 istio-proxy 的启动顺序。

我的容器是第一次启动并尝试通过 TCP 访问外部资源,但当时 istio-proxy 尚未完全加载,外部资源的 ServiceEntry 也是如此

我尝试在我的服务中添加恐慌,并尝试在访问外部资源之前休眠 5 秒。

有没有办法可以控制这些顺序?

0 投票
2 回答
7832 浏览

kubernetes - 是否可以在没有 kubernetes 或 docker 的情况下使用 Istio?

我的笔记本电脑上运行了 4 个微服务,监听不同的端口。我可以使用 Istio 在我的笔记本电脑上创建一个服务网格,以便服务可以通过 Istio 相互通信吗?google 上关于 Istio 的所有链接都包括 kubernetes,但我想在没有 Kubernetes 的情况下运行 Istio。谢谢阅读。

0 投票
1 回答
2115 浏览

grpc - 为什么 grpc-web 需要特使代理?

如果浏览器支持http/2,为什么grpc-web需要envoy代理?

不支持 http/2 的旧浏览器是否只需要它?

0 投票
1 回答
3235 浏览

kubernetes - 配置 Istio、Kubernetes 和 MetalLB 以使用 Istio LoadBalancer

我正在努力在裸机实例上使用 MetalLB、Kubernetes、Istio 进行配置的最后一步,即通过 Istio VirtualService 路由将网页从服务返回到外部世界。我刚刚将实例更新为

  • MetalLB(版本 0.7.3)
  • Kubernetes(版本 1.12.2)
  • Istio(版本 1.0.3)

我将从有效的方法开始。

所有补充服务都已部署,并且大部分都在工作:

  1. http://localhost:8001上的 Kubernetes 仪表板
  2. http://localhost:10010上的 Prometheus 仪表板(我在 9009 上还有其他内容)
  3. http://localhost:15000上的 Envoy 管理员
  4. http://localhost:3000上的 Grafana(Istio 仪表板)
  5. http://localhost:16686上的 Jaeger

我说的最多是因为自从升级到 Istio 1.0.3 后,我在 Jaeger 仪表板中丢失了来自 istio-ingressgateway 的遥测数据,我不知道如何将其恢复。我已经放弃了 pod 并重新创建,但没有用。

除此之外,MetalLB 和 K8S 似乎工作正常,并且负载均衡器配置正确(使用 ARP)。

我可以使用以下方法公开我的部署:

一切正常,我可以从外部负载平衡 IP 地址访问网页(此后我删除了暴露的服务)。

如果我在默认命名空间中创建 K8S 服务(我尝试了多个)

接着是网关和路由(VirtualService),我得到的唯一响应是网格外的 404。您会在网关中看到我使用保留字网格,但我已经尝试过这两种方法并命名特定网关。我还为特定的 URI 和端口尝试了不同的匹配前缀,您可以在下面看到。

网关

虚拟服务

我已经仔细检查了它不是在播放 DNS,因为我可以通过busybox 或使用 K8S 仪表板进入入口网关的外壳

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/shell/istio-system/istio-ingressgateway-6bbdd58f8c-glzvx/?namespace=istio -系统

并做两个

并且两者都成功运行,所以我知道 ingress-gateway pod 可以看到这些。Sidecar 在默认命名空间和 istio-system 命名空间中都设置为自动注入。

入口网关的日志显示 404:

192.168.224.168:80 是网关的 IP 地址。192.168.1.90:53960 是我的外部客户端的 IP 地址。

任何建议,我已经尝试从多个角度进行几天了,我觉得我只是错过了一些简单的东西。建议的日志可能会看?

0 投票
1 回答
597 浏览

docker - 使用 Istio sidecar 从多容器 pod 调用服务

我有两个带有两个容器的豆荚。在每个 pod 中,一个容器是 Istio sidecar-proxy (Envoy)

我在 pod 中有一个 helloworld 服务helloworld-deployment-7dfc7db54d-d4ddf。我想从helloserver-744bf7487-m426tpod 调用该服务。

我用了命令,

但它给出了一个错误,

如何调用该服务?

0 投票
1 回答
676 浏览

istio - 通过 ISTIO side car 减少内存使用

我们正在为其中一个项目评估 ISTIO。在这个项目中,我们有大约 200 个容器和大约 200 个服务。每个容器可能会在副本设置为 2 的情况下启动。因此,总共可能有 400 个容器,因此有 400 个 ISTIO 边车。

在默认设置下,每个 ISTIO 边车使用了 300Mbytes。对于 400 个边车,这将为边车产生 120GB (300Mbutes * 400) 的内存。这似乎比应用程序所需的内存要求还要高。

有两个观察

  1. 内存使用量似乎随着内核数量的增加而增加。在系统上,我们正在尝试,有 88 个内核。目前的理解是每个核心大约需要 1.5 到 2Mbutes。
  2. 内存使用量似乎随着服务数量的增加而增加。在我们正在进行的项目中,我们预计会看到大约 200 项服务。每个服务似乎占用了大约 3MB。

在(1)上,我们(通过谷歌搜索)找到了一个解决方案。解决方案是将特使并发设置为较小的数字。

关于(2),有什么解决办法吗?在我们的项目中,并不是每个容器都与其他容器/服务进行通信。给定的容器可以与一组目标服务(通常大约 5 个左右)对话。给定容器的边车是否可以为容器使用的服务分配内存?

我想知道是否有人对 ISTIO 有类似的问题,以及他们如何解决内存消耗问题。

0 投票
1 回答
434 浏览

postgresql - 如何使用 Ambassador api 网关作为 PostgreSQL 感知代理?

我正在使用 Ambassador 来管理我的 Kubernetes 服务。我的 Kubernetes 服务由一些 Web 服务器和一些 postgres 组成。我按照此处的说明建立了到我的 Web 服务器的路由。这是一个例子:

这非常适合我的网络服务器。我能做到curl localhost/somewebservice,我得到了预期的回应。

我已经在我的 postgres 容器中设置了相同的注释,但我无法执行 psql。

我看到以下内容:

我的目标是让大使同时接受 HTTP/HTTPS 和 postgres 请求。谢谢你的时间。

0 投票
1 回答
1376 浏览

curl - Istio 特使正在丢弃带有 Host 标头的请求

我在尝试让 Istio 在我的集群上工作时遇到问题。我的基础架构如下所示:

我有一个 Magento 商店,前面有清漆作为缓存。它在 istio 安装之前工作。我已经启用了特使注入。Varnish 部署在 pod 中,并且有自己的服务重定向未缓存到 magento 服务。

当我尝试从清漆卷曲到 magento 时,问题就来了。

如果我从清漆卷曲 magento 服务,我会重定向到 magento URL(这是预期的行为)

但是当我尝试相同但使用 Host 标头跳过 magento 重定向时,我得到了 404:

我已经检查了日志和请求,其中 Host 标头永远不会到达 magento 服务(在我的示例中为 store-es)。当我检查清漆特使的日志是返回 404 的日志时:

你知道为什么会这样吗?为什么主机头在不请求 magento 服务的情况下返回 404?

我还想提一下,magento 在没有清漆的情况下工作,它能够连接到 redis(在同一个集群中)和 mysql(在集群外),所以我已经放弃了 magento 的麻烦。