Configurare cluster Kubernetes ibridi con Informazioni dettagliate sui contenitori

Informazioni dettagliate sui contenitori offre un'esperienza di monitoraggio avanzata per il servizio Azure Kubernetes (servizio Azure Kubernetes). Questo articolo descrive come abilitare il monitoraggio dei cluster Kubernetes ospitati all'esterno di Azure e ottenere un'esperienza di monitoraggio simile.

Configurazioni supportate

Le configurazioni seguenti sono ufficialmente supportate con Informazioni dettagliate sui contenitori. Se si ha una versione diversa di Kubernetes e versioni del sistema operativo, aprire un ticket di supporto.

  • Ambienti:
    • Kubernetes locale.
    • OpenShift versione 4 e successive, in locale o in altri ambienti cloud.
  • Le versioni di Kubernetes e i criteri di supporto sono le stesse delle versioni del servizio Azure Kubernetes supportate.
  • Sono supportati i runtime dei contenitori seguenti: runtime compatibili con Moby e CRI, ad esempio CRI-O e ContainerD.
  • La versione del sistema operativo Linux per i nodi principali e di lavoro supportati sono Ubuntu (18.04 LTS e 16.04 LTS) e Red Hat Enterprise Linux CoreOS 43.81.
  • Servizio azure Controllo di accesso supportato: controllo degli accessi in base al ruolo (RBAC) e controllo degli accessi in base al ruolo di Kubernetes e non controllo degli accessi in base al ruolo.

Prerequisiti

Prima di iniziare, assicurarsi di soddisfare i prerequisiti seguenti:

  • Si dispone di un'area di lavoro Log Analytics. Informazioni dettagliate sui contenitori supporta un'area di lavoro Log Analytics nelle aree elencate in Prodotti Azure per area. È possibile creare un'area di lavoro personalizzata tramite Azure Resource Manager, PowerShell o il portale di Azure.

    Nota

    L'abilitazione del monitoraggio di più cluster con lo stesso nome del cluster nella stessa area di lavoro Log Analytics non è supportata. I nomi dei cluster devono essere univoci.

  • Si è membri del ruolo collaboratore di Log Analytics per abilitare il monitoraggio dei contenitori. Per altre informazioni su come controllare l'accesso a un'area di lavoro Log Analytics, vedere Gestire l'accesso all'area di lavoro e ai dati di log.

  • Per visualizzare i dati di monitoraggio, è necessario avere il ruolo lettore Log Analytics nell'area di lavoro Log Analytics, configurato con Informazioni dettagliate sui contenitori.

  • È disponibile un client Helm per eseguire l'onboarding del grafico informazioni dettagliate sui contenitori per il cluster Kubernetes specificato.

  • Per comunicare con Monitoraggio di Azure, sono necessarie le informazioni di configurazione del proxy e del firewall seguenti per la versione in contenitori dell'agente di Log Analytics per Linux:

    Risorsa dell'agente Porte
    *.ods.opinsights.azure.com Porta 443
    *.oms.opinsights.azure.com Porta 443
    *.dc.services.visualstudio.com Porta 443
  • L'agente in contenitori richiede che Kubelet cAdvisor secure port: 10250 o unsecure port :10255 venga aperto in tutti i nodi del cluster per raccogliere le metriche delle prestazioni. Se non è già configurato, è consigliabile configurare secure port: 10250 in Kubelet cAdvisor.

  • L'agente in contenitori richiede che nel contenitore siano specificate le variabili di ambiente seguenti per comunicare con il servizio API Kubernetes all'interno del cluster per raccogliere i dati di inventario: KUBERNETES_SERVICE_HOST e KUBERNETES_PORT_443_TCP_PORT.

Importante

La versione minima dell'agente supportata per il monitoraggio dei cluster Kubernetes ibridi è ciprod10182019 o versione successiva.

Abilitare il monitoraggio

Per abilitare Informazioni dettagliate sui contenitori per il cluster Kubernetes ibrido:

  1. Configurare l'area di lavoro Log Analytics con la soluzione Informazioni dettagliate contenitore.

  2. Abilitare il grafico Helm di Informazioni dettagliate contenitore con un'area di lavoro Log Analytics.

Per altre informazioni sulle soluzioni di monitoraggio in Monitoraggio di Azure, vedere Monitoraggio delle soluzioni in Monitoraggio di Azure.

Aggiungere la soluzione Contenitori di Monitoraggio di Azure

È possibile distribuire la soluzione con il modello di Azure Resource Manager fornito usando il cmdlet New-AzResourceGroupDeployment di Azure PowerShell o con l'interfaccia della riga di comando di Azure.

Se non si ha familiarità con il concetto di distribuzione delle risorse tramite un modello, vedere:

