periscope を Azure Kubernetes Service (AKS) クラスターにデプロイする

AKS Periscope は、Azure Kubernetes Service (AKS)ノードとポッドからログと診断情報を収集するオープンソースの診断ツールです。 Periscope をデプロイして診断を収集するには、az aks kollectを実行し、クラスターとAzureストレージ アカウントを指定します。 Visual Studio Code、Kustomize、またはAzure Copilot 用の AKS 拡張機能を使用して Periscope をデプロイすることもできます。

Periscope では、既定で次の情報が収集されます。

  • kube-system名前空間のコンテナー ログ。
  • Kubelet とコンテナー ランタイム システム サービス ログ。
  • インターネット、API サーバー、トンネル、Azure Container Registry、Microsoftコンテナー レジストリの送信接続チェック。
  • ノード iptables データ、プロビジョニング ログ、cloud-init ログ、DNS 設定。
  • kube-system名前空間内のポッド、サービス、デプロイの説明。
  • Kubelet コマンド引数とノードおよびポッド リソースの使用状況。

前提条件

  • Linux または Windows ノードを含む既存の AKS クラスターが必要です。 Periscope は両方のオペレーティング システムをサポートしていますが、収集される情報は異なります。 詳細については、「Windowsと Linux の機能の違い」を参照してください。
  • Azure CLIまたは Kustomize を使用して Periscope をデプロイするには、Azure CLIをインストールし、az loginを使用してサインインします。
  • Azure CLI、Visual Studio Code、または Kustomize を使用して Periscope をデプロイするには、バージョン 1.21 以降kubectlインストールします。
  • 収集された診断のAzure ストレージ アカウントを作成または識別します。
  • クラスターがコンテナー レジストリ (MCR) からイメージMicrosoftプルできることを確認します。

Important

Periscope は、エージェント プール ノードで実行され、仮想マシン (VM) とコンテナー レベルのデータを収集します。 Periscope をデプロイする前に、クラスター所有者がこの情報のコレクションと共有を理解し、同意していることを確認します。 詳細については、診断情報の収集Microsoft サポート参照してください。

Azure CLIを使用して Periscope をデプロイする

az aks kollect コマンドは、Periscope をデプロイし、診断情報を収集し、結果をAzure Blob Storageにアップロードします。

  1. aks-preview拡張機能をインストールまたは更新します。

    az extension add --name aks-preview --upgrade
    
  2. AKS クラスターの環境変数を設定します。

    RESOURCE_GROUP=<resource-group-name>
    AKS_CLUSTER=<aks-cluster-name>
    
  3. Periscope をデプロイし、次のいずれかのストレージ アカウント オプションを使用して診断を収集します。

    • AKS 診断設定でストレージ アカウントが既に指定されている場合は、次のコマンドを実行します。

      az aks kollect \
          --resource-group $RESOURCE_GROUP \
          --name $AKS_CLUSTER
      
    • 所有するストレージ アカウントを使用するには、そのリソース ID を指定します。

      STORAGE_ACCOUNT_ID=<storage-account-resource-id>
      
      az aks kollect \
          --resource-group $RESOURCE_GROUP \
          --name $AKS_CLUSTER \
          --storage-account $STORAGE_ACCOUNT_ID
      
    • ストレージ アカウント名と Shared Access Signature (SAS) トークンを使用するには、書き込みアクセス許可を持つ SAS トークンを指定します。

      STORAGE_ACCOUNT=<storage-account-name>
      SAS_TOKEN=<sas-token>
      
      az aks kollect \
          --resource-group $RESOURCE_GROUP \
          --name $AKS_CLUSTER \
          --storage-account $STORAGE_ACCOUNT \
          --sas-token "$SAS_TOKEN"
      

    Caution

    SAS トークンは、ストレージ アカウントへのアクセスを許可します。 パスワードのように保護し、ソース管理にコミットせず、不要になったら取り消したりローテーションしたりします。

コレクションが完了すると、Periscope はクラスター API サーバーの完全修飾ドメイン名 (FQDN) にちなんだ BLOB コンテナーに結果を格納します。 コンテナーには、分析用にダウンロードしたり、Microsoft サポートと共有したりできる ZIP ファイルも含まれています。

収集された診断をカスタマイズする

既定では、Periscope は kube-system 名前空間からログと Kubernetes オブジェクトを収集します。 オプションの az aks kollect パラメーターを使用して、他のリソースをターゲットに設定します。

  • 名前空間または特定のコンテナー内のすべてのコンテナー ログを収集します。

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --container-logs "<namespace> <namespace>/<container-name>"
    
  • 名前空間または特定のオブジェクト内のリソースの種類のすべてのオブジェクトについて説明します。

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --kube-objects "<namespace>/<resource-type> <namespace>/<resource-type>/<resource-name>"
    
  • 特定の Linux ノード ログ ファイルを収集します。

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --node-logs "/var/log/azure-vnet.log /var/log/azure-vnet-ipam.log"
    
  • 特定のWindows ノード ログ ファイルを収集します。

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --node-logs-windows 'C:\AzureData\CustomDataSetupScript.log'
    

