Konfigurieren von Kubernetes-Hybridclustern mit Container Insights
Container Insights bietet eine umfangreiche Überwachungsoberfläche für Azure Kubernetes Service (AKS). In diesem Artikel wird beschrieben, wie Sie die Überwachung von Kubernetes-Clustern, die außerhalb von Azure gehostet werden, aktivieren und eine ähnliche Überwachung erreichen können.
Unterstützte Konfigurationen
Die folgenden Konfigurationen werden offiziell für Container Insights unterstützt. Wenn Sie über eine andere Version von Kubernetes und andere Betriebssystemversionen verfügen, öffnen Sie bitte ein Supportticket.
- Umgebungen:
- Lokales Kubernetes
- OpenShift, Version 4 und höher, lokal oder in anderen Cloudumgebungen.
- Die Versionen von Kubernetes und die Supportrichtlinie entsprechen den unterstützten Versionen von AKS.
- Folgende Containerruntimes werden unterstützt: Moby- und CRI-kompatible Runtimes wie CRI-O und ContainerD.
- Unterstützte Linux-Betriebssystemreleases für Haupt- und Workerknoten: Ubuntu (18.04 LTS und 16.04 LTS) und Red Hat Enterprise Linux CoreOS 43.81.
- Vom Azure Access Control-Dienst unterstützt: Rollenbasierte Zugriffssteuerung (RBAC) für Kubernetes und Nicht-RBAC.
Voraussetzungen
Bevor Sie beginnen, vergewissern Sie sich, dass Sie die folgenden Voraussetzungen erfüllen:
Sie verfügen über einen Log Analytics-Arbeitsbereich. Container Insights unterstützt einen Log Analytics-Arbeitsbereich in den unter Verfügbare Produkte nach Region aufgeführten Regionen in Azure. Sie können Ihren eigenen Arbeitsbereich über Azure Resource Manager, mithilfe von PowerShell oder über das Azure-Portal erstellen.
Hinweis
Die Überwachung von mehreren Clustern mit demselben Clusternamen im selben Log Analytics-Arbeitsbereich wird nicht unterstützt. Clusternamen müssen eindeutig sein.
Sie gehören der Rolle „Log Analytics-Mitwirkender“ an, um die Containerüberwachung aktivieren zu können. Weitere Informationen zum Steuern des Zugriffs auf einen Log Analytics-Arbeitsbereich finden Sie unter Verwalten des Zugriffs auf Arbeitsbereich und Logdaten.
Sie müssen über die Rolle Log Analytics-Leser im mit Container Insights konfigurierten Log Analytics-Arbeitsbereich verfügen, um die Überwachungsdaten anzeigen zu können.
Sie verfügen über einen Helm-Client zum Durchführen des Onboardings für das Container Insights-Diagramm für den angegebenen Kubernetes-Cluster.
Für die Kommunikation zwischen der Containerversion des Log Analytics-Agents für Linux und Azure Monitor sind die folgenden Proxy- und Firewallkonfigurationsinformationen erforderlich:
Agent-Ressource Ports *.ods.opinsights.azure.com
Port 443 *.oms.opinsights.azure.com
Port 443 *.dc.services.visualstudio.com
Port 443 Für den Container-Agent muss das Kubelet
cAdvisor secure port: 10250
oderunsecure port :10255
auf allen Knoten im Cluster geöffnet werden, damit Leistungsmetriken erfasst werden können. Wir empfehlen Ihnen,secure port: 10250
auf dem Kubelet „cAdvisor“ zu konfigurieren, falls dies noch nicht der Fall ist.Für den Container-Agent müssen die folgenden Umgebungsvariablen im Container angegeben werden, damit die Kommunikation mit dem Kubernetes-API-Dienst innerhalb des Clusters zum Erfassen von Bestandsdaten möglich ist:
KUBERNETES_SERVICE_HOST
undKUBERNETES_PORT_443_TCP_PORT
.
Wichtig
Die für die Überwachung von Kubernetes-Hybridclustern unterstützte Agent-Mindestversion ist ciprod10182019 oder höher.
Aktivieren der Überwachung
So aktivieren Sie Container Insights für den Kubernetes-Hybridcluster
Konfigurieren Sie Ihren Log Analytics-Arbeitsbereich mit der Container Insights-Lösung.
Aktivieren Sie das Helm-Chart von Container Insights mit einem Log Analytics-Arbeitsbereich.
Weitere Informationen zu Überwachungslösungen in Azure Monitor finden Sie unter Überwachungslösungen in Azure Monitor.
Hinzufügen von Azure Monitor für Container
Sie können die Lösung mit der bereitgestellten Azure Resource Manager-Vorlage mithilfe des Azure PowerShell-Cmdlets New-AzResourceGroupDeployment
oder mit der Azure-Befehlszeilenschnittstelle bereitstellen.
Wenn Sie mit der Bereitstellung von Ressourcen mithilfe einer Vorlage nicht vertraut sind, finden Sie weitere Informationen unter:
- Bereitstellen von Ressourcen mit Azure Resource Manager-Vorlagen und Azure PowerShell
- Bereitstellen von Ressourcen mit Azure Resource Manager-Vorlagen und Azure CLI
Wenn Sie die Azure CLI verwenden möchten, müssen Sie sie zuerst installieren und lokal verwenden. Sie benötigen Azure CLI 2.0.59 oder höher. Um Ihre Version zu ermitteln, führen Sie az --version
aus. Informationen zur Installation und zum Upgrade von Azure CLI finden Sie unter Installieren von Azure CLI.
Diese Methode umfasst zwei JSON-Vorlagen. Eine Vorlage gibt die Konfiguration zum Aktivieren der Überwachung an. Die andere Vorlage enthält Parameterwerte, die Sie konfigurieren, um Folgendes anzugeben:
workspaceResourceId
: Die vollständige Ressourcen-ID Ihres Log Analytics-Arbeitsbereichs.workspaceRegion
: Die Region, in der der Arbeitsbereich erstellt wird. Beim Anzeigen über das Azure-Portal wird sie in den Arbeitsbereichseigenschaften auch als Standort bezeichnet.
Um zunächst die vollständige Ressourcen-ID Ihres Log Analytics-Arbeitsbereichs zu ermitteln, die für den Wert des Parameters workspaceResourceId
in der Datei containerSolutionParams.json erforderlich ist, führen Sie die folgenden Schritte aus. Führen Sie dann das PowerShell-Cmdlet oder den Azure CLI-Befehl aus, um die Lösung hinzuzufügen.
Listen Sie mit dem folgenden Befehl alle Abonnements auf, auf die Sie Zugriff haben:
az account list --all -o table
Die Ausgabe ähnelt dem folgenden Beispiel:
Name CloudName SubscriptionId State IsDefault ------------------------------------ ----------- ------------------------------------ ------- ----------- Microsoft Azure AzureCloud 0fb60ef2-03cc-4290-b595-e71108e8f4ce Enabled True
Kopieren Sie den Wert für SubscriptionId.
Wechseln Sie mit dem folgenden Befehl zu dem Abonnement, das den Log Analytics-Arbeitsbereich hostet:
az account set -s <subscriptionId of the workspace>
Im folgenden Beispiel wird die Liste mit den Arbeitsbereichen Ihrer Abonnements im JSON-Standardformat angezeigt:
az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
In der Ausgabe finden Sie den Namen des Arbeitsbereichs. Kopieren Sie dann die vollständige Ressourcen-ID dieses Log Analytics-Arbeitsbereichs in das Feld ID.
Kopieren Sie die folgende JSON-Syntax, und fügen Sie sie in Ihre Datei ein:
{ "$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": {} } } ] }
Speichern Sie diese Datei als containerSolution.json in einem lokalen Ordner.
Fügen Sie die folgende JSON-Syntax in Ihre Datei ein:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "value": "<workspaceResourceId>" }, "workspaceRegion": { "value": "<workspaceRegion>" } } }
Bearbeiten Sie die Werte für workspaceResourceId mithilfe des Werts, den Sie in Schritt 3 kopiert haben. Für workspaceRegion kopieren Sie den Wert für Region, nachdem Sie den Azure CLI-Befehl az monitor log-analytics workspace show ausgeführt haben.
Speichern Sie diese Datei als containerSolutionParams.json in einem lokalen Ordner.
Die Vorlage kann nun bereitgestellt werden.
Verwenden Sie zum Bereitstellen mit Azure PowerShell die folgenden Befehle in dem Ordner mit der Vorlage:
# 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
Die Änderung der Konfiguration kann einige Minuten dauern. Wenn sie abgeschlossen ist, wird eine Meldung, die dem folgenden Beispiel ähnelt und das Ergebnis enthält, anzeigt:
provisioningState : Succeeded
Führen Sie zum Bereitstellen mit der Azure CLI die folgenden Befehle aus:
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
Die Änderung der Konfiguration kann einige Minuten dauern. Wenn sie abgeschlossen ist, wird eine Meldung, die dem folgenden Beispiel ähnelt und das Ergebnis enthält, anzeigt:
provisioningState : Succeeded
Nach dem Aktivieren der Überwachung kann es ca. 15 Minuten dauern, bis Integritätsmetriken für den Cluster angezeigt werden.
Installieren des Helm-Charts
In diesem Abschnitt installieren Sie den Container-Agent für Container Insights. Bevor Sie fortfahren, ermitteln Sie die ID des Arbeitsbereichs, die für den Parameter amalogsagent.secret.wsid
erforderlich ist, und den Primärschlüssel, der für den Parameter amalogsagent.secret.key
erforderlich ist. Um diese Informationen zu identifizieren, befolgen Sie die folgenden Schritte, und führen Sie anschließend die Befehle zur Installation des Agents mithilfe des Helm-Charts aus.
Führen Sie den folgenden Befehl aus, um die Arbeitsbereichs-ID zu ermitteln:
az monitor log-analytics workspace list --resource-group <resourceGroupName>
Suchen Sie in der Ausgabe den Arbeitsbereichsnamen unter dem Feld Name. Kopieren Sie dann die Arbeitsbereich-ID dieses Log Analytics-Arbeitsbereichs unter das Feld customerID.
Führen Sie den folgenden Befehl aus, um den Primärschlüssel für den Arbeitsbereich zu ermitteln:
az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>
Suchen Sie in der Ausgabe den Primärschlüssel im Feld primarySharedKey, und kopieren Sie den Wert.
Hinweis
Die folgenden Befehle gelten nur für die Helm-Version 2. Die Verwendung des Parameters
--name
gilt nicht für die Helm-Version 3.Wenn der Kubernetes-Cluster über einen Proxyserver kommuniziert, konfigurieren Sie den Parameter
amalogsagent.proxy
mit der URL des Proxyservers. Wenn der Cluster nicht über einen Proxyserver kommuniziert, müssen Sie diesen Parameter nicht angeben. Weitere Informationen finden Sie im Abschnitt Konfigurieren des Proxyendpunkts weiter unten in diesem Artikel.Führen Sie folgenden Befehl aus, um das Repository der Azure-Charts in die lokale Liste einzufügen:
helm repo add microsoft https://microsoft.github.io/charts/repo
Installieren Sie das Chart, indem Sie den folgenden Befehl ausführen:
$ helm install --name myrelease-1 \ --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
Wenn sich der Log Analytics-Arbeitsbereich in Azure China 21Vianet befindet, führen Sie den folgenden Befehl aus:
$ 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
Wenn sich der Log Analytics-Arbeitsbereich in einer Azure-Region von „US Government“ befindet, führen Sie den folgenden Befehl aus:
$ 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
Aktivieren des Helm-Charts mit dem API-Modell
Sie können ein Add-On in der JSON-Datei mit der Clusterspezifikation der AKS-Engine angeben, das auch als API-Modell bezeichnet wird. Stellen Sie in diesem Add-On die Base64-codierte Version von WorkspaceGUID
und WorkspaceKey
des Log Analytics-Arbeitsbereichs bereit, in dem die gesammelten Überwachungsdaten gespeichert werden. WorkspaceGUID
und WorkspaceKey
ermitteln Sie mit den Schritten 1 und 2 im vorherigen Abschnitt.
Unterstützte API-Definitionen für den Azure Stack Hub-Cluster finden Sie in dem Beispiel: kubernetes-container-monitoring_existing_workspace_id_and_key.json. Suchen Sie nach der addons-Eigenschaft im Abschnitt 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>"
}
}
]
}
Konfigurieren der Datensammlung des Agents
Ab Chartversion 1.0.0 werden die Einstellungen für die Datensammlung des Agents über die ConfigMap gesteuert. Weitere Informationen zu den Einstellungen für die Datensammlung des Agents finden Sie unter Konfigurieren der Datensammlung des Container Insights-Agents.
Nachdem Sie das Chart erfolgreich bereitgestellt haben, können Sie im Azure-Portal die Daten für den Kubernetes-Hybridcluster in Container Insights überprüfen.
Hinweis
Die Wartezeit für die Erfassung beträgt etwa 5 bis 10 Minuten vom Agent bis zum Committen im Log Analytics-Arbeitsbereich. Als Status des Clusters wird der Wert Keine Daten oder Unbekannt angegeben, bis alle erforderlichen Überwachungsdaten in Azure Monitor verfügbar sind.
Konfigurieren des Proxyendpunkts
Ab Chartversion 2.7.1 kann im Chart der Proxyendpunkt mit dem Chartparameter amalogsagent.proxy
angegeben werden. Auf diese Weise kann er über Ihren Proxyserver kommunizieren. Die Kommunikation zwischen dem Container Insights-Agent und Azure Monitor kann über einen HTTP- oder HTTPS-Proxyserver erfolgen. Sowohl die anonyme Authentifizierung als auch die Standardauthentifizierung mithilfe eines Benutzernamens und eines Kennworts wird unterstützt.
Der Wert für die Proxykonfiguration hat die Syntax [protocol://][user:password@]proxyhost[:port]
.
Hinweis
Wenn Ihr Proxyserver keine Authentifizierung erfordert, müssen Sie trotzdem einen Pseudobenutzernamen und ein Kennwort angeben. Dies kann ein beliebiger Benutzername oder ein beliebiges Kennwort sein.
Eigenschaft | BESCHREIBUNG |
---|---|
Protokoll | HTTP oder HTTPS |
user | Optionaler Benutzername für die Proxyauthentifizierung |
password | Optionales Kennwort für die Proxyauthentifizierung |
proxyhost | Adresse oder FQDN des Proxyservers |
port | Optionale Portnummer für den Proxyserver |
z. B. amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080
.
Wenn Sie das Protokoll als http angeben, werden die HTTP-Anforderungen mit einer sicheren SSL/TLS-Verbindung erstellt. Der Proxyserver muss SSL/TLS-Protokolle unterstützen.
Problembehandlung
Wenn beim Versuch, die Überwachung für Ihren Kubernetes-Hybridcluster zu aktivieren, ein Fehler auftritt, verwenden Sie das PowerShell-Skript TroubleshootError_nonAzureK8s.ps1, um die aufgetretenen Probleme zu erkennen und zu beheben. Es wurde entwickelt, um die folgenden Probleme zu erkennen und zu beheben:
- Der angegebene Log Analytics-Arbeitsbereich ist gültig.
- Der Log Analytics-Arbeitsbereich ist mit der Container Insights-Lösung konfiguriert. Ist das nicht der Fall, konfigurieren Sie den Arbeitsbereich.
- Die ReplicaSet-Pods des Azure Monitor-Agents werden ausgeführt.
- Die DaemonSet-Pods des Azure Monitor-Agents werden ausgeführt.
- Der Agent-Integritätsdiagnosedienst von Azure Monitor wird ausgeführt.
- Die ID und der Schlüssel des Log Analytics-Arbeitsbereichs, die für den Container-Agent konfiguriert wurden, entsprechen dem Arbeitsbereich, mit dem Insight konfiguriert ist.
- Überprüfen Sie, ob alle Linux-Workerknoten über die Bezeichnung
kubernetes.io/role=agent
für den Pod des Zeitplaners verfügen. Fügen Sie sie anderenfalls hinzu. - Identifizieren Sie Bedingungen, die darauf hindeuten, dass
cAdvisor secure port:10250
oderunsecure port: 10255
nicht auf allen Knoten im Cluster geöffnet sind.
Verwenden Sie zum Ausführen mit Azure PowerShell die folgenden Befehle in dem Ordner mit dem Skript:
.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>
Nächste Schritte
Nachdem die Überwachung aktiviert ist, um Integrität und Ressourcenverwendung Ihres Kubernetes-Hybridclusters und der darauf ausgeführten Workloads zu erfassen, erfahren Sie mehr über die Verwendung von Container Insights.