Konfigurieren von Kubernetes-Hybridclustern mit Container Insights

Containereinblicke bieten eine umfassende Überwachungserfahrung für den Azure Kubernetes Service (AKS). In diesem Artikel wird beschrieben, wie Sie die Überwachung von Kubernetes-Clustern, die außerhalb von Azure gehostet werden, aktivieren und eine ähnliche Überwachung erreichen können.

Unterstützte Konfigurationen

Die folgenden Konfigurationen werden offiziell für Container Insights unterstützt. Wenn Sie über eine andere Version von Kubernetes und andere Betriebssystemversionen verfügen, öffnen Sie bitte ein Supportticket.

  • Umgebungen:
    • Lokales Kubernetes
    • OpenShift, Version 4 und höher, lokal oder in anderen Cloudumgebungen.
  • Die Versionen von Kubernetes und die Supportrichtlinie entsprechen den unterstützten Versionen von AKS.
  • Folgende Containerruntimes werden unterstützt: Moby- und CRI-kompatible Runtimes wie CRI-O und ContainerD.
  • Unterstützte Linux-Betriebssystemreleases für Haupt- und Workerknoten: Ubuntu (18.04 LTS und 16.04 LTS) und Red Hat Enterprise Linux CoreOS 43.81.
  • Vom Azure Access Control-Dienst unterstützt: Rollenbasierte Zugriffssteuerung (RBAC) für Kubernetes und Nicht-RBAC.

Voraussetzungen

Bevor Sie beginnen, vergewissern Sie sich, dass Sie die folgenden Voraussetzungen erfüllen:

  • Sie verfügen über einen Log Analytics-Arbeitsbereich. Container Insights unterstützt einen Log Analytics-Arbeitsbereich in den unter Verfügbare Produkte nach Region aufgeführten Regionen in Azure. Sie können Ihren eigenen Arbeitsbereich über Azure Resource Manager, mithilfe von PowerShell oder über das Azure-Portal erstellen.

    Hinweis

    Die Überwachung von mehreren Clustern mit demselben Clusternamen im selben Log Analytics-Arbeitsbereich wird nicht unterstützt. Clusternamen müssen eindeutig sein.

  • Sie gehören der Rolle „Log Analytics-Mitwirkender“ an, um die Containerüberwachung aktivieren zu können. Weitere Informationen zum Steuern des Zugriffs auf einen Log Analytics-Arbeitsbereich finden Sie unter Verwalten des Zugriffs auf Arbeitsbereich und Logdaten.

  • Sie müssen über die Rolle Log Analytics-Leser im mit Container Insights konfigurierten Log Analytics-Arbeitsbereich verfügen, um die Überwachungsdaten anzeigen zu können.

  • Sie verfügen über einen Helm-Client zum Durchführen des Onboardings für das Container Insights-Diagramm für den angegebenen Kubernetes-Cluster.

  • Für die Kommunikation zwischen der Containerversion des Log Analytics-Agents für Linux und Azure Monitor sind die folgenden Proxy- und Firewallkonfigurationsinformationen erforderlich:

    Agent-Ressource Ports
    *.ods.opinsights.azure.com Port 443
    *.oms.opinsights.azure.com Port 443
    *.dc.services.visualstudio.com Port 443
  • Für den Container-Agent muss das Kubelet cAdvisor secure port: 10250 oder unsecure port :10255 auf allen Knoten im Cluster geöffnet werden, damit Leistungsmetriken erfasst werden können. Wir empfehlen Ihnen, secure port: 10250 auf dem Kubelet „cAdvisor“ zu konfigurieren, falls dies noch nicht der Fall ist.

  • Für den Container-Agent müssen die folgenden Umgebungsvariablen im Container angegeben werden, damit die Kommunikation mit dem Kubernetes-API-Dienst innerhalb des Clusters zum Erfassen von Bestandsdaten möglich ist: KUBERNETES_SERVICE_HOST und KUBERNETES_PORT_443_TCP_PORT.

