Condividi tramite


Configurare cluster Kubernetes ibridi con le informazioni dettagliate contenitore

Le informazioni dettagliate contenitore offrono un'esperienza di monitoraggio avanzato per il 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 le informazioni dettagliate contenitore. Se la versione di Kubernetes e del sistema operativo sono diverse, aprire un ticket di supporto.

  • Ambienti:
    • Kubernetes locale.
    • OpenShift versione 4 e successive, locale o in altri ambienti cloud.
  • Le versioni di Kubernetes e i criteri di supporto sono gli stessi 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 di controllo di accesso di Azure supportato: controllo degli accessi in base al ruolo (RBAC) e non RBAC di Kubernetes.

Prerequisiti

Prima di iniziare, assicurarsi che siano soddisfatti i prerequisiti seguenti:

  • È disponibile un'area di lavoro Log Analytics. Le informazioni dettagliate contenitore supportano 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 di 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 alle aree di lavoro e ai dati di log.

  • Per visualizzare i dati di monitoraggio, è necessario avere il ruolo Lettore di Log Analytics nell'area di lavoro Log Analytics configurato con informazioni dettagliate contenitore.

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

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

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

  • 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 le informazioni dettagliate contenitore per il cluster Kubernetes ibrido:

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

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

Per altre informazioni sulle soluzioni di monitoraggio in Monitoraggio di Azure, vedere Soluzioni di monitoraggio 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 di Azure PowerShell New-AzResourceGroupDeployment 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. È richiesta l'interfaccia della riga di comando di Azure 2.0.59 o versione 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: l’ID risorsa completo dell'area di lavoro Log Analytics.
  • workspaceRegion: l'area in cui viene creata l'area di lavoro, nota anche come Area geografica nelle proprietà dell'ambiente di lavoro quando le si visualizza dal portale di Azure.

Per identificare prima di tutto l'ID risorsa completo dell'area di lavoro Log Analytics necessaria per il workspaceResourceIdvalore del 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 nel campo ID.

  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 il file con il nome 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 Area dopo aver eseguito il comando dell'interfaccia della riga di comando di Azure az monitor log-analytics workspace show.

  8. Salvare il file con il nome 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 le informazioni dettagliate contenitore. Prima di procedere, identificare l'ID dell'area di lavoro necessario per il parametro amalogsagent.secret.wsid e la chiave primaria necessaria per il parametro amalogsagent.secret.key. 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 nel campo nome. Copiare quindi l'ID 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 parametro --name 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 è in Azure Cina 21Vianet, eseguire questo comando:

    $ 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 contenitore.

Dopo aver distribuito correttamente il grafico, è possibile esaminare i dati per il cluster Kubernetes ibrido in Informazioni dettagliate contenitore 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 grafico amalogsagent.proxy. In questo modo, può comunicare tramite il server proxy. La comunicazione tra l'agente di Informazioni dettagliate contenitore e Monitoraggio di Azure può essere un server proxy HTTP o HTTPS. Sono supportate sia l'autenticazione anonima sia l'autenticazione di base tramite nome utente e password.

Il valore di configurazione 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ò trattarsi di 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 nome di dominio completo del server proxy
port Numero di porta facoltativo del 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 sicura 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 è corretta.
  • 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 di 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 del ruolo 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 checAdvisor 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

Una volta abilitato il monitoraggio per rilevare l'integrità e l'utilizzo delle risorse dei cluster e dei carichi di lavoro Kubernetes ibridi, è possibile trovare informazioni su come usare le informazioni dettagliate contenitore.