Bereitstellen von Periscope auf einem Azure Kubernetes Service (AKS) Cluster

AKS Periscope ist ein Open-Source-Diagnosetool, das Protokolle und Diagnoseinformationen von Azure Kubernetes Service (AKS) Knoten und Pods sammelt. Um Periscope bereitzustellen und Diagnosen zu sammeln, führen Sie az aks kollect Ihren Cluster und ein Azure Speicherkonto aus, und geben Sie es an. Sie können Periscope auch mithilfe der AKS-Erweiterung für Visual Studio Code, Kustomize oder Azure Copilot bereitstellen.

Periscope sammelt standardmäßig die folgenden Informationen:

  • Containerprotokolle aus dem kube-system Namespace.
  • Kubelet- und Containerlaufzeit-Systemdienstprotokolle.
  • Ausgehende Konnektivität überprüft die Internet-, API-Server-, Tunnel-, Azure Container Registry- und Microsoft-Containerregistrierung.
  • Node iptables data, provisioning logs, cloud-init logs, and DNS settings.
  • Beschreibungen von Pods, Diensten und Bereitstellungen im kube-system Namespace.
  • Kubelet-Befehlsargumente und Knoten- und Pod-Ressourcenverwendung.

Voraussetzungen

  • Sie benötigen einen vorhandenen AKS-Cluster mit Linux oder Windows Knoten. Periscope unterstützt beide Betriebssysteme, aber die gesammelten Informationen unterscheiden sich. Weitere Informationen finden Sie unter Windows und Linux-Funktionsunterschiede.
  • Um Periscope mithilfe der Azure CLI oder Kustomize bereitzustellen, installieren Sie die Azure CLI und melden Sie sich mit az loginan.
  • Um Periscope mithilfe der Azure CLI, Visual Studio Code oder Kustomize bereitzustellen, installieren Sie kubectl Version 1.21 oder höher.
  • Erstellen oder identifizieren Sie ein Azure Speicherkonto für die gesammelte Diagnose.
  • Stellen Sie sicher, dass Ihr Cluster Bilder aus Microsoft Containerregistrierung (MCR) abrufen kann.

Important

Periscope wird auf Ihren Agentpoolknoten ausgeführt und sammelt Daten auf virtueller Maschine (VM) und Auf Containerebene. Bevor Sie Periscope bereitstellen, vergewissern Sie sich, dass der Clusterbesitzer die Sammlung und Freigabe dieser Informationen versteht und zustimmt. Weitere Informationen finden Sie unter Microsoft-Support Diagnoseinformationssammlung.

Bereitstellen von Periscope mithilfe der Azure CLI

Der az aks kollect Befehl stellt Periscope bereit, sammelt die Diagnoseinformationen und lädt die Ergebnisse in Azure Blob Storage hoch.

  1. Installieren oder aktualisieren Sie die aks-preview Erweiterung.

    az extension add --name aks-preview --upgrade
    
  2. Legen Sie Umgebungsvariablen für Ihren AKS-Cluster fest.

    RESOURCE_GROUP=<resource-group-name>
    AKS_CLUSTER=<aks-cluster-name>
    
  3. Bereitstellen von Periscope und Sammeln von Diagnosen mithilfe einer der folgenden Speicherkontooptionen.

    • Wenn die AKS-Diagnoseeinstellungen bereits ein Speicherkonto angeben, führen Sie den folgenden Befehl aus:

      az aks kollect \
          --resource-group $RESOURCE_GROUP \
          --name $AKS_CLUSTER
      
    • Um ein eigenes Speicherkonto zu verwenden, geben Sie dessen Ressourcen-ID an:

      STORAGE_ACCOUNT_ID=<storage-account-resource-id>
      
      az aks kollect \
          --resource-group $RESOURCE_GROUP \
          --name $AKS_CLUSTER \
          --storage-account $STORAGE_ACCOUNT_ID
      
    • Um einen Speicherkontonamen und ein SAS-Token (Shared Access Signature) zu verwenden, geben Sie ein SAS-Token mit Schreibberechtigung an:

      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

    Ein SAS-Token gewährt Zugriff auf Ihr Speicherkonto. Schützen Sie es wie ein Kennwort, übernehmen Sie es nicht zur Quellcodeverwaltung, und widerrufen oder drehen Sie es, wenn Sie es nicht mehr benötigen.

Wenn die Sammlung abgeschlossen ist, speichert Periscope die Ergebnisse in einem BLOB-Container, der nach dem vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) des Cluster-API-Servers benannt ist. Der Container enthält auch eine ZIP-Datei, die Sie zur Analyse herunterladen oder für Microsoft-Support freigeben können.

Anpassen der gesammelten Diagnose

Standardmäßig sammelt Periscope Protokolle und Kubernetes-Objekte aus dem kube-system Namespace. Verwenden Sie die optionalen az aks kollect Parameter, um andere Ressourcen als Ziel zu verwenden.

  • Sammeln Sie alle Containerprotokolle in einem Namespace oder einem bestimmten Container:

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --container-logs "<namespace> <namespace>/<container-name>"
    
  • Beschreiben aller Objekte eines Ressourcentyps in einem Namespace oder einem bestimmten Objekt:

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --kube-objects "<namespace>/<resource-type> <namespace>/<resource-type>/<resource-name>"
    
  • Sammeln Sie bestimmte Linux-Knotenprotokolldateien:

    az aks kollect \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --node-logs "/var/log/azure-vnet.log /var/log/azure-vnet-ipam.log"
    
  • Erfassen Sie bestimmte Windows Knotenprotokolldateien:

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

