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
ounsecure port :10255
venga aperto in tutti i nodi del cluster per raccogliere le metriche delle prestazioni. È consigliabile configuraresecure 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
eKUBERNETES_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:
Configurare l'area di lavoro Log Analytics con la soluzione Informazioni dettagliate contenitore.
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:
- Distribuire le risorse con i modelli di Azure Resource Manager e Azure PowerShell
- Distribuire le risorse con i modelli di Azure Resource Manager e l'interfaccia della riga di comando di Azure
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 workspaceResourceId
valore 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.
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.
Passare alla sottoscrizione che ospita l'area di lavoro Log Analytics usando il comando seguente:
az account set -s <subscriptionId of the workspace>
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.
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": {} } } ] }
Salvare il file con il nome containerSolution.json in una cartella locale.
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>" } } }
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.
Salvare il file con il nome containerSolutionParams.json in una cartella locale.
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.
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.
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.Aggiungere il repository dei grafici di Azure all'elenco locale eseguendo il comando seguente:
helm repo add microsoft https://microsoft.github.io/charts/repo
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 che
cAdvisor secure port:10250
ounsecure 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.