解決 Cloud Service Mesh 中的補充 Proxy 問題

本節說明 Cloud Service Mesh 附屬 Proxy 常見問題,以及如何解決這些問題。如需其他協助,請參閱取得支援

istio-proxy 容器因 OOM 事件而終止

在本節中,我們假設 istio-proxy 容器並未遭 SystemOOM 事件終止,且 Kubernetes 節點並未處於 MemoryPressure 狀態。istio-proxy 附屬容器預設有資源限制。如果 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 代理程式都會設定必要的設定,以便存取網格中的任何其他工作負載執行個體。Istio 提供自訂資源定義 Sidecar,可限制將端點編程至側邊代理的數量,進而減少 istio-proxy 容器的記憶體用量。