Sie können diese Parameter mit einer beliebigen Speicherkontooption von Deploy Periscope mithilfe der Azure CLI kombinieren. Die vollständige Befehlsreferenz finden Sie unter az aks kollect.

Bereitstellen von Periscope mithilfe von Visual Studio Code

Die AKS-Erweiterung für Visual Studio Code bietet einen grafischen Workflow für die Bereitstellung von Periscope und das Herunterladen der Ergebnisse.

  1. Installieren Sie die Azure Kubernetes Service-Erweiterung für Visual Studio Code.
  2. Melden Sie sich bei Azure Visual Studio Code an.
  3. Vergewissern Sie sich, dass die AKS-Clusterdiagnoseeinstellungen ein Speicherkonto angeben. Wenn Sie eins konfigurieren müssen, führen Sie die folgenden Schritte aus:
    1. Klicken Sie in der AKS-Erweiterung mit der rechten Maustaste auf Ihren Cluster, und wählen Sie "In Azure-Portal anzeigen" aus.
    2. Wählen Sie im Azure Portal dieDiagnoseeinstellungen> "Überwachung>hinzufügen" aus.
    3. Geben Sie einen Namen für die Diagnoseeinstellung ein, wählen Sie "In einem Speicherkonto archivieren" und dann ein Speicherkonto aus.
    4. Wählen Sie die Protokolle aus, die Sie aktivieren möchten, und wählen Sie dann "Speichern" aus.
  4. Klicken Sie in der AKS-Erweiterung mit der rechten Maustaste auf Ihren Cluster, und wählen Sie "AKS Periscope ausführen" aus.
  5. Wenn der Cluster mehrere Speicherkonten in den Diagnoseeinstellungen enthält, wählen Sie das Konto aus, in dem Sie die Ergebnisse speichern möchten.
  6. Wenn die Sammlung abgeschlossen ist, wählen Sie "Link generieren " aus, um einen herunterladbaren Link oder einen freigabefähigen Link zu erstellen, der nach sieben Tagen abläuft. Wenn die Ergebnisse nicht jeden Knoten enthalten, warten Sie auf die verbleibenden Uploads, und wählen Sie dann erneut "Link generieren " aus.

Weitere Informationen finden Sie unter AKS-Tools und -Diagnosen in Visual Studio Code.

Bereitstellen von Periscope mit Kustomize

Verwenden Sie Kustomize, wenn Sie die Kubernetes-Ressourcen überprüfen oder überschreiben müssen, eine bestimmte Periscope-Version auswählen oder die Kollektoren anpassen müssen. Für diese Methode müssen Sie die Speicheranmeldeinformationen und Manifeste direkt verwalten.

  1. Erstellen Sie ein Verzeichnis für die Periscope-Konfiguration, und erstellen Sie dann eine kustomization.yaml Datei in diesem Verzeichnis.

  2. Erstellen Sie ein Konto SAS mit den folgenden Einstellungen. Verwenden Sie die kürzeste praktische Ablaufzeit.

    • Dienst: Blob (ss=b).
    • Ressourcentypen: Dienst, Container und Objekt (srt=sco).
    • Berechtigungen: Lesen, Auflisten, Hinzufügen, Erstellen und Schreiben (sp=rlacw).
    • Zulässiges Protokoll: nur HTTPS.
  3. Fügen Sie die Periscope-Basisversion, Bildtags, Speicherziel, SAS-Schlüssel und Run-ID zur Datei hinzu. Ersetzen Sie jeden Platzhalter durch Ihre Werte. Der SAS-Schlüssel muss das führende Fragezeichen (?) enthalten.

    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

    Die kustomization.yaml Datei enthält das SAS-Token im Nur-Text-Format. Übernehmen Sie die Datei nicht in die Quellcodeverwaltung. Schützen Sie die SAS wie einen Kontoschlüssel, und widerrufen oder drehen Sie sie, wenn Sie sie nicht mehr benötigen.

  4. Stellen Sie eine Verbindung kubectl mit Ihrem AKS-Cluster her.

    az aks get-credentials \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name>
    
  5. Bereitstellen von Periscope.

    kubectl apply -k <path-to-kustomize-directory>
    
  6. Stellen Sie sicher, dass die Periscope-Pods ausgeführt werden.

    kubectl get pods --namespace aks-periscope
    

Informationen zu allen verfügbaren Konfigurationswerten, optionalen Windows Komponenten und Anweisungen zum Ausführen einer anderen Sammlung finden Sie im Bereitstellungshandbuch für AKS Periscope Kustomize.

Bereitstellen von Periscope mithilfe von Azure Copilot

Verwenden Sie Azure Copilot, um Periscope in einem AKS-Cluster bereitzustellen. Wenn Azure Copilot den Cluster nicht aus dem aktuellen Kontext ermitteln kann, werden Sie aufgefordert, einen Cluster auszuwählen. Nachdem Sie den Cluster ausgewählt haben, bitten Azure Copilot Sie möglicherweise, die Bereitstellungsdetails zu bestätigen, bevor periscope bereitgestellt wird.

Beispiele für Eingabeaufforderungen sind:

  • "Helfen Sie mir, Periscope auf meinem AKS-Cluster bereitzustellen"
  • „Stelle Periscope in meinem Cluster bereit“
  • "Periscope zu meinem Cluster hinzufügen"
  • „Füge in meinem Cluster eine Periscope-Protokollierung hinzu“
  • "Helfen Sie mir beim Sammeln von Diagnoseprotokollen aus meinem AKS-Cluster"