Dela via


Konfigurera Kubernetes-hybridkluster med Container Insights

Containerinsikter ger en omfattande övervakningsupplevelse för Azure Kubernetes Service (AKS). Den här artikeln beskriver hur du aktiverar övervakning av Kubernetes-kluster som finns utanför Azure och får en liknande övervakningsupplevelse.

Konfigurationer som stöds

Följande konfigurationer stöds officiellt med Container Insights. Om du har en annan version av Kubernetes och operativsystemversioner öppnar du ett supportärende..

  • Miljöer:
    • Kubernetes lokalt.
    • OpenShift version 4 och senare, lokalt eller i andra molnmiljöer.
  • Versioner av Kubernetes och supportprinciper är samma som versioner av AKS som stöds.
  • Följande containerkörningar stöds: Moby- och CRI-kompatibla körningar som CRI-O och ContainerD.
  • Linux OS-versionen för huvudnoder och arbetsnoder som stöds är Ubuntu (18.04 LTS och 16.04 LTS) och Red Hat Enterprise Linux CoreOS 43.81.
  • Azure Access Control-tjänsten stöds: Rollbaserad åtkomstkontroll i Kubernetes (RBAC) och icke-RBAC.

Förutsättningar

Kontrollera att du uppfyller följande krav innan du börjar:

  • Du har en Log Analytics-arbetsyta. Container insights stöder en Log Analytics-arbetsyta i de regioner som anges i Azure Products per region. Du kan skapa en egen arbetsyta via Azure Resource Manager, PowerShell eller Azure Portal.

    Kommentar

    Det går inte att aktivera övervakning av flera kluster med samma klusternamn till samma Log Analytics-arbetsyta. Klusternamn måste vara unika.

  • Du är medlem i Log Analytics-deltagarrollen för att aktivera containerövervakning. Mer information om hur du styr åtkomsten till en Log Analytics-arbetsyta finns i Hantera åtkomst till arbetsyta och loggdata.

  • Om du vill visa övervakningsdata måste du ha rollen Log Analytics-läsare i Log Analytics-arbetsytan, konfigurerad med Container Insights.

  • Du har en Helm-klient för att registrera containerinsiktsdiagrammet för det angivna Kubernetes-klustret.

  • Följande proxy- och brandväggskonfigurationsinformation krävs för att den containerbaserade versionen av Log Analytics-agenten för Linux ska kunna kommunicera med Azure Monitor:

    Agentresurs Portar
    *.ods.opinsights.azure.com Port 443
    *.oms.opinsights.azure.com Port 443
    *.dc.services.visualstudio.com Port 443
  • Den containerbaserade agenten kräver att Kubelet cAdvisor secure port: 10250 eller unsecure port :10255 öppnas på alla noder i klustret för att samla in prestandamått. Vi rekommenderar att du konfigurerar secure port: 10250 på Kubelet cAdvisor om den inte redan har konfigurerats.

  • Den containerbaserade agenten kräver att följande miljövariabler anges i containern för att kommunicera med Kubernetes API-tjänsten i klustret för att samla in inventeringsdata: KUBERNETES_SERVICE_HOST och KUBERNETES_PORT_443_TCP_PORT.

Viktigt!

Den lägsta agentversion som stöds för övervakning av Kubernetes-hybridkluster är ciprod10182019 eller senare.

Aktivera övervakning

Så här aktiverar du Container Insights för Kubernetes-hybridklustret:

  1. Konfigurera Log Analytics-arbetsytan med containerinsiktslösningen.

  2. Aktivera Helm-diagrammet Container Insights med en Log Analytics-arbetsyta.

Mer information om övervakningslösningar i Azure Monitor finns i Övervakningslösningar i Azure Monitor.

Lägga till azure monitor-containerlösningen

Du kan distribuera lösningen med den tillhandahållna Azure Resource Manager-mallen med hjälp av Azure PowerShell-cmdleten New-AzResourceGroupDeployment eller med Azure CLI.

Om du inte känner till begreppet att distribuera resurser med hjälp av en mall kan du läsa:

Om du väljer att använda Azure CLI måste du först installera och använda CLI lokalt. Du måste köra Azure CLI version 2.0.59 eller senare. Om du vill identifiera din version kör du az --version. Om du behöver installera eller uppgradera Azure CLI kan du läsa Installera Azure CLI.