これらのパラメーターは、Azure CLIを使用して、Periscope のデプロイから任意のストレージ アカウント オプションと組み合わせることができます。 完全なコマンド リファレンスについては、 az aks kollectを参照してください。

Visual Studio Codeを使用して Periscope をデプロイする

Visual Studio Code用の AKS 拡張機能は、Periscope をデプロイして結果をダウンロードするためのグラフィカル ワークフローを提供します。

  1. Visual Studio CodeのAzure Kubernetes Service拡張機能をインストールします。
  2. Visual Studio CodeでAzureにサインインします。
  3. AKS クラスターの診断設定でストレージ アカウントが指定されていることを確認します。 構成する必要がある場合は、次の手順を実行します。
    1. AKS 拡張機能で、クラスターを右クリックし、[Azure portalに表示] を選択します。
    2. Azure ポータルで、[監視>診断設定>診断設定の追加を選択します。
    3. 診断設定の名前を入力し、[ ストレージ アカウントへのアーカイブ] を選択して、ストレージ アカウントを選択します。
    4. 有効にするログを選択し、[保存] を選択 します。
  4. AKS 拡張機能で、クラスターを右クリックし、[ AKS Periscope の実行] を選択します。
  5. クラスターの診断設定に複数のストレージ アカウントがある場合は、結果を格納するアカウントを選択します。
  6. コレクションが完了したら、[ リンクの生成 ] を選択して、7 日後に有効期限が切れるダウンロード可能なリンクまたは共有可能なリンクを作成します。 結果にすべてのノードが含まれていない場合は、残りのアップロードを待ってから、[ リンクの生成 ] をもう一度選択します。

詳細については、Visual Studio Codeの AKS ツールと診断に関する説明を参照してください。

Kustomize を使用して Periscope をデプロイする

Kubernetes リソースの検査またはオーバーライド、特定の Periscope リリースの選択、コレクターのカスタマイズが必要な場合は、Kustomize を使用します。 この方法では、ストレージ資格情報とマニフェストを直接管理する必要があります。

  1. Periscope 構成用のディレクトリを作成し、そのディレクトリに kustomization.yaml ファイルを作成します。

  2. 次の設定でアカウント SAS を作成します。 最短の実用的な有効期限を使用します。

    • サービス: BLOB (ss=b)。
    • リソースの種類: サービス、コンテナー、およびオブジェクト (srt=sco)。
    • アクセス許可: 読み取り、一覧表示、追加、作成、および書き込み (sp=rlacw)。
    • 許可されるプロトコル: HTTPS のみ。
  3. Periscope ベース リリース、イメージ タグ、ストレージの宛先、SAS キー、実行 ID をファイルに追加します。 すべてのプレースホルダーを実際の値に置き換えます。 SAS キーには、先頭の疑問符 (?) を含める必要があります。

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    resources:
      - https://github.com/Azure/aks-periscope//deployment/base?ref=<release-tag>
    
    images:
      - name: periscope-linux
        newName: mcr.microsoft.com/aks/periscope
        newTag: <image-tag>
      - name: periscope-windows
        newName: mcr.microsoft.com/aks/periscope
        newTag: <image-tag>
    
    secretGenerator:
      - name: azureblob-secret
        behavior: replace
        literals:
          - AZURE_BLOB_ACCOUNT_NAME=<storage-account-name>
          - AZURE_BLOB_CONTAINER_NAME=<container-name>
          - AZURE_BLOB_SAS_KEY=?<sas-token>
    
    configMapGenerator:
      - name: diagnostic-config
        behavior: merge
        literals:
          - DIAGNOSTIC_RUN_ID=<YYYY-MM-DDThh-mm-ssZ>
    

    Caution

    kustomization.yaml ファイルには、プレーンテキストで SAS トークンが含まれています。 ファイルをソース管理にコミットしないでください。 アカウント キーのように SAS を保護し、不要になったら取り消すかローテーションします。

  4. kubectlを AKS クラスターに接続します。

    az aks get-credentials \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name>
    
  5. Periscope をデプロイします。

    kubectl apply -k <path-to-kustomize-directory>
    
  6. Periscope ポッドが実行されていることを確認します。

    kubectl get pods --namespace aks-periscope
    

使用可能なすべての構成値、オプションのWindows コンポーネント、および別のコレクションを実行する手順については、AKS Periscope Kustomize デプロイ ガイドを参照してください。

Azure Copilotを使用して Periscope をデプロイする

Azure Copilotを使用して、Periscope を AKS クラスターにデプロイします。 Azure Copilot現在のコンテキストからクラスターを特定できない場合は、クラスターを選択するように求められます。 クラスターを選択Azure Copilot、Periscope をデプロイする前にデプロイの詳細を確認するように求められる場合があります。

プロンプトの例を次に示します。

  • "Periscope を AKS クラスターにデプロイすることを手伝ってください"
  • "クラスターに Periscope をデプロイしてください"
  • "クラスターに Periscope を追加してください"
  • "クラスターにペリスコープ ログを追加してください"
  • "AKS クラスターから診断ログの収集に手伝ってください"