istio-proxy 在 1 小时后关闭长时间运行的 TCP 连接

2024-01-29

TL;DR:我们如何配置 istio sidecar 注入/istio-proxy/envoy-proxy/istio egressgateway 以允许长期存在(>3 小时)、可能空闲的 TCP 连接?

一些细节:

我们正在尝试执行到 PostgreSQL 的数据库迁移,该迁移由配置了 Spring Boot + Flyway 的一个应用程序触发,此迁移预计将持续约 3 小时。

我们的应用程序部署在 kubernetes 集群内,该集群已配置 istio sidecar 注入。运行迁移整整一小时后,连接总是会关闭。

我们确信 istio-proxy 关闭了连接,因为我们尝试从没有 istio sidecar 注入的 pod 进行迁移,并且它运行了超过一小时,但这不是一个继续进行的选项,因为这可能意味着生产中会出现一些停机时间我们无法考虑。

我们怀疑这应该可以在 istio 代理中配置参数idle_timeout - 已实现here https://github.com/istio/istio/pull/13515。然而这不起作用,或者我们没有正确配置它,我们尝试在 istio 安装期间通过添加来配置它--set gateways.istio-ingressgateway.env.ISTIO_META_IDLE_TIMEOUT=5s到我们的掌舵模板。


如果您使用高于 1.7 的 istio 版本,您可以尝试使用特使过滤器 https://istio.io/latest/docs/reference/config/networking/envoy-filter/使其发挥作用。有答案和例子github https://github.com/istio/istio/issues/24387#issuecomment-713600319由@ryant1986 提供。

我们在 1.7 上遇到了同样的问题,但我们注意到 ISTIO_META_IDLE_TIMEOUT 设置仅在 OUTBOUND 端被拾取,而不是在 INBOUND 端。通过添加应用于请求 INBOUND 端的附加过滤器,我们能够成功增加超时(我们使用了 24 小时)

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: listener-timeout-tcp
  namespace: istio-system
spec:
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.tcp_proxy
    patch:
      operation: MERGE
      value:
        name: envoy.filters.network.tcp_proxy
        typed_config:
          '@type': type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy
          idle_timeout: 24h

我们还创建了一个类似的过滤器来应用于直通集群(以便超时仍然适用于我们没有服务条目的外部流量),因为配置也没有在那里被获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

istio-proxy 在 1 小时后关闭长时间运行的 TCP 连接 的相关文章

  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • StreamWriter的正确使用

    经过几次尝试后 我无法让 StreamWriter 正确构建 工作 所以我做了一些根本错误的事情 C Visual Studio 我有一个现有的 TCP 客户端 它连接并充当读取器 它工作正常 private System Net Sock
  • Silverlight 套接字:模仿框架 Bind、Listen 和 Accept 方法?

    我有这个 NET Framework C 类 它实际上充当 TCP 连接的包装器Socket http msdn microsoft com en us library attbb8f5 aspxSystem Net Sockets 命名空
  • 如何使用网络策略停止所有外部流量并仅允许命名空间内的 Pod 间网络调用?

    我正在 kubernetes 集群中设置一个命名空间 以拒绝任何传出网络调用 例如http company com http company com但允许在我的命名空间内进行 Pod 间通信 例如http my nginx http my
  • 使用 NestJS 的 TCP 服务器

    是否可以使用 NestJS 创建 TCP 服务器 我有一个仅通过 TCP 进行通信的 GPS 跟踪器 由于 NestJS 可以通过 TCP 在微服务之间进行通信 我认为也许 NestJS 可以用作低级网络应用程序 例如 java netty
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 如何在Prometheus中查询容器内存限制

    我正在使用 Prometheus 工具来监控我的 Kubernetes 集群 我在部署中设置了资源限制 内存限制 并且需要配置一个面板来显示可用的总内存 请让我知道在 Prometheus 中运行以获得可用于我的部署的总内存限制所需的查询
  • TCL类C10K事件服务器开发进展如何?

    TCL 是一种很好的简单编程语言 但似乎没有得到认可和 或尊重它deserves http antirez com articoli tclmisunderstood html 我 1995 年在大学时就学过它 但很快就忘记了 直到最近才再
  • SO_REUSEPORT 可以在 Unix 域套接字上使用吗?

    Linux 内核 gt 3 9 允许通过设置在内核负载平衡的进程之间共享套接字SO REUSEPORT http lwn net Articles 542629 http lwn net Articles 542629 这如何用于类型的套接
  • 带有 Helm Charts 的蓝绿部署

    我们可以使用 Helm Charts 来部署应用程序 helm install name the release helm the service helm namespace myns 而我们冷 滚动升级 部署使用 helm upgrad
  • 启动 pods-kubernetes 时出错。 Pod 仍处于 ContainerCreating 状态

    我已经在运行 ubuntu 的桌面上安装了带有 minikube 的 kubernetes 试用版 然而 启动 Pod 似乎存在一些问题 Kubectl get pods all namespaces 显示所有处于 ContainerCre
  • kubernetes 上的 gitlab-ci 缓存与 minio-service 不再工作

    我正在运行 gitlab 10 4 3 和 gitlab runner 10 4 0 作为 kubernetes 部署 带有 kubernetes runner 和一个用于缓存的 minio server 我是按照安装的gitlab 文档
  • 如何在 Docker Desktop 上创建新的 Kubernetes 集群?

    我似乎不知道如何在我的计算机上运行的 Docker Desktop 实例上创建全新的 Kubernetes 集群 无论是 Mac 还是 PC 都没有关系 我知道如何设置当前集群上下文 但我只有一个集群 因此无法设置其他任何内容 What s
  • kubernetes + coreos 集群 - 替换证书

    我有一个 coreos kubernetes 集群 我是按照这篇文章开始的 AWS 上的 kubernetes coreos 集群 https coreos com kubernetes docs latest kubernetes on
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • Java 客户端到服务器未知来源

    我有一个简单的乒乓球游戏 需要通过网络工作 服务器将创建一个带有球和 2 个球棒位置的游戏 当客户端连接到服务器时 服务器将创建一个名为 PongPlayerThread 的新类 它将处理客户端到服务器的输入和输出流 我的服务器工作100
  • 在 Kubernetes 中什么是删除集合?

    列出 K8s 中的所有 API 资源时 您会得到 kubectl api resources owide NAME SHORTNAMES APIGROUP NAMESPACED KIND VERBS bindings true Bindin
  • 找不到 Kubernetes 持久卷挂载

    我正在尝试创建并安装卷 但陷入困境 这部分创建存储 apiVersion v1 kind PersistentVolumeClaim metadata name pvclaim2 spec accessModes ReadWriteOnce
  • 使用套接字和 AsyncTask 强制关闭

    堆栈的人们大家好 请参阅下面我的班级代码和我的 LogCat 尝试连接时我受到强力关闭 如果有人能帮助我找出原因 我将不胜感激 基本上代码的作用是 从意图中获取 IP 地址 连接到端口 32 的 IP 然后发送一个命令 等待响应并发送另一个

随机推荐