Cloud Service Mesh でサイドカー プロキシの問題を解決する
このセクションでは、Cloud Service Mesh のサイドカー プロキシの一般的な問題とその解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。
OOM イベントが原因で istio-proxy
コンテナが強制終了された
このセクションでは、istio-proxy
コンテナが SystemOOM
イベントによって強制終了されず、Kubernetes ノードが MemoryPressure
の状態でないことを前提としています。istio-proxy
サイドカー コンテナには、デフォルトでリソースの上限があります。istio プロキシ コンテナが Reason: OOMKilled
で強制終了された場合は、Envoy がメモリを消費している理由を理解する必要があります。
本番環境が停止している場合、簡単な回避策として、IstioOperator
を使用してすべてのコンテナの上限を引き上げます。
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
values:
global:
proxy:
resources:
requests:
memory: 128Mi
limits:
memory: 1Gi
特定のワークロードでこの問題が発生している場合は、次のannotationsを追加することで、それらのワークロードのみに対する上限を変更できます。
sidecar.istio.io/proxyMemory
sidecar.istio.io/proxyMemoryLimit
上限がデフォルト値より低く設定されていないことをご確認ください。
長期的な解決策は、istio-proxy
サイドカー コンテナのメモリ フットプリントを低減することです。デフォルトでは、すべてのサイドカー プロキシは、メッシュ内の他のワークロード インスタンスに到達するために必要な構成でプログラムされます。Istio は、カスタム リソース定義 Sidecar
によって、サイドカー プロキシにプログラミングされたエンドポイントの数を制限し、istio-proxy
コンテナのメモリ消費量を減らします。