Istio サービス メッシュ アドオン MeshConfig のトラブルシューティング

この記事では、MeshConfig を使用して Microsoft Azure Kubernetes Service (AKS) の Istio サービス メッシュ アドオンを構成 するときに発生する問題のトラブルシューティング方法について説明します。

Shared ConfigMap の構成

Istio アドオン MeshConfig を使用すると、特定のメッシュ全体の設定を構成できます。 これを行うには、名前空間にローカル ConfigMap を作成します aks-istio-system 。 次に、Istio コントロール プレーンによって、この ConfigMap が既定の ConfigMap とマージされます。 (設定間に競合が存在する場合は、既定の設定が優先されます)。この方法は、共有 ConfigMap 構成と呼ばれます。

名前空間にという名前 istio-shared-configmap-<asm-revision> の ConfigMap を aks-istio-system 作成します。 たとえば、リビジョン 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 サイドカーのメッシュ全体の設定です。

カナリアアップグレード

カナリア アップグレードを開始する前に、 メッシュ構成とアップグレードのガイダンス に従って、名前空間の新しいコントロール プレーン リビジョン用の 2 つ目の共有 ConfigMap を aks-istio-system 作成します。

アップグレードを開始する前に新しい ConfigMap が作成されなかった場合、共有 ConfigMap によって構成された機能にはアクセスできません。 この問題を解決するには、対応するリビジョンに不足している ConfigMap を作成し、前の共有 ConfigMap の関連フィールドをコピーします。

詳細については、「 Azure Kubernetes Service の Istio ベースのサービス メッシュ アドオンのアップグレード 」および 「Istio サービス メッシュ アドオンのマイナー リビジョン アップグレードのトラブルシューティング」を参照してください。

許可、サポート、および許可されていない値

Istio アドオンは、MeshConfig フィールドを許可済みとして指定し、 supported許可は 、 unsupportedおよび disallowedを指定します。 アドオンで許可されている MeshConfig フィールドとサポートされている MeshConfig フィールドの詳細と、さまざまなサポートレベルの概要については、「 Azure Kubernetes Service 用に Istio ベースのサービス メッシュ アドオンを構成する」を参照してください。 アップストリームの 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 設定で 統計データ収集を再確認してください。 MeshConfig を使用して Istio メトリックをカスタマイズする場合は、特定のメトリックのカーディナリティが高く、そのためメモリ 占有領域が大きくなる可能性があることを覚えておいてください。

MeshConfig 定義の フィールドを discoverySelectors 使用して、Istiod と Envoy のメモリ消費量を削減することをお勧めします。 詳細については、「 一般的な Istio サービス メッシュ アドオンのトラブルシューティング」を参照してください。

手順 6: 無料の CPU コア

すべての CPU コアが使用されている場合、 concurrency MeshConfig 定義のフィールドが正しく構成されていない可能性があります。 このフィールドが 0 に設定されている場合、Envoy はすべての CPU コアを使用します。 このような場合は、MeshConfig 定義からを削除 concurrency します。 フィールドが concurrency 構成されていない場合は、CPU 要求と制限によって、代わりに使用される CPU コアの数が決まります。

手順 7: ポッドとサイドカーの競合状態を修正する

Envoy サイドカーが起動する前にアプリケーション ポッドが起動すると、アプリケーションが応答しなくなるか、再起動する可能性があります。 この問題を回避する方法については、「 istio-proxy の準備ができていない場合は、ポッドまたはコンテナーがネットワークの問題から始まる」を参照してください。 具体的には、MeshConfig フィールドdefaultConfigholdApplicationUntilProxyStartstrue設定して、これらの競合状態を防ぐことができます。

関連情報

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

サードパーティのお問い合わせ窓口に関する免責事項

Microsoft では、このトピックに関する追加情報を見つけるのに役立つサード パーティの連絡先情報を提供しています。 将来予告なしに変更されることがあります。 Microsoft は、第三者の連絡先情報の正確性を保証しません。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。