Wichtig

Die für die Überwachung von Kubernetes-Hybridclustern unterstützte Agent-Mindestversion ist ciprod10182019 oder höher.

Aktivieren der Überwachung

So aktivieren Sie Container Insights für den Kubernetes-Hybridcluster

  1. Konfigurieren Sie Ihren Log Analytics-Arbeitsbereich mit der Container Insights-Lösung.

  2. Aktivieren Sie das Helm-Chart von Container Insights mit einem Log Analytics-Arbeitsbereich.

Weitere Informationen zu Überwachungslösungen in Azure Monitor finden Sie unter Überwachungslösungen in Azure Monitor.

Hinzufügen von Azure Monitor für Container

Sie können die Lösung mit der bereitgestellten Azure Resource Manager-Vorlage mithilfe des Azure PowerShell-Cmdlets New-AzResourceGroupDeployment oder mit der Azure-Befehlszeilenschnittstelle bereitstellen.

Wenn Sie mit der Bereitstellung von Ressourcen mithilfe einer Vorlage nicht vertraut sind, finden Sie weitere Informationen unter:

Wenn Sie die Azure CLI verwenden möchten, müssen Sie sie zuerst installieren und lokal verwenden. Sie benötigen Azure CLI 2.0.59 oder höher. Um Ihre Version zu ermitteln, führen Sie az --version aus. Informationen zur Installation und zum Upgrade von Azure CLI finden Sie unter Installieren von Azure CLI.

Diese Methode umfasst zwei JSON-Vorlagen. Eine Vorlage gibt die Konfiguration zum Aktivieren der Überwachung an. Die andere Vorlage enthält Parameterwerte, die Sie konfigurieren, um Folgendes anzugeben:

  • workspaceResourceId: Die vollständige Ressourcen-ID Ihres Log Analytics-Arbeitsbereichs.
  • workspaceRegion: Die Region, in der der Arbeitsbereich erstellt wird. Beim Anzeigen über das Azure-Portal wird sie in den Arbeitsbereichseigenschaften auch als Standort bezeichnet.