Den här metoden innehåller två JSON-mallar. En mall anger konfigurationen för att aktivera övervakning. Den andra mallen innehåller parametervärden som du konfigurerar för att ange:

  • workspaceResourceId: Det fullständiga resurs-ID:t för din Log Analytics-arbetsyta.
  • workspaceRegion: Den region som arbetsytan skapas i, som även kallas Plats i arbetsytans egenskaper när du visar dem från Azure Portal.

Utför följande steg för att först identifiera det fullständiga resurs-ID för din Log Analytics-arbetsyta som krävs för workspaceResourceId parametervärdet i filen containerSolutionParams.json . Kör sedan PowerShell-cmdleten eller Azure CLI-kommandot för att lägga till lösningen.

  1. Visa en lista över alla prenumerationer som du har åtkomst till med hjälp av följande kommando:

    az account list --all -o table
    

    Utdata liknar följande exempel:

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

    Kopiera värdet för SubscriptionId.

  2. Växla till den prenumeration som är värd för Log Analytics-arbetsytan med hjälp av följande kommando:

    az account set -s <subscriptionId of the workspace>
    
  3. I följande exempel visas listan över arbetsytor i dina prenumerationer i JSON-standardformatet:

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

    Leta reda på arbetsytans namn i utdata. Kopiera sedan det fullständiga resurs-ID:t för Log Analytics-arbetsytan under fält-ID :t.

  4. Kopiera och klistra in följande JSON-syntax i filen:

    {
    "$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. Spara filen som containerSolution.json till en lokal mapp.

  6. Klistra in följande JSON-syntax i filen:

    {
      "$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. Redigera värdena för workspaceResourceId med det värde som du kopierade i steg 3. För workspaceRegion kopierar du värdet Region när du har kört Azure CLI-kommandot az monitor log-analytics workspace show.

  8. Spara filen som containerSolutionParams.json till en lokal mapp.

  9. Nu är det dags att distribuera den här mallen.

    • Om du vill distribuera med Azure PowerShell använder du följande kommandon i mappen som innehåller mallen:

      # 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
      

      Konfigurationsändringen kan ta några minuter att slutföra. När det är klart innehåller ett meddelande som liknar följande exempel det här resultatet:

      provisioningState       : Succeeded
      
    • Kör följande kommandon för att distribuera med 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
      

      Konfigurationsändringen kan ta några minuter att slutföra. När det är klart innehåller ett meddelande som liknar följande exempel det här resultatet:

      provisioningState       : Succeeded
      

      När du har aktiverat övervakning kan det ta cirka 15 minuter innan du kan visa hälsomått för klustret.

Installera Helm-diagrammet

I det här avsnittet installerar du containeragenten för Container Insights. Innan du fortsätter ska du identifiera det arbetsyte-ID som krävs för parametern amalogsagent.secret.wsid och den primära nyckel som krävs för parametern amalogsagent.secret.key . För att identifiera den här informationen följer du de här stegen och kör sedan kommandona för att installera agenten med hjälp av Helm-diagrammet.

  1. Kör följande kommando för att identifiera arbetsytans ID:

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

    Leta reda på arbetsytans namn under fältnamnet i utdata. Kopiera sedan arbetsytans ID för den Log Analytics-arbetsytan under fältet customerID.

  2. Kör följande kommando för att identifiera den primära nyckeln för arbetsytan:

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

    I utdata letar du reda på primärnyckeln under fältet primarySharedKey och kopierar sedan värdet.

    Kommentar

    Följande kommandon gäller endast för Helm version 2. Användning av parametern --name gäller inte för Helm version 3.

    Om Kubernetes-klustret kommunicerar via en proxyserver konfigurerar du parametern amalogsagent.proxy med URL:en för proxyservern. Om klustret inte kommunicerar via en proxyserver behöver du inte ange den här parametern. Mer information finns i avsnittet Konfigurera proxyslutpunkten senare i den här artikeln.

  3. Lägg till Lagringsplatsen för Azure-diagram i din lokala lista genom att köra följande kommando:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Installera diagrammet genom att köra följande kommando:

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

    Om Log Analytics-arbetsytan finns i Azure China 21Vianet kör du följande kommando:

    $ 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
    

    Om Log Analytics-arbetsytan finns i Azure US Government kör du följande kommando:

    $ 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
    

Aktivera Helm-diagrammet med hjälp av API-modellen

Du kan ange ett tillägg i AKS Engine-klusterspecifikationens JSON-fil, som även kallas API-modellen. I det här tillägget anger du den base64-kodade versionen av WorkspaceGUID och WorkspaceKey av Log Analytics-arbetsytan där insamlade övervakningsdata lagras. Du kan hitta WorkspaceGUID och WorkspaceKey med hjälp av steg 1 och 2 i föregående avsnitt.

API-definitioner som stöds för Azure Stack Hub-klustret finns i exemplet kubernetes-container-monitoring_existing_workspace_id_and_key.json. Mer specifikt hittar du egenskapen addons i 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>"
             }
           }
         ]
       }

