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
ellerunsecure port :10255
öppnas på alla noder i klustret för att samla in prestandamått. Vi rekommenderar att du konfigurerarsecure 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
ochKUBERNETES_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:
Konfigurera Log Analytics-arbetsytan med containerinsiktslösningen.
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:
- Distribuera resurser med Resource Manager-mallar och Azure PowerShell
- Distribuera resurser med Resource Manager-mallar och Azure CLI
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.
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.
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>
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.
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": {} } } ] }
Spara filen som containerSolution.json till en lokal mapp.
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>" } } }
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.
Spara filen som containerSolutionParams.json till en lokal mapp.
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.
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.
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.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
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å ellerunsecure 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.