解决 Cloud Service Mesh 中的 Sidecar 代理问题

本部分介绍常见的 Cloud Service Mesh Sidecar 代理问题以及如何解决这些问题。如果您需要其他帮助,请参阅获取支持

由于 OOM 事件,istio-proxy 容器被终止

在本部分中,我们假设 istio-proxy 容器未被 SystemOOM 事件终止,并且 kubernetes 节点不在 MemoryPressure 条件中。istio-proxy Sidecar 容器默认具有资源限制。如果 istio-proxy 容器使用 Reason: OOMKilled 终止,则必须了解 Envoy 耗用内存的原因。

如果您遇到生产环境服务中断,一种快速解决方法是提高使用 IstioOperator 的所有容器的限制:

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    global:
      proxy:
        resources:
          requests:
               memory: 128Mi
          limits:
               memory: 1Gi

如果您遇到特定工作负载方面的问题,只需添加以下注释,即可更改针对这些工作负载的限制。

  • sidecar.istio.io/proxyMemory
  • sidecar.istio.io/proxyMemoryLimit

请确保您的限制不会低于默认值。

长期解决方案是减少 istio-proxy Sidecar 容器的内存占用。默认情况下,所有 Sidecar 代理都会使用必要的配置进行编程,以访问网格中的任何其他工作负载实例。Istio 提供自定义资源定义 Sidecar,用于限制写入 Sidecar 代理的端点数量,从而减少 istio-proxy 容器的内存消耗。