Se si sceglie di usare l'interfaccia della riga di comando di Azure, è prima necessario installarla ed eseguirla in locale. È necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.59 o successiva. Per identificare la versione in uso, eseguire az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Questo metodo include due modelli JSON. Un modello specifica la configurazione per abilitare il monitoraggio. L'altro modello contiene i valori dei parametri configurati per specificare:

  • workspaceResourceId: ID risorsa completo dell'area di lavoro Log Analytics.
  • workspaceRegion: l'area in cui viene creata l'area di lavoro, nota anche come Località nelle proprietà dell'area di lavoro quando vengono visualizzate dal portale di Azure.

Per identificare prima di tutto l'ID risorsa completo dell'area di lavoro Log Analytics necessaria per il valore del workspaceResourceId parametro nel file containerSolutionParams.json , seguire questa procedura. Eseguire quindi il cmdlet di PowerShell o il comando dell'interfaccia della riga di comando di Azure per aggiungere la soluzione.

  1. Elencare tutte le sottoscrizioni a cui si ha accesso usando il comando seguente:

    az account list --all -o table
    

    L'output sarà simile all'esempio seguente:

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

    Copiare il valore per SubscriptionId.

  2. Passare alla sottoscrizione che ospita l'area di lavoro Log Analytics usando il comando seguente:

    az account set -s <subscriptionId of the workspace>
    
  3. L'esempio seguente mostra l'elenco delle aree di lavoro nelle sottoscrizioni nel formato JSON predefinito:

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

    Nell'output trovare il nome dell'area di lavoro. Copiare quindi l'ID risorsa completo dell'area di lavoro Log Analytics sotto l'ID campo.

  4. Copiare e incollare nel file la sintassi JSON seguente:

    {
    "$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. Salvare questo file come containerSolution.json in una cartella locale.

  6. Incollare nel file la sintassi JSON seguente:

    {
      "$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. Modificare i valori per workspaceResourceId usando il valore copiato nel passaggio 3. Per workspaceRegion copiare il valore region dopo aver eseguito il comando dell'interfaccia della riga di comando di Azure az monitor log-analytics workspace show.

  8. Salvare questo file come containerSolutionParams.json in una cartella locale.

  9. A questo punto è possibile distribuire il modello.

    • Per eseguire la distribuzione con Azure PowerShell, usare i comandi seguenti nella cartella che contiene il modello:

      # 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
      

      Il completamento della modifica della configurazione può richiedere alcuni minuti. Al termine, un messaggio simile all'esempio seguente include questo risultato:

      provisioningState       : Succeeded
      
    • Per eseguire la distribuzione con l'interfaccia della riga di comando di Azure, eseguire i comandi seguenti:

      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
      

      Il completamento della modifica della configurazione può richiedere alcuni minuti. Al termine, un messaggio simile all'esempio seguente include questo risultato:

      provisioningState       : Succeeded
      

      Dopo aver abilitato il monitoraggio, possono essere necessari circa 15 minuti prima di poter visualizzare le metriche di integrità per il cluster.

Installare il grafico Helm

In questa sezione viene installato l'agente in contenitori per Informazioni dettagliate sui contenitori. Prima di procedere, identificare l'ID dell'area di lavoro necessario per il amalogsagent.secret.wsid parametro e la chiave primaria necessaria per il amalogsagent.secret.key parametro . Per identificare queste informazioni, seguire questa procedura e quindi eseguire i comandi per installare l'agente usando il grafico Helm.

  1. Eseguire il comando seguente per identificare l'ID dell'area di lavoro:

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

    Nell'output trovare il nome dell'area di lavoro sotto il nome del campo. Copiare quindi l'ID area di lavoro dell'area di lavoro Log Analytics nel campo customerID.

  2. Eseguire il comando seguente per identificare la chiave primaria per l'area di lavoro:

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

    Nell'output trovare la chiave primaria nel campo primarySharedKey e quindi copiare il valore.

    Nota

    I comandi seguenti sono applicabili solo per Helm versione 2. L'uso del --name parametro non è applicabile con Helm versione 3.

    Se il cluster Kubernetes comunica tramite un server proxy, configurare il parametro amalogsagent.proxy con l'URL del server proxy. Se il cluster non comunica tramite un server proxy, non è necessario specificare questo parametro. Per altre informazioni, vedere la sezione Configurare l'endpoint proxy più avanti in questo articolo.

  3. Aggiungere il repository dei grafici di Azure all'elenco locale eseguendo il comando seguente:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Installare il grafico eseguendo il comando seguente:

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

    Se l'area di lavoro Log Analytics si trova in Azure Cina 21Vianet, eseguire il comando seguente:

    $ 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
    

    Se l'area di lavoro Log Analytics è in Azure US Gov, eseguire questo comando:

    $ 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
    

Abilitare il grafico Helm usando il modello API

È possibile specificare un componente aggiuntivo nel file JSON della specifica del cluster del motore del servizio Azure Kubernetes, noto anche come modello API. In questo componente aggiuntivo specificare la versione con codifica Base64 di WorkspaceGUID e WorkspaceKey dell'area di lavoro Log Analytics in cui vengono archiviati i dati di monitoraggio raccolti. È possibile trovare WorkspaceGUID e WorkspaceKey seguendo i passaggi 1 e 2 nella sezione precedente.

Le definizioni api supportate per il cluster dell'hub di Azure Stack sono disponibili nell'esempio kubernetes-container-monitoring_existing_workspace_id_and_key.json. In particolare, trovare la proprietà 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>"
             }
           }
         ]
       }