Konfigurera agentdatainsamling

Från och med diagramversion 1.0.0 styrs inställningarna för agentdatainsamling från ConfigMap. Mer information om inställningar för agentdatainsamling finns i Konfigurera agentdatainsamling för containerinsikter.

När du har distribuerat diagrammet kan du granska data för ditt Kubernetes-hybridkluster i Container Insights från Azure Portal.

Kommentar

Svarstiden för inmatning är cirka 5 till 10 minuter från agenten som ska checkas in på Log Analytics-arbetsytan. Status för klustret visar värdet Inga data eller Okänd förrän alla nödvändiga övervakningsdata är tillgängliga i Azure Monitor.

Konfigurera proxyslutpunkten

Från och med diagramversion 2.7.1 har diagrammet stöd för att ange proxyslutpunkten med amalogsagent.proxy diagramparametern. På så sätt kan den kommunicera via proxyservern. Kommunikation mellan Container Insights-agenten och Azure Monitor kan vara en HTTP- eller HTTPS-proxyserver. Både anonym och grundläggande autentisering med användarnamn och lösenord stöds.

Proxykonfigurationsvärdet har syntaxen [protocol://][user:password@]proxyhost[:port].

Kommentar

Om proxyservern inte kräver autentisering måste du fortfarande ange ett pseudoanvändarnamn och lösenord. Det kan vara valfritt användarnamn eller lösenord.

Property beskrivning
protokoll HTTP eller HTTPS
användare Valfritt användarnamn för proxyautentisering
password Valfritt lösenord för proxyautentisering
proxyhost Adress eller FQDN för proxyservern
port Valfritt portnummer för proxyservern

Ett exempel är amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Om du anger protokollet som http skapas HTTP-begäranden med hjälp av en säker SSL/TLS-anslutning. Proxyservern måste ha stöd för SSL/TLS-protokoll.

Felsökning

Om du stöter på ett fel när du försöker aktivera övervakning för ditt Kubernetes-hybridkluster använder du PowerShell-skriptet TroubleshootError_nonAzureK8s.ps1 för att identifiera och åtgärda de problem du stöter på. Den är utformad för att identifiera och försöka korrigera följande problem:

  • Den angivna Log Analytics-arbetsytan är giltig.
  • Log Analytics-arbetsytan konfigureras med containerinsiktslösningen. Om inte konfigurerar du arbetsytan.
  • Azure Monitor Agent-replikuppsättningspoddarna körs.
  • Azure Monitor Agent-daemonset-poddarna körs.
  • Azure Monitor Agent Health-tjänsten körs.
  • Log Analytics-arbetsytans ID och nyckel som konfigurerats på den containerbaserade agenten matchar den arbetsyta som insikten har konfigurerats med.
  • Kontrollera att alla Linux-arbetsnoder har kubernetes.io/role=agent etiketten till schemaläggarpodden. Om den inte finns lägger du till den.
  • Identifiera villkor som kan tyda cAdvisor secure port:10250 på eller unsecure port: 10255 inte öppnas på alla noder i klustret.

Om du vill köra med Azure PowerShell använder du följande kommandon i mappen som innehåller skriptet:

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

Nästa steg

Nu när övervakning har aktiverats för att samla in hälsotillstånd och resursanvändning för dina Kubernetes-hybridkluster och arbetsbelastningar som körs på dem, lär du dig hur du använder Container Insights.