Istio サービス メッシュ アドオン MeshConfig のトラブルシューティング
この記事では、MeshConfig を使用して Microsoft Azure Kubernetes Service (AKS) 用に Istio サービス メッシュ アドオンを構成場合に発生する問題のトラブルシューティング方法について説明します。
共有 ConfigMap の構成
Istio アドオン MeshConfig を使用すると、メッシュ全体の特定の設定を構成できます。 これを行うには、 aks-istio-system
名前空間にローカル ConfigMap を作成します。 次に、Istio コントロール プレーンによって、この ConfigMap が既定の ConfigMap とマージされます。 (設定間に競合が存在する場合は、既定の設定が優先されます)。この方法は、共有 ConfigMap 構成と呼ばれます。
aks-istio-system
名前空間に istio-shared-configmap-<asm-revision>
という名前の ConfigMap を作成します。 たとえば、リビジョン asm-1-18
を使用する場合は、ConfigMap に istio-shared-configmap-asm-1-18
という名前を付けます。 次に、次の ConfigMap YAML ファイルに示すように、data
セクションの mesh
フィールド内にメッシュ構成を指定します。
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-shared-configmap-asm-1-18
namespace: aks-istio-system
data:
mesh: |-
accessLogFile: /dev/stdout
defaultConfig:
holdApplicationUntilProxyStarts: true
defaultConfig
フィールド内の値は、Envoy サイドカーのメッシュ幅の設定です。
カナリア アップグレード
カナリア アップグレードを開始する前に、mesh の構成とアップグレードのガイダンスに従ってaks-istio-system
名前空間に新しいコントロール プレーン リビジョン用の 2 つ目の共有 ConfigMap を作成します。
アップグレードを開始する前に新しい ConfigMap が作成されなかった場合、共有 ConfigMap によって構成された機能にはアクセスできません。 この問題を解決するには、対応するリビジョンの不足している ConfigMap を作成し、前の共有 ConfigMap の関連フィールドをコピーします。
詳細については、「 Azure Kubernetes Service 用のアップグレード Istio ベースのサービス メッシュ アドオン および Istio サービス メッシュ アドオンのマイナー リビジョン アップグレードのトラブルシューティングを参照してください。
許可、サポート、および許可されていない値
Istio アドオンは、MeshConfig フィールドを許可および supported
、許可されているが unsupported
、および disallowed
として指定します。 アドオンで許可されている MeshConfig フィールドとサポートされている MeshConfig フィールドの詳細と、さまざまなサポートレベルの概要については、Azure Kubernetes Service の Configure Istio ベースのサービス メッシュ アドオンを参照してください。 upstream Istio ドキュメントに記載されているフィールドがアドオンの許可リストに表示されない場合、これらのフィールドは許可されません。
トラブルシューティングのチェックリスト
手順 1: 正しい ConfigMap を編集していることを確認する
- 共有 ConfigMap (
istio-shared-configmap-asm-1-17
など) を構成していて、既定の ConfigMap (istio-asm-1-17
など) を編集していないことを確認します。 - 共有 ConfigMap がタイトルの正しいリビジョンを指していることを確認します。
手順 2: 共有 ConfigMap 内の MeshConfig 定義からタブ インデントを削除する
共有 ConfigMap 内の MeshConfig 定義 ( data.mesh
の下) で、タブではなくスペースを使用していることを確認します。 見つけたタブ文字を削除します。
手順 3: MeshConfig フィールドが有効であることを確認する
フィールドが認識されないか、 MeshConfig 許可リストに含まれていない場合 MeshConfig の更新は拒否されます。 必要な MeshConfig フィールドが許可されているかどうかを確認し、フィールドのスペルが正しいことを確認します。
手順 4: CoreDNS オーバーロードを回避する
CoreDNS オーバーロードに関連する問題では、Istio MeshConfig 定義の dnsRefreshRate
フィールドなど、特定の Istio DNS 設定を変更する必要がある場合があります。
手順 5: メモリ消費量の問題を修正する
Envoy でメモリ消費量が多い場合は、Envoy の設定で statistics データの収集を再確認。 istio メトリックをカスタマイズする場合はMeshConfigを使用して特定のメトリックカーディナリティが高くなる可能性がありメモリ占有領域が大きくなることに注意してください。
Istiod と Envoy のメモリ消費量を減らすには、MeshConfig 定義の discoverySelectors
フィールドを使用することをお勧めします。 詳細については、 General Istio サービス メッシュ アドオンのトラブルシューティングを参照してください。
手順 6: 無料の CPU コア
すべての CPU コアが使用されている場合、MeshConfig 定義の concurrency
フィールドが正しく構成されていない可能性があります。 このフィールドが 0 に設定されている場合、Envoy はすべての CPU コアを使用します。 このような場合は、MeshConfig 定義から concurrency
を削除します。 concurrency
フィールドが構成されていない場合、CPU 要求と制限によって、代わりに使用される CPU コアの数が決まります。
手順 7: ポッドとサイドカーの競合状態を修正する
Envoy サイドカーが起動する前にアプリケーション ポッドが起動すると、アプリケーションが応答しなくなるか、再起動される可能性があります。 この問題を回避する方法については、「istio-proxy の準備ができていない場合は、 Pod またはコンテナーがネットワークの問題から始まる」を参照してください。 具体的には、これらの競合状態を防ぐために、defaultConfig
の下の holdApplicationUntilProxyStarts
MeshConfig フィールドをtrue
に設定できます。
関連情報
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
サードパーティのお問い合わせ窓口に関する免責事項
サードパーティのお問い合わせ窓口に関する情報は、ユーザーの便宜のために提供されているものであり、 この連絡先情報は、予告なしに変更される可能性があります。 マイクロソフトは、掲載されている情報に対して、いかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。