Configurare la raccolta dati dell'agente

A partire dalla versione del grafico 1.0.0, le impostazioni di raccolta dati dell'agente vengono controllate da ConfigMap. Per altre informazioni sulle impostazioni di raccolta dati dell'agente, vedere Configurare la raccolta dati dell'agente per Informazioni dettagliate sui contenitori.

Dopo aver distribuito correttamente il grafico, è possibile esaminare i dati per il cluster Kubernetes ibrido in Informazioni dettagliate sui contenitori dal portale di Azure.

Nota

La latenza di inserimento è di circa 5-10 minuti dall'agente per eseguire il commit nell'area di lavoro Log Analytics. Lo stato del cluster mostra il valore Nessun dato o Sconosciuto fino a quando non sono disponibili tutti i dati di monitoraggio necessari in Monitoraggio di Azure.

Configurare l'endpoint proxy

A partire dalla versione del grafico 2.7.1, il grafico supporterà la specifica dell'endpoint proxy con il parametro del amalogsagent.proxy grafico. In questo modo, può comunicare tramite il server proxy. La comunicazione tra l'agente di Informazioni dettagliate contenitori e Monitoraggio di Azure può essere un server proxy HTTP o HTTPS. Sono supportate sia l'autenticazione anonima che l'autenticazione di base con un nome utente e una password.

Il valore di configurazione del proxy ha la sintassi [protocol://][user:password@]proxyhost[:port].

Nota

Se il server proxy non richiede l'autenticazione, è comunque necessario specificare uno pseudoutente e una password. Può essere qualsiasi nome utente o password.

Proprietà Descrizione
protocollo HTTP o HTTPS
utente Nome utente facoltativo per l'autenticazione proxy
password Password facoltativa per l'autenticazione proxy
proxyhost Indirizzo o FQDN del server proxy
port Numero di porta facoltativo per il server proxy

Un esempio è amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Se si specifica il protocollo come http, le richieste HTTP vengono create usando una connessione protetta SSL/TLS. Il server proxy deve supportare i protocolli SSL/TLS.

Risoluzione dei problemi

Se si verifica un errore durante il tentativo di abilitare il monitoraggio per il cluster Kubernetes ibrido, usare lo script di PowerShell TroubleshootError_nonAzureK8s.ps1 per rilevare e risolvere i problemi riscontrati. È progettato per rilevare e tentare la correzione dei problemi seguenti:

  • L'area di lavoro Log Analytics specificata è valida.
  • L'area di lavoro Log Analytics è configurata con la soluzione Informazioni dettagliate contenitore. In caso contrario, configurare l'area di lavoro.
  • I pod del set di repliche dell'agente di Monitoraggio di Azure sono in esecuzione.
  • I pod daemonset dell'agente di Monitoraggio di Azure sono in esecuzione.
  • Il servizio Integrità agente di Monitoraggio di Azure è in esecuzione.
  • L'ID e la chiave dell'area di lavoro Log Analytics configurati nell'agente in contenitori corrispondono all'area di lavoro con cui sono configurate le informazioni dettagliate.
  • Verificare che tutti i nodi di lavoro Linux abbiano l'etichetta kubernetes.io/role=agent per il pod delle utilità di pianificazione. Se non esiste, aggiungerlo.
  • Identificare le condizioni che possono indicare cAdvisor secure port:10250 o unsecure port: 10255 non sono aperte in tutti i nodi del cluster.

Per eseguire con Azure PowerShell, usare i comandi seguenti nella cartella che contiene lo script:

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

Passaggi successivi

Ora che il monitoraggio è abilitato per raccogliere l'integrità e l'utilizzo delle risorse dei cluster e dei carichi di lavoro Kubernetes ibridi in esecuzione, informazioni su come usare Informazioni dettagliate sui contenitori.