Um zunächst die vollständige Ressourcen-ID Ihres Log Analytics-Arbeitsbereichs zu ermitteln, die für den Wert des Parameters workspaceResourceId in der Datei containerSolutionParams.json erforderlich ist, führen Sie die folgenden Schritte aus. Führen Sie dann das PowerShell-Cmdlet oder den Azure CLI-Befehl aus, um die Lösung hinzuzufügen.

  1. Listen Sie mit dem folgenden Befehl alle Abonnements auf, auf die Sie Zugriff haben:

    az account list --all -o table
    

    Die Ausgabe ähnelt dem folgenden Beispiel:

    Name                                  CloudName    SubscriptionId                        State    IsDefault
    ------------------------------------  -----------  ------------------------------------  -------  -----------
    Microsoft Azure                       AzureCloud   0fb60ef2-03cc-4290-b595-e71108e8f4ce  Enabled  True
    

    Kopieren Sie den Wert für SubscriptionId.

  2. Wechseln Sie mit dem folgenden Befehl zu dem Abonnement, das den Log Analytics-Arbeitsbereich hostet:

    az account set -s <subscriptionId of the workspace>
    
  3. Im folgenden Beispiel wird die Liste mit den Arbeitsbereichen Ihrer Abonnements im JSON-Standardformat angezeigt:

    az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
    

    In der Ausgabe finden Sie den Namen des Arbeitsbereichs. Kopieren Sie dann die vollständige Ressourcen-ID dieses Log Analytics-Arbeitsbereichs in das Feld ID.

  4. Kopieren Sie die folgende JSON-Syntax, und fügen Sie sie in Ihre Datei ein:

    {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaceResourceId": {
            "type": "string",
            "metadata": {
                "description": "Azure Monitor Log Analytics Workspace Resource ID"
            }
        },
        "workspaceRegion": {
            "type": "string",
            "metadata": {
                "description": "Azure Monitor Log Analytics Workspace region"
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "name": "[Concat('ContainerInsights', '-',  uniqueString(parameters('workspaceResourceId')))]",
            "apiVersion": "2017-05-10",
            "subscriptionId": "[split(parameters('workspaceResourceId'),'/')[2]]",
            "resourceGroup": "[split(parameters('workspaceResourceId'),'/')[4]]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2015-11-01-preview",
                            "type": "Microsoft.OperationsManagement/solutions",
                            "location": "[parameters('workspaceRegion')]",
                            "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]",
                            "properties": {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]"
                            },
                            "plan": {
                                "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]",
                                "product": "[Concat('OMSGallery/', 'ContainerInsights')]",
                                "promotionCode": "",
                                "publisher": "Microsoft"
                            }
                        }
                    ]
                },
                "parameters": {}
            }
         }
      ]
    }
    
  5. Speichern Sie diese Datei als containerSolution.json in einem lokalen Ordner.

  6. Fügen Sie die folgende JSON-Syntax in Ihre Datei ein:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "workspaceResourceId": {
          "value": "<workspaceResourceId>"
      },
      "workspaceRegion": {
        "value": "<workspaceRegion>"
      }
     }
    }
    
  7. Bearbeiten Sie die Werte für workspaceResourceId mithilfe des Werts, den Sie in Schritt 3 kopiert haben. Für workspaceRegion kopieren Sie den Wert für Region, nachdem Sie den Azure CLI-Befehl az monitor log-analytics workspace show ausgeführt haben.

  8. Speichern Sie diese Datei als containerSolutionParams.json in einem lokalen Ordner.

  9. Die Vorlage kann nun bereitgestellt werden.

    • Verwenden Sie zum Bereitstellen mit Azure PowerShell die folgenden Befehle in dem Ordner mit der Vorlage:

      # configure and login to the cloud of Log Analytics workspace.Specify the corresponding cloud environment of your workspace to below command.
      Connect-AzureRmAccount -Environment <AzureCloud | AzureChinaCloud | AzureUSGovernment>
      
      # set the context of the subscription of Log Analytics workspace
      Set-AzureRmContext -SubscriptionId <subscription Id of Log Analytics workspace>
      
      # execute deployment command to add Container Insights solution to the specified Log Analytics workspace
      New-AzureRmResourceGroupDeployment -Name OnboardCluster -ResourceGroupName <resource group of Log Analytics workspace> -TemplateFile .\containerSolution.json -TemplateParameterFile .\containerSolutionParams.json
      

      Die Änderung der Konfiguration kann einige Minuten dauern. Wenn sie abgeschlossen ist, wird eine Meldung, die dem folgenden Beispiel ähnelt und das Ergebnis enthält, anzeigt:

      provisioningState       : Succeeded
      
    • Führen Sie zum Bereitstellen mit der Azure CLI die folgenden Befehle aus:

      az login
      az account set --name <AzureCloud | AzureChinaCloud | AzureUSGovernment>
      az login
      az account set --subscription "Subscription Name"
      # execute deployment command to add container insights solution to the specified Log Analytics workspace
      az deployment group create --resource-group <resource group of log analytics workspace> --name <deployment name> --template-file  ./containerSolution.json --parameters @./containerSolutionParams.json
      

      Die Änderung der Konfiguration kann einige Minuten dauern. Wenn sie abgeschlossen ist, wird eine Meldung, die dem folgenden Beispiel ähnelt und das Ergebnis enthält, anzeigt:

      provisioningState       : Succeeded
      

      Nach dem Aktivieren der Überwachung kann es ca. 15 Minuten dauern, bis Integritätsmetriken für den Cluster angezeigt werden.

Installieren des Helm-Charts

In diesem Abschnitt installieren Sie den Container-Agent für Container Insights. Bevor Sie fortfahren, ermitteln Sie die ID des Arbeitsbereichs, die für den Parameter amalogsagent.secret.wsid erforderlich ist, und den Primärschlüssel, der für den Parameter amalogsagent.secret.key erforderlich ist. Um diese Informationen zu identifizieren, befolgen Sie die folgenden Schritte, und führen Sie anschließend die Befehle zur Installation des Agents mithilfe des Helm-Charts aus.

  1. Führen Sie den folgenden Befehl aus, um die Arbeitsbereichs-ID zu ermitteln:

    az monitor log-analytics workspace list --resource-group <resourceGroupName>

    Suchen Sie in der Ausgabe den Arbeitsbereichsnamen unter dem Feld Name. Kopieren Sie dann die Arbeitsbereich-ID dieses Log Analytics-Arbeitsbereichs unter das Feld customerID.

  2. Führen Sie den folgenden Befehl aus, um den Primärschlüssel für den Arbeitsbereich zu ermitteln:

    az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>

    Suchen Sie in der Ausgabe den Primärschlüssel im Feld primarySharedKey, und kopieren Sie den Wert.

    Hinweis

    Die folgenden Befehle gelten nur für die Helm-Version 2. Die Verwendung des Parameters --name gilt nicht für die Helm-Version 3.

    Wenn der Kubernetes-Cluster über einen Proxyserver kommuniziert, konfigurieren Sie den Parameter amalogsagent.proxy mit der URL des Proxyservers. Wenn der Cluster nicht über einen Proxyserver kommuniziert, müssen Sie diesen Parameter nicht angeben. Weitere Informationen finden Sie im Abschnitt Konfigurieren des Proxyendpunkts weiter unten in diesem Artikel.

  3. Führen Sie folgenden Befehl aus, um das Repository der Azure-Charts in die lokale Liste einzufügen:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Installieren Sie das Chart, indem Sie den folgenden Befehl ausführen:

    $ helm install --name myrelease-1 \
    --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
    

    Wenn sich der Log Analytics-Arbeitsbereich in Azure China 21Vianet befindet, führen Sie den folgenden Befehl aus:

    $ helm install --name myrelease-1 \
     --set amalogsagent.domain=opinsights.azure.cn,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
    

    Wenn sich der Log Analytics-Arbeitsbereich in einer Azure-Region von „US Government“ befindet, führen Sie den folgenden Befehl aus:

    $ helm install --name myrelease-1 \
    --set amalogsagent.domain=opinsights.azure.us,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
    

Aktivieren des Helm-Charts mit dem API-Modell

Sie können ein Add-On in der JSON-Datei mit der Clusterspezifikation der AKS-Engine angeben, das auch als API-Modell bezeichnet wird. Stellen Sie in diesem Add-On die Base64-codierte Version von WorkspaceGUID und WorkspaceKey des Log Analytics-Arbeitsbereichs bereit, in dem die gesammelten Überwachungsdaten gespeichert werden. WorkspaceGUID und WorkspaceKey ermitteln Sie mit den Schritten 1 und 2 im vorherigen Abschnitt.

Unterstützte API-Definitionen für den Azure Stack Hub-Cluster finden Sie in dem Beispiel: kubernetes-container-monitoring_existing_workspace_id_and_key.json. Suchen Sie nach der addons-Eigenschaft im Abschnitt kubernetesConfig:

"orchestratorType": "Kubernetes",
       "kubernetesConfig": {
         "addons": [
           {
             "name": "container-monitoring",
             "enabled": true,
             "config": {
               "workspaceGuid": "<Azure Log Analytics Workspace Id in Base-64 encoded>",
               "workspaceKey": "<Azure Log Analytics Workspace Key in Base-64 encoded>"
             }
           }
         ]
       }

Konfigurieren der Datensammlung des Agents

Ab Chartversion 1.0.0 werden die Einstellungen für die Datensammlung des Agents über die ConfigMap gesteuert. Weitere Informationen zu den Einstellungen für die Datensammlung des Agents finden Sie unter Konfigurieren der Datensammlung des Container Insights-Agents.

