Configurer des clusters Kubernetes hybrides avec Container Insights
Container Insights fournit une expérience de surveillance riche pour l’Azure Kubernetes Service (AKS). Cet article explique comment activer la surveillance des clusters Kubernetes hébergés en dehors d’Azure et obtenir une expérience de surveillance similaire.
Les configurations suivantes sont officiellement prises en charge avec Container Insights. Si vous utilisez des versions différentes de Kubernetes et du système d’exploitation, veuillez ouvrir un ticket de support.
- Environnements :
- Kubernetes en local.
- OpenShift version 4 et ultérieure, localement ou dans d’autres environnements cloud.
- Les versions de Kubernetes et de la stratégie de support sont les mêmes que celles prises en charge par AKS.
- Les runtimes de conteneur suivants sont pris en charge : Moby et les runtimes compatibles CRI tels que CRI-O et ContainerD.
- Les versions du système d’exploitation Linux pour le nœud principal et les nœuds Worker sont Ubuntu (18.04 LTS et 16.04 LTS) et Red Hat Enterprise Linux CoreOS 43.81.
- Service Azure Access Control pris en charge : contrôle d’accès en fonction du rôle (RBAC) Kubernetes et non-RBAC.
Avant de commencer, vérifiez que vous répondez aux exigences suivantes :
Vous disposez d’un espace de travail Log Analytics. Container Insights prend en charge un espace de travail Log Analytics dans les régions répertoriées dans Produits Azure par région. Vous pouvez le créer en utilisant Azure Resource Manager, PowerShell ou le portail Azure.
Notes
La supervision de plusieurs clusters avec le même nom de cluster dans le même espace de travail Log Analytics n’est pas prise en charge. Les noms de cluster doivent être uniques.
Vous êtes membre du rôle de contributeur Log Analytics pour activer la supervision des conteneurs. Pour plus d’informations sur la façon de contrôler l’accès à un espace de travail Log Analytics, consultez Gérer l’accès à l’espace de travail et aux données de journal.
Pour afficher les données de supervision, vous devez avoir le rôle Lecteur Log Analytics dans l’espace de travail Log Analytics, configuré avec Container Insights.
Vous avez un client Helm pour intégrer le chart Container Insights pour le cluster Kubernetes spécifié.
Les informations de configuration du proxy et du pare-feu suivantes sont requises pour permettre à la version de l’agent Log Analytics pour Linux de communiquer avec Azure Monitor :
Ressource de l’agent Ports *.ods.opinsights.azure.com
Port 443 *.oms.opinsights.azure.com
Port 443 *.dc.services.visualstudio.com
Port 443 L’agent conteneurisé nécessite l’ouverture du
cAdvisor secure port: 10250
ouunsecure port :10255
kubelet sur tous les nœuds du cluster pour collecter les métriques de performance. Nous vous recommandons de configurersecure port: 10250
sur le cAdvisor kubelet s’il n’est pas déjà configuré.L’agent conteneurisé nécessite que les variables d’environnement suivantes soient spécifiées sur le conteneur pour communiquer avec le service d’API Kubernetes au sein du cluster afin de collecter les données d’inventaire :
KUBERNETES_SERVICE_HOST
etKUBERNETES_PORT_443_TCP_PORT
.
Important
La version minimale prise en charge de l’agent pour la supervision des clusters Kubernetes hybrides est ciprod10182019.
Pour activer Container Insights pour le cluster Kubernetes hybride :
Configurez votre espace de travail Log Analytics avec la solution Container Insights.
Activez le chart Helm Container Insights avec un espace de travail Log Analytics.
Pour plus d’informations sur les solutions de monitoring dans Azure Monitor, consultez Solutions de monitoring dans Azure Monitor.
Vous pouvez déployer la solution avec le modèle Azure Resource Manager fourni, à l’aide de l’applet de commande Azure PowerShell New-AzResourceGroupDeployment
ou avec Azure CLI.
Si vous n’êtes pas familiarisé avec le déploiement de ressources à l’aide d’un modèle, consultez les rubriques suivantes :
- Déployer des ressources à l’aide de modèles Resource Manager et d’Azure PowerShell
- Déployer des ressources à l’aide de modèles Resource Manager et de l’interface de ligne de commande Azure
Si vous avez choisi d’utiliser Azure CLI, vous devez d’abord l’installer et l’utiliser localement. Vous devez exécuter Azure CLI version 2.0.59 ou une version ultérieure. Pour identifier votre version, exécutez az --version
. Si vous devez installer ou mettre à niveau Azure CLI, consultez Installer Azure CLI.
Cette méthode inclut deux modèles JSON. Un modèle spécifie la configuration pour activer la supervision. L’autre modèle contient des valeurs de paramètres que vous configurez pour spécifier les éléments suivants :
workspaceResourceId
: ID de ressource complet de votre espace de travail Log Analytics.workspaceRegion
: région dans laquelle l’espace de travail est créé, également appelé Emplacement dans les propriétés de l’espace de travail quand vous les affichez à partir du portail Azure.
Pour identifier l’ID de ressource complet de votre espace de travail Log Analytics qui est requis pour la valeur du paramètre workspaceResourceId
dans le fichier de containerSolutionParams.json, procédez comme suit. Exécutez ensuite l’applet de commande PowerShell ou la commande Azure CLI pour ajouter la solution.
Listez tous les abonnements auxquels vous avez accès en utilisant la commande suivante :
az account list --all -o table
Cela ressemble à l’exemple de sortie suivant :
Name CloudName SubscriptionId State IsDefault ------------------------------------ ----------- ------------------------------------ ------- ----------- Microsoft Azure AzureCloud 0fb60ef2-03cc-4290-b595-e71108e8f4ce Enabled True
Copiez la valeur de SubscriptionId.
Basculez vers l’abonnement qui héberge l’espace de travail Log Analytics avec la commande suivante :
az account set -s <subscriptionId of the workspace>
L’exemple suivant affiche la liste des espaces de travail de vos abonnements au format JSON par défaut :
az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
Dans la sortie, recherchez le nom de l’espace de travail. Ensuite, copiez l’ID de ressource complet de cet espace de travail Log Analytics sous le champ ID.
Copiez et collez la syntaxe JSON suivante dans votre fichier :
{ "$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": {} } } ] }
Enregistrez ce fichier sous le nom containerSolution.json dans un dossier local.
Collez la syntaxe JSON suivante dans votre fichier :
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "value": "<workspaceResourceId>" }, "workspaceRegion": { "value": "<workspaceRegion>" } } }
Modifiez les valeurs de workspaceResourceId en utilisant la valeur que vous avez copiée à l’étape 3. Pour workspaceRegion copiez la valeur Région obtenue après avoir exécuté la commande Azure CLI az monitor log-analytics workspace show.
Enregistrez ce fichier sous le nom containerSolutionParams.json dans un dossier local.
Vous êtes prêt à déployer ce modèle.
Pour effectuer un déploiement avec Azure PowerShell, utilisez les commandes suivantes dans le dossier qui contient le modèle :
# 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
Le changement de configuration peut prendre quelques minutes. Quand vous avez terminé, un message similaire à l’exemple suivant inclut ce résultat :
provisioningState : Succeeded
Pour effectuer un déploiement avec Azure CLI, exécutez les commandes suivantes :
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
Le changement de configuration peut prendre quelques minutes. Quand vous avez terminé, un message similaire à l’exemple suivant inclut ce résultat :
provisioningState : Succeeded
Une fois que vous avez activé la surveillance, 15 minutes peuvent s’écouler avant que vous puissiez voir les métriques d’intégrité du cluster.
Dans cette section, vous allez installer l’agent conteneurisé pour Container Insights. Avant de continuer, identifiez l’ID d’espace de travail requis pour le paramètre amalogsagent.secret.wsid
et la clé primaire requise pour le paramètre amalogsagent.secret.key
. Pour identifier ces informations, effectuez les étapes suivantes, puis exécutez les commandes pour installer l’agent en utilisant le chart Helm.
Exécutez la commande suivante pour identifier l’ID de l’espace de travail :
az monitor log-analytics workspace list --resource-group <resourceGroupName>
Dans la sortie, recherchez le nom de l’espace de travail sous le champ name. Ensuite, copiez l’ID de cet espace de travail Log Analytics sous le champ customerID.
Exécutez la commande suivante pour identifier la clé primaire de l’espace de travail :
az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>
Dans la sortie, recherchez la clé primaire sous le champ primarySharedKey, puis copiez la valeur.
Notes
Les commandes suivantes s’appliquent uniquement à Helm version 2. L’utilisation du paramètre
--name
n’est pas applicable avec Helm version 3.Si votre cluster Kubernetes communique par le biais d’un serveur proxy, configurez le paramètre
amalogsagent.proxy
avec l’URL du serveur proxy. Si le cluster ne communique pas via un serveur proxy, vous n’avez pas besoin de spécifier ce paramètre. Pour plus d’informations, consultez la section Configurer le point de terminaison proxy plus loin dans cet article.Ajoutez le référentiel de graphiques Azure à votre liste locale en exécutant la commande suivante :
helm repo add microsoft https://microsoft.github.io/charts/repo
Exécutez la commande suivante pour installer le graphique :
$ helm install --name myrelease-1 \ --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
Si l’espace de travail Log Analytics se trouve dans Azure China 21Vianet, exécutez la commande suivante :
$ 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
Si l’espace de travail Log Analytics se trouve dans Azure US Government, exécutez la commande suivante :
$ 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
Vous pouvez spécifier un module complémentaire dans le fichier JSON de spécification de cluster du moteur AKS, qui est également appelé modèle d’API. Dans ce module complémentaire, fournissez la version encodée en base64 de WorkspaceGUID
et WorkspaceKey
de l’espace de travail Log Analytics dans lequel sont stockées les données de supervision collectées. Vous pouvez trouver WorkspaceGUID
et WorkspaceKey
avec les étapes 1 et 2 de la section précédente.
Les définitions d’API prises en charge pour le cluster Azure Stack Hub sont fournies dans l’exemple kubernetes-container-monitoring_existing_workspace_id_and_key.json. Recherchez en particulier la propriété addons dans 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>"
}
}
]
}
Avec la version de graphique 1.0.0, les paramètres de collecte des données de l’agent sont contrôlés à partir de ConfigMap. Pour plus d’informations sur les paramètres de collecte de données d’agent, consultez Configurer la collecte de données d’agent pour Container Insights.
Une fois que vous avez correctement déployé le chart, vous pouvez examiner les données de votre cluster Kubernetes hybride dans Container Insights depuis le portail Azure.
Notes
La latence d’ingestion est de 5 à 10 minutes entre l’agent et la validation dans l’espace de travail Log Analytics. L’état du cluster affiche la valeur Pas de données ou Inconnu jusqu’à ce que toutes les données de supervision requises soient disponibles dans Azure Monitor.
À compter de la version 2.7.1 du chart, celui-ci prend en charge la spécification du point de terminaison proxy avec le paramètre amalogsagent.proxy
. De cette façon, il peut communiquer via votre serveur proxy. La communication entre l’agent Container Insights et Azure Monitor peut s’opérer via un serveur proxy HTTP ou HTTPS. L’authentification anonyme et l’authentification de base avec un nom d’utilisateur et un mot de passe sont toutes les deux prises en charge.
La valeur de configuration de proxy présente la syntaxe [protocol://][user:password@]proxyhost[:port]
.
Notes
Si votre serveur proxy n’impose pas d’authentification, vous avez quand même besoin de spécifier un pseudo nom d’utilisateur et un mot de passe. Il peut s’agir de n’importe quel nom d’utilisateur ou mot de passe.
Propriété | Description |
---|---|
protocol | HTTP ou HTTPS |
utilisateur | Nom d’utilisateur facultatif pour l’authentification du proxy |
mot de passe | Mot de passe facultatif pour l’authentification du proxy |
proxyhost | Adresse ou nom de domaine complet (FQDN) du serveur proxy |
port | Numéro de port facultatif pour le serveur proxy |
par exemple amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080
.
Si vous spécifiez le protocole http, les requêtes HTTP sont créées en utilisant une connexion sécurisée SSL/TLS. Le serveur proxy doit prendre en charge les protocoles SSL/TLS.
Si vous rencontrez une erreur lorsque vous tentez d’activer la supervision pour votre cluster Kubernetes hybride, utilisez le script PowerShell TroubleshootError_nonAzureK8s.ps1 pour vous aider à détecter et à résoudre les problèmes que vous rencontrez. Il est conçu pour détecter et tenter de corriger les problèmes suivants :
- L’espace de travail Log Analytics spécifié est valide.
- L’espace de travail Log Analytics est configuré avec la solution Container Insights. Si ce n’est pas le cas, configurez l’espace de travail.
- Les pods replicaset de l’agent Azure Monitor sont en cours d’exécution.
- Les pods démon de l’agent Azure Monitor sont en cours d’exécution.
- Le service Agent Health dans Azure Monitor est en cours d’exécution.
- L’ID et la clé de l’espace de travail Log Analytics configurés sur l’agent conteneurisé correspondent à l’espace de travail avec lequel l’insight est configuré.
- Vérifiez que tous les nœuds Worker Linux ont l’étiquette
kubernetes.io/role=agent
pour planifier le pod des planificateurs. Si ce n’est pas le cas, ajoutez-la. - Identifiez les conditions qui peuvent indiquer que
cAdvisor secure port:10250
ouunsecure port: 10255
n’est pas ouvert sur tous les nœuds du cluster.
Pour exécuter avec Azure PowerShell, utilisez les commandes suivantes dans le dossier qui contient le script :
.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>
Maintenant que la supervision est activée pour collecter l’utilisation des ressources et l’intégrité de vos clusters Kubernetes hybrides et des charges de travail s’y exécutent, découvrez comment utiliser Container Insights.