Hybride Kubernetes-clusters configureren met Container Insights
Container insights biedt een uitgebreide bewakingservaring voor de Azure Kubernetes Service (AKS). In dit artikel wordt beschreven hoe u bewaking inschakelt van Kubernetes-clusters die buiten Azure worden gehost en een vergelijkbare bewakingservaring behalen.
Ondersteunde configuraties
De volgende configuraties worden officieel ondersteund met Container Insights. Als u een andere versie van Kubernetes en besturingssysteemversies hebt, opent u een ondersteuningsticket.
- Omgevingen:
- Kubernetes on-premises.
- OpenShift versie 4 en hoger, on-premises of in andere cloudomgevingen.
- Versies van Kubernetes en ondersteuningsbeleid zijn hetzelfde als de versies van AKS die worden ondersteund.
- De volgende containerruntimes worden ondersteund: Moby- en CRI-compatibele runtimes, zoals CRI-O en ContainerD.
- De linux-besturingssysteemrelease voor hoofd- en werkknooppunten die worden ondersteund, zijn Ubuntu (18.04 LTS en 16.04 LTS) en Red Hat Enterprise Linux CoreOS 43.81.
- Azure Access Control-service wordt ondersteund: op rollen gebaseerd toegangsbeheer (RBAC) en niet-RBAC van Kubernetes.
Vereisten
Voordat u begint, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:
U hebt een Log Analytics-werkruimte. Container Insights ondersteunt een Log Analytics-werkruimte in de regio's die worden vermeld in Azure-producten per regio. U kunt uw eigen werkruimte maken via Azure Resource Manager, PowerShell of Azure Portal.
Notitie
Het inschakelen van de bewaking van meerdere clusters met dezelfde clusternaam voor dezelfde Log Analytics-werkruimte wordt niet ondersteund. Clusternamen moeten uniek zijn.
U bent lid van de rol Log Analytics-inzender om containerbewaking in te schakelen. Zie Toegang tot werkruimte- en logboekgegevens beheren voor meer informatie over het beheren van de toegang tot een Log Analytics-werkruimte.
Als u de bewakingsgegevens wilt weergeven, moet u de rol log analytics-lezer hebben in de Log Analytics-werkruimte, geconfigureerd met Container Insights.
U hebt een Helm-client om de Container Insights-grafiek voor het opgegeven Kubernetes-cluster te onboarden.
De volgende proxy- en firewallconfiguratiegegevens zijn vereist voor de containerversie van de Log Analytics-agent voor Linux om te communiceren met Azure Monitor:
Agentresource Poorten *.ods.opinsights.azure.com
Poort 443 *.oms.opinsights.azure.com
Poort 443 *.dc.services.visualstudio.com
Poort 443 Voor de containeragent moet de Kubelet
cAdvisor secure port: 10250
worden geopend ofunsecure port :10255
worden geopend op alle knooppunten in het cluster om metrische prestatiegegevens te verzamelen. U wordt aangeraden te configurerensecure port: 10250
op Kubelet cAdvisor als deze nog niet is geconfigureerd.Voor de containeragent moeten de volgende omgevingsvariabelen worden opgegeven in de container om te communiceren met de Kubernetes-API-service in het cluster om inventarisgegevens te verzamelen:
KUBERNETES_SERVICE_HOST
enKUBERNETES_PORT_443_TCP_PORT
.
Belangrijk
De minimale agentversie die wordt ondersteund voor het bewaken van hybride Kubernetes-clusters is ciprod10182019 of hoger.
Bewaking inschakelen
Containerinzichten inschakelen voor het hybride Kubernetes-cluster:
Configureer uw Log Analytics-werkruimte met de Container Insights-oplossing.
Schakel de Helm-grafiek containerinzichten in met een Log Analytics-werkruimte.
Zie Bewakingsoplossingen in Azure Monitor voor meer informatie over bewakingsoplossingen in Azure Monitor.
De Azure Monitor Containers-oplossing toevoegen
U kunt de oplossing implementeren met de opgegeven Azure Resource Manager-sjabloon met behulp van de Azure PowerShell-cmdlet New-AzResourceGroupDeployment
of met de Azure CLI.
Als u niet bekend bent met het concept van het implementeren van resources met behulp van een sjabloon, raadpleegt u:
- Resources implementeren met Resource Manager-sjablonen en Azure PowerShell
- Resources implementeren met Resource Manager-sjablonen en de Azure CLI
Als u ervoor kiest om de Azure CLI te gebruiken, moet u eerst de CLI lokaal installeren en gebruiken. U moet azure CLI versie 2.0.59 of hoger uitvoeren. Voer uit az --version
om uw versie te identificeren. Als u de Azure CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.
Deze methode bevat twee JSON-sjablonen. Met één sjabloon wordt de configuratie opgegeven voor het inschakelen van bewaking. De andere sjabloon bevat parameterwaarden die u configureert om op te geven:
workspaceResourceId
: de volledige resource-id van uw Log Analytics-werkruimte.workspaceRegion
: De regio waarin de werkruimte wordt gemaakt, die ook wel locatie wordt genoemd in de werkruimte-eigenschappen wanneer u deze vanuit Azure Portal bekijkt.
Voer de volgende stappen uit om eerst de volledige resource-id van uw Log Analytics-werkruimte te identificeren die is vereist voor de workspaceResourceId
parameterwaarde in het bestand containerSolutionParams.json . Voer vervolgens de PowerShell-cmdlet of De Azure CLI-opdracht uit om de oplossing toe te voegen.
Vermeld alle abonnementen waartoe u toegang hebt met behulp van de volgende opdracht:
az account list --all -o table
De uitvoer lijkt op het volgende voorbeeld:
Name CloudName SubscriptionId State IsDefault ------------------------------------ ----------- ------------------------------------ ------- ----------- Microsoft Azure AzureCloud 0fb60ef2-03cc-4290-b595-e71108e8f4ce Enabled True
Kopieer de waarde voor SubscriptionId.
Schakel over naar het abonnement dat als host fungeert voor de Log Analytics-werkruimte met behulp van de volgende opdracht:
az account set -s <subscriptionId of the workspace>
In het volgende voorbeeld wordt de lijst met werkruimten in uw abonnementen weergegeven in de standaard-JSON-indeling:
az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
Zoek in de uitvoer de naam van de werkruimte. Kopieer vervolgens de volledige resource-id van die Log Analytics-werkruimte onder de veld-id.
Kopieer en plak de volgende JSON-syntaxis in het bestand:
{ "$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": {} } } ] }
Sla dit bestand op als containerSolution.json in een lokale map.
Plak de volgende JSON-syntaxis in uw bestand:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "value": "<workspaceResourceId>" }, "workspaceRegion": { "value": "<workspaceRegion>" } } }
Bewerk de waarden voor workspaceResourceId met behulp van de waarde die u in stap 3 hebt gekopieerd. Kopieer voor workspaceRegion de regiowaarde na het uitvoeren van de Azure CLI-opdracht az monitor log-analytics workspace show.
Sla dit bestand op als containerSolutionParams.json in een lokale map.
U kunt deze sjabloon nu implementeren.
Als u wilt implementeren met Azure PowerShell, gebruikt u de volgende opdrachten in de map die de sjabloon bevat:
# 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
Het kan enkele minuten duren voordat de configuratie is gewijzigd. Wanneer dit is voltooid, bevat een bericht dat lijkt op het volgende voorbeeld dit resultaat:
provisioningState : Succeeded
Voer de volgende opdrachten uit om te implementeren met de 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
Het kan enkele minuten duren voordat de configuratie is gewijzigd. Wanneer dit is voltooid, bevat een bericht dat lijkt op het volgende voorbeeld dit resultaat:
provisioningState : Succeeded
Nadat u bewaking hebt ingeschakeld, kan het ongeveer 15 minuten duren voordat u metrische statusgegevens voor het cluster kunt bekijken.
De Helm-grafiek installeren
In deze sectie installeert u de containeragent voor Container Insights. Voordat u verdergaat, moet u de werkruimte-id identificeren die is vereist voor de amalogsagent.secret.wsid
parameter en de primaire sleutel die is vereist voor de amalogsagent.secret.key
parameter. Volg deze stappen om deze informatie te identificeren en voer vervolgens de opdrachten uit om de agent te installeren met behulp van de Helm-grafiek.
Voer de volgende opdracht uit om de werkruimte-id te identificeren:
az monitor log-analytics workspace list --resource-group <resourceGroupName>
Zoek in de uitvoer de naam van de werkruimte onder de veldnaam. Kopieer vervolgens de werkruimte-id van die Log Analytics-werkruimte onder de veld-klant-id.
Voer de volgende opdracht uit om de primaire sleutel voor de werkruimte te identificeren:
az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>
Zoek in de uitvoer de primaire sleutel onder het veld primarySharedKey en kopieer de waarde.
Notitie
De volgende opdrachten zijn alleen van toepassing op Helm versie 2. Het gebruik van de
--name
parameter is niet van toepassing op Helm versie 3.Als uw Kubernetes-cluster communiceert via een proxyserver, configureert u de parameter
amalogsagent.proxy
met de URL van de proxyserver. Als het cluster niet communiceert via een proxyserver, hoeft u deze parameter niet op te geven. Zie de sectie Het proxy-eindpunt verderop in dit artikel configureren voor meer informatie.Voeg de Opslagplaats voor Azure-grafieken toe aan uw lokale lijst door de volgende opdracht uit te voeren:
helm repo add microsoft https://microsoft.github.io/charts/repo
Installeer de grafiek door de volgende opdracht uit te voeren:
$ helm install --name myrelease-1 \ --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
Als de Log Analytics-werkruimte zich in Azure China 21Vianet bevindt, voert u de volgende opdracht uit:
$ 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
Als de Log Analytics-werkruimte zich in Azure US Government bevindt, voert u de volgende opdracht uit:
$ 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
De Helm-grafiek inschakelen met behulp van het API-model
U kunt een invoegtoepassing opgeven in het JSON-bestand met de AKS Engine-clusterspecificatie, ook wel het API-model genoemd. Geef in deze invoegtoepassing de base64-gecodeerde versie van WorkspaceGUID
en WorkspaceKey
van de Log Analytics-werkruimte op waarin de verzamelde bewakingsgegevens worden opgeslagen. U vindt WorkspaceGUID
en WorkspaceKey
gebruikt stap 1 en 2 in de vorige sectie.
Ondersteunde API-definities voor het Azure Stack Hub-cluster vindt u in het voorbeeld kubernetes-container-monitoring_existing_workspace_id_and_key.json. Zoek met name de eigenschap 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>"
}
}
]
}
Agentgegevensverzameling configureren
Vanaf grafiekversie 1.0.0 worden de instellingen voor het verzamelen van agentgegevens beheerd vanuit de ConfigMap. Zie Agentgegevensverzameling configureren voor Container Insights voor meer informatie over instellingen voor het verzamelen van agentgegevens.
Nadat u de grafiek hebt geïmplementeerd, kunt u de gegevens voor uw hybride Kubernetes-cluster bekijken in Container Insights vanuit Azure Portal.
Notitie
De opnamelatentie ligt ongeveer 5 tot 10 minuten van de agent om door te voeren in de Log Analytics-werkruimte. De status van het cluster geeft de waarde Geen gegevens of Onbekend weer totdat alle vereiste bewakingsgegevens beschikbaar zijn in Azure Monitor.
Het proxy-eindpunt configureren
Vanaf grafiekversie 2.7.1 biedt de grafiek ondersteuning voor het opgeven van het proxy-eindpunt met de amalogsagent.proxy
grafiekparameter. Op deze manier kan het communiceren via uw proxyserver. Communicatie tussen de Container Insights-agent en Azure Monitor kan een HTTP- of HTTPS-proxyserver zijn. Zowel anonieme als basisverificatie met een gebruikersnaam en wachtwoord worden ondersteund.
De proxyconfiguratiewaarde heeft de syntaxis [protocol://][user:password@]proxyhost[:port]
.
Notitie
Als voor uw proxyserver geen verificatie is vereist, moet u nog steeds een pseudo-gebruikersnaam en -wachtwoord opgeven. Dit kan elke gebruikersnaam of elk wachtwoord zijn.
Eigenschappen | Beschrijving |
---|---|
protocol | HTTP of HTTPS |
Gebruiker | Optionele gebruikersnaam voor proxyverificatie |
password | Optioneel wachtwoord voor proxyverificatie |
proxyhost | Adres of FQDN van de proxyserver |
poort | Optioneel poortnummer voor de proxyserver |
Een voorbeeld is amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080
.
Als u het protocol opgeeft als http, worden de HTTP-aanvragen gemaakt met behulp van een beveiligde SSL/TLS-verbinding. Uw proxyserver moet SSL/TLS-protocollen ondersteunen.
Probleemoplossing
Als er een fout optreedt tijdens het inschakelen van bewaking voor uw hybride Kubernetes-cluster, gebruikt u het PowerShell-script TroubleshootError_nonAzureK8s.ps1 om u te helpen bij het detecteren en oplossen van de problemen die u ondervindt. Het is ontworpen om de volgende problemen te detecteren en te corrigeren:
- De opgegeven Log Analytics-werkruimte is geldig.
- De Log Analytics-werkruimte is geconfigureerd met de Container Insights-oplossing. Zo niet, configureert u de werkruimte.
- De replicasetpods van de Azure Monitor-agent worden uitgevoerd.
- De Daemonset-pods van de Azure Monitor-agent worden uitgevoerd.
- De Azure Monitor Agent Health-service wordt uitgevoerd.
- De Log Analytics-werkruimte-id en -sleutel die op de containeragent zijn geconfigureerd, komen overeen met de werkruimte waarmee het inzicht is geconfigureerd.
- Controleer of alle Linux-werkknooppunten het
kubernetes.io/role=agent
label hebben voor de schedulers-pod. Als deze niet bestaat, voegt u deze toe. - Voorwaarden identificeren die kunnen aangeven
cAdvisor secure port:10250
ofunsecure port: 10255
niet worden geopend op alle knooppunten in het cluster.
Als u wilt uitvoeren met Azure PowerShell, gebruikt u de volgende opdrachten in de map die het script bevat:
.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>
Volgende stappen
Nu bewaking is ingeschakeld voor het verzamelen van status- en resourcegebruik van uw hybride Kubernetes-clusters en -workloads, leert u hoe u Container Insights gebruikt .