Nachdem Sie das Chart erfolgreich bereitgestellt haben, können Sie im Azure-Portal die Daten für den Kubernetes-Hybridcluster in Container Insights überprüfen.

Hinweis

Die Wartezeit für die Erfassung beträgt etwa 5 bis 10 Minuten vom Agent bis zum Committen im Log Analytics-Arbeitsbereich. Als Status des Clusters wird der Wert Keine Daten oder Unbekannt angegeben, bis alle erforderlichen Überwachungsdaten in Azure Monitor verfügbar sind.

Konfigurieren des Proxyendpunkts

Ab Chartversion 2.7.1 kann im Chart der Proxyendpunkt mit dem Chartparameter amalogsagent.proxy angegeben werden. Auf diese Weise kann er über Ihren Proxyserver kommunizieren. Die Kommunikation zwischen dem Container Insights-Agent und Azure Monitor kann über einen HTTP- oder HTTPS-Proxyserver erfolgen. Sowohl die anonyme Authentifizierung als auch die Standardauthentifizierung mithilfe eines Benutzernamens und eines Kennworts wird unterstützt.

Der Wert für die Proxykonfiguration hat die Syntax [protocol://][user:password@]proxyhost[:port].

Hinweis

Wenn Ihr Proxyserver keine Authentifizierung erfordert, müssen Sie trotzdem einen Pseudobenutzernamen und ein Kennwort angeben. Dies kann ein beliebiger Benutzername oder ein beliebiges Kennwort sein.

Eigenschaft BESCHREIBUNG
Protokoll HTTP oder HTTPS
user Optionaler Benutzername für die Proxyauthentifizierung
password Optionales Kennwort für die Proxyauthentifizierung
proxyhost Adresse oder FQDN des Proxyservers
port Optionale Portnummer für den Proxyserver

z. B. amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Wenn Sie das Protokoll als http angeben, werden die HTTP-Anforderungen mit einer sicheren SSL/TLS-Verbindung erstellt. Der Proxyserver muss SSL/TLS-Protokolle unterstützen.

Problembehandlung

Wenn beim Versuch, die Überwachung für Ihren Hybrid-Kubernetes-Cluster zu aktivieren, ein Fehler auftritt, verwenden Sie das PowerShell-Skript TroubleshootError_nonAzureK8s.ps1 , um die auftretenden Probleme zu erkennen und zu beheben. Es wurde entwickelt, um die folgenden Probleme zu erkennen und zu beheben:

  • Der angegebene Log Analytics-Arbeitsbereich ist gültig.
  • Der Log Analytics-Arbeitsbereich ist mit der Container Insights-Lösung konfiguriert. Ist das nicht der Fall, konfigurieren Sie den Arbeitsbereich.
  • Die ReplicaSet-Pods des Azure Monitor-Agents werden ausgeführt.
  • Die DaemonSet-Pods des Azure Monitor-Agents werden ausgeführt.
  • Der Agent-Integritätsdiagnosedienst von Azure Monitor wird ausgeführt.
  • Die ID und der Schlüssel des Log Analytics-Arbeitsbereichs, die für den Container-Agent konfiguriert wurden, entsprechen dem Arbeitsbereich, mit dem Insight konfiguriert ist.
  • Überprüfen Sie, ob alle Linux-Workerknoten über die Bezeichnung kubernetes.io/role=agent für den Pod des Zeitplaners verfügen. Fügen Sie sie anderenfalls hinzu.
  • Identifizieren Sie Bedingungen, die auf allen Knoten im Cluster hinweisen cAdvisor secure port:10250 oder unsecure port: 10255 nicht geöffnet werden.

Verwenden Sie zum Ausführen mit Azure PowerShell die folgenden Befehle in dem Ordner mit dem Skript:

.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>

Nächste Schritte

Nachdem die Überwachung aktiviert ist, um Integrität und Ressourcenverwendung Ihres Kubernetes-Hybridclusters und der darauf ausgeführten Workloads zu erfassen, erfahren Sie mehr über die Verwendung von Container Insights.