Hybride Kubernetes-clusters configureren met Container Insights

Container insights biedt een uitgebreide bewakingservaring voor de Azure Kubernetes Service (AKS). In dit artikel wordt beschreven hoe u bewaking inschakelt van Kubernetes-clusters die buiten Azure worden gehost en een vergelijkbare bewakingservaring behalen.

Ondersteunde configuraties

De volgende configuraties worden officieel ondersteund met Container Insights. Als u een andere versie van Kubernetes en besturingssysteemversies hebt, opent u een ondersteuningsticket.

  • Omgevingen:
    • Kubernetes on-premises.
    • OpenShift versie 4 en hoger, on-premises of in andere cloudomgevingen.
  • Versies van Kubernetes en ondersteuningsbeleid zijn hetzelfde als de versies van AKS die worden ondersteund.
  • De volgende containerruntimes worden ondersteund: Moby- en CRI-compatibele runtimes, zoals CRI-O en ContainerD.
  • De linux-besturingssysteemrelease voor hoofd- en werkknooppunten die worden ondersteund, zijn Ubuntu (18.04 LTS en 16.04 LTS) en Red Hat Enterprise Linux CoreOS 43.81.
  • Azure Access Control-service wordt ondersteund: op rollen gebaseerd toegangsbeheer (RBAC) en niet-RBAC van Kubernetes.

Vereisten

Voordat u begint, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

  • U hebt een Log Analytics-werkruimte. Container Insights ondersteunt een Log Analytics-werkruimte in de regio's die worden vermeld in Azure-producten per regio. U kunt uw eigen werkruimte maken via Azure Resource Manager, PowerShell of Azure Portal.

    Notitie

    Het inschakelen van de bewaking van meerdere clusters met dezelfde clusternaam voor dezelfde Log Analytics-werkruimte wordt niet ondersteund. Clusternamen moeten uniek zijn.

  • U bent lid van de rol Log Analytics-inzender om containerbewaking in te schakelen. Zie Toegang tot werkruimte- en logboekgegevens beheren voor meer informatie over het beheren van de toegang tot een Log Analytics-werkruimte.

  • Als u de bewakingsgegevens wilt weergeven, moet u de rol log analytics-lezer hebben in de Log Analytics-werkruimte, geconfigureerd met Container Insights.

  • U hebt een Helm-client om de Container Insights-grafiek voor het opgegeven Kubernetes-cluster te onboarden.

  • De volgende proxy- en firewallconfiguratiegegevens zijn vereist voor de containerversie van de Log Analytics-agent voor Linux om te communiceren met Azure Monitor:

    Agentresource Poorten
    *.ods.opinsights.azure.com Poort 443
    *.oms.opinsights.azure.com Poort 443
    *.dc.services.visualstudio.com Poort 443
  • Voor de containeragent moet de Kubelet cAdvisor secure port: 10250 worden geopend of unsecure port :10255 worden geopend op alle knooppunten in het cluster om metrische prestatiegegevens te verzamelen. U wordt aangeraden te configureren secure port: 10250 op Kubelet cAdvisor als deze nog niet is geconfigureerd.

  • Voor de containeragent moeten de volgende omgevingsvariabelen worden opgegeven in de container om te communiceren met de Kubernetes-API-service in het cluster om inventarisgegevens te verzamelen: KUBERNETES_SERVICE_HOST en KUBERNETES_PORT_443_TCP_PORT.

Belangrijk

De minimale agentversie die wordt ondersteund voor het bewaken van hybride Kubernetes-clusters is ciprod10182019 of hoger.

Bewaking inschakelen

Containerinzichten inschakelen voor het hybride Kubernetes-cluster:

  1. Configureer uw Log Analytics-werkruimte met de Container Insights-oplossing.

  2. Schakel de Helm-grafiek containerinzichten in met een Log Analytics-werkruimte.

Zie Bewakingsoplossingen in Azure Monitor voor meer informatie over bewakingsoplossingen in Azure Monitor.

De Azure Monitor Containers-oplossing toevoegen

U kunt de oplossing implementeren met de opgegeven Azure Resource Manager-sjabloon met behulp van de Azure PowerShell-cmdlet New-AzResourceGroupDeployment of met de Azure CLI.

Als u niet bekend bent met het concept van het implementeren van resources met behulp van een sjabloon, raadpleegt u:

Als u ervoor kiest om de Azure CLI te gebruiken, moet u eerst de CLI lokaal installeren en gebruiken. U moet azure CLI versie 2.0.59 of hoger uitvoeren. Voer uit az --versionom uw versie te identificeren. Als u de Azure CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.

Deze methode bevat twee JSON-sjablonen. Met één sjabloon wordt de configuratie opgegeven voor het inschakelen van bewaking. De andere sjabloon bevat parameterwaarden die u configureert om op te geven:

  • workspaceResourceId: de volledige resource-id van uw Log Analytics-werkruimte.
  • workspaceRegion: De regio waarin de werkruimte wordt gemaakt, die ook wel locatie wordt genoemd in de werkruimte-eigenschappen wanneer u deze vanuit Azure Portal bekijkt.

Voer de volgende stappen uit om eerst de volledige resource-id van uw Log Analytics-werkruimte te identificeren die is vereist voor de workspaceResourceId parameterwaarde in het bestand containerSolutionParams.json . Voer vervolgens de PowerShell-cmdlet of De Azure CLI-opdracht uit om de oplossing toe te voegen.

  1. Vermeld alle abonnementen waartoe u toegang hebt met behulp van de volgende opdracht:

    az account list --all -o table
    

    De uitvoer lijkt op het volgende voorbeeld:

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

    Kopieer de waarde voor SubscriptionId.

  2. Schakel over naar het abonnement dat als host fungeert voor de Log Analytics-werkruimte met behulp van de volgende opdracht:

    az account set -s <subscriptionId of the workspace>
    
  3. In het volgende voorbeeld wordt de lijst met werkruimten in uw abonnementen weergegeven in de standaard-JSON-indeling:

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

    Zoek in de uitvoer de naam van de werkruimte. Kopieer vervolgens de volledige resource-id van die Log Analytics-werkruimte onder de veld-id.

  4. Kopieer en plak de volgende JSON-syntaxis in het bestand:

    {
    "$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. Sla dit bestand op als containerSolution.json in een lokale map.

  6. Plak de volgende JSON-syntaxis in uw bestand:

    {
      "$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. Bewerk de waarden voor workspaceResourceId met behulp van de waarde die u in stap 3 hebt gekopieerd. Kopieer voor workspaceRegion de regiowaarde na het uitvoeren van de Azure CLI-opdracht az monitor log-analytics workspace show.

  8. Sla dit bestand op als containerSolutionParams.json in een lokale map.

  9. U kunt deze sjabloon nu implementeren.

    • Als u wilt implementeren met Azure PowerShell, gebruikt u de volgende opdrachten in de map die de sjabloon bevat:

      # 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
      

      Het kan enkele minuten duren voordat de configuratie is gewijzigd. Wanneer dit is voltooid, bevat een bericht dat lijkt op het volgende voorbeeld dit resultaat:

      provisioningState       : Succeeded
      
    • Voer de volgende opdrachten uit om te implementeren met de Azure CLI:

      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
      

      Het kan enkele minuten duren voordat de configuratie is gewijzigd. Wanneer dit is voltooid, bevat een bericht dat lijkt op het volgende voorbeeld dit resultaat:

      provisioningState       : Succeeded
      

      Nadat u bewaking hebt ingeschakeld, kan het ongeveer 15 minuten duren voordat u metrische statusgegevens voor het cluster kunt bekijken.

De Helm-grafiek installeren

In deze sectie installeert u de containeragent voor Container Insights. Voordat u verdergaat, moet u de werkruimte-id identificeren die is vereist voor de amalogsagent.secret.wsid parameter en de primaire sleutel die is vereist voor de amalogsagent.secret.key parameter. Volg deze stappen om deze informatie te identificeren en voer vervolgens de opdrachten uit om de agent te installeren met behulp van de Helm-grafiek.

  1. Voer de volgende opdracht uit om de werkruimte-id te identificeren:

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

    Zoek in de uitvoer de naam van de werkruimte onder de veldnaam. Kopieer vervolgens de werkruimte-id van die Log Analytics-werkruimte onder de veld-klant-id.

  2. Voer de volgende opdracht uit om de primaire sleutel voor de werkruimte te identificeren:

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

    Zoek in de uitvoer de primaire sleutel onder het veld primarySharedKey en kopieer de waarde.

    Notitie

    De volgende opdrachten zijn alleen van toepassing op Helm versie 2. Het gebruik van de --name parameter is niet van toepassing op Helm versie 3.

    Als uw Kubernetes-cluster communiceert via een proxyserver, configureert u de parameter amalogsagent.proxy met de URL van de proxyserver. Als het cluster niet communiceert via een proxyserver, hoeft u deze parameter niet op te geven. Zie de sectie Het proxy-eindpunt verderop in dit artikel configureren voor meer informatie.

  3. Voeg de Opslagplaats voor Azure-grafieken toe aan uw lokale lijst door de volgende opdracht uit te voeren:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Installeer de grafiek door de volgende opdracht uit te voeren:

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

    Als de Log Analytics-werkruimte zich in Azure China 21Vianet bevindt, voert u de volgende opdracht uit:

    $ 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
    

    Als de Log Analytics-werkruimte zich in Azure US Government bevindt, voert u de volgende opdracht uit:

    $ 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
    

De Helm-grafiek inschakelen met behulp van het API-model

U kunt een invoegtoepassing opgeven in het JSON-bestand met de AKS Engine-clusterspecificatie, ook wel het API-model genoemd. Geef in deze invoegtoepassing de base64-gecodeerde versie van WorkspaceGUID en WorkspaceKey van de Log Analytics-werkruimte op waarin de verzamelde bewakingsgegevens worden opgeslagen. U vindt WorkspaceGUID en WorkspaceKey gebruikt stap 1 en 2 in de vorige sectie.

Ondersteunde API-definities voor het Azure Stack Hub-cluster vindt u in het voorbeeld kubernetes-container-monitoring_existing_workspace_id_and_key.json. Zoek met name de eigenschap addons in 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>"
             }
           }
         ]
       }

Agentgegevensverzameling configureren

Vanaf grafiekversie 1.0.0 worden de instellingen voor het verzamelen van agentgegevens beheerd vanuit de ConfigMap. Zie Agentgegevensverzameling configureren voor Container Insights voor meer informatie over instellingen voor het verzamelen van agentgegevens.

Nadat u de grafiek hebt geïmplementeerd, kunt u de gegevens voor uw hybride Kubernetes-cluster bekijken in Container Insights vanuit Azure Portal.

Notitie

De opnamelatentie ligt ongeveer 5 tot 10 minuten van de agent om door te voeren in de Log Analytics-werkruimte. De status van het cluster geeft de waarde Geen gegevens of Onbekend weer totdat alle vereiste bewakingsgegevens beschikbaar zijn in Azure Monitor.

Het proxy-eindpunt configureren

Vanaf grafiekversie 2.7.1 biedt de grafiek ondersteuning voor het opgeven van het proxy-eindpunt met de amalogsagent.proxy grafiekparameter. Op deze manier kan het communiceren via uw proxyserver. Communicatie tussen de Container Insights-agent en Azure Monitor kan een HTTP- of HTTPS-proxyserver zijn. Zowel anonieme als basisverificatie met een gebruikersnaam en wachtwoord worden ondersteund.

De proxyconfiguratiewaarde heeft de syntaxis [protocol://][user:password@]proxyhost[:port].

Notitie

Als voor uw proxyserver geen verificatie is vereist, moet u nog steeds een pseudo-gebruikersnaam en -wachtwoord opgeven. Dit kan elke gebruikersnaam of elk wachtwoord zijn.

Eigenschappen Beschrijving
protocol HTTP of HTTPS
Gebruiker Optionele gebruikersnaam voor proxyverificatie
password Optioneel wachtwoord voor proxyverificatie
proxyhost Adres of FQDN van de proxyserver
poort Optioneel poortnummer voor de proxyserver

Een voorbeeld is amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Als u het protocol opgeeft als http, worden de HTTP-aanvragen gemaakt met behulp van een beveiligde SSL/TLS-verbinding. Uw proxyserver moet SSL/TLS-protocollen ondersteunen.

Problemen oplossen

Als er een fout optreedt tijdens het inschakelen van bewaking voor uw hybride Kubernetes-cluster, gebruikt u het PowerShell-script TroubleshootError_nonAzureK8s.ps1 om u te helpen bij het detecteren en oplossen van de problemen die u ondervindt. Het is ontworpen om de volgende problemen te detecteren en te corrigeren:

  • De opgegeven Log Analytics-werkruimte is geldig.
  • De Log Analytics-werkruimte is geconfigureerd met de Container Insights-oplossing. Zo niet, configureert u de werkruimte.
  • De replicasetpods van de Azure Monitor-agent worden uitgevoerd.
  • De Daemonset-pods van de Azure Monitor-agent worden uitgevoerd.
  • De Azure Monitor Agent Health-service wordt uitgevoerd.
  • De Log Analytics-werkruimte-id en -sleutel die op de containeragent zijn geconfigureerd, komen overeen met de werkruimte waarmee het inzicht is geconfigureerd.
  • Controleer of alle Linux-werkknooppunten het kubernetes.io/role=agent label hebben voor de schedulers-pod. Als deze niet bestaat, voegt u deze toe.
  • Voorwaarden identificeren die kunnen aangeven cAdvisor secure port:10250 of unsecure port: 10255 niet worden geopend op alle knooppunten in het cluster.

Als u wilt uitvoeren met Azure PowerShell, gebruikt u de volgende opdrachten in de map die het script bevat:

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

Volgende stappen

Nu bewaking is ingeschakeld voor het verzamelen van status- en resourcegebruik van uw hybride Kubernetes-clusters en -workloads, leert u hoe u Container Insights gebruikt .