Surveiller un cluster Nexus Kubernetes

Chaque cluster Nexus Kubernetes est constitué de plusieurs couches :

  • Machines virtuelles
  • Couche Kubernetes
  • Pods d’application

Capture d’écran d’un exemple de cluster Nexus Kubernetes.

Illustration : exemple de cluster Nexus Kubernetes

Sur une instance, les clusters Nexus Kubernetes sont fournis avec une solution d’observabilité facultative Container Insights. Container Insights capture les journaux et les métriques des clusters Nexus Kubernetes et des charges de travail. Il vous appartient d'activer cet outil ou de déployer votre propre pile de télémétrie.

Le cluster Nexus Kubernetes avec l’outil de surveillance Azure ressemble à ce qui suit :

Capture d’écran d’un cluster Nexus Kubernetes avec des outils de surveillance.

Illustration : cluster Nexus Kubernetes avec outils de surveillance

Intégration d’extension à l’interface CLI en utilisant l’authentification de l’identité managée

Documentation pour commencer avec Azure CLI, comment l’installer sur plusieurs systèmes d’exploitation et comment installer des extensions CLI.

Installez la dernière version des extensions CLI nécessaires.

Surveiller un cluster Nexus Kubernetes

Ce guide pratique fournit des étapes pour activer les agents de surveillance pour la collecte des journaux système à partir de ces VMs à l’aide d’Azure Monitoring Agent. Les instructions décrivent en détail comment configurer la collecte de données dans un espace de travail Log Analytics.

Prérequis

  • Accès de l’administrateur du cluster au cluster Nexus Kubernetes.

  • Pour utiliser des serveurs Azure Arc, enregistrez les fournisseurs de ressources Azure suivants dans votre abonnement :

    • Microsoft.HybridCompute
    • Microsoft.GuestConfiguration
    • Microsoft.HybridConnectivity

Enregistrez ces fournisseurs de ressources, si ce n’est pas déjà fait :

az account set --subscription "{the Subscription Name}"
az provider register --namespace 'Microsoft.HybridCompute'
az provider register --namespace 'Microsoft.GuestConfiguration'
az provider register --namespace 'Microsoft.HybridConnectivity'
  • Attribuez un principal de service Azure aux rôles intégrés Azure suivants, si nécessaire. Attribuez le principal de service au groupe de ressources Azure qui contient les machines à connecter :
Rôle Nécessaire pour
Administrateur des ressources de la machine connectée à Azure ou Contributeur Connecter le serveur de machines virtuelles Nexus Kubernetes cluster compatible avec Arc dans le groupe de ressources et installer l'agent de surveillance Azure (AMA)
Contributeur de supervision ou Contributeur Créez une règle de collecte de données (DCR) dans le groupe de ressources et associez des serveurs avec Arc à celui-ci
Administrateur de l’accès utilisateur et Contributeur de stratégie de ressources ou Contributeur Nécessaire si vous souhaitez utiliser des attributions de stratégie Azure pour vous assurer qu’un DCR est associé à des machines avec Arc
Contributeur d’extension Kubernetes Nécessaire pour déployer l’extension K8s pour Container Insights

Surveiller un cluster Nexus Kubernetes

Prérequis

L'opérateur doit s'assurer de certains prérequis pour configurer les outils de monitoring sur les Nexus Kubernetes Clusters.

Container Insights stocke ses données dans un espace de travail Log Analytics. Les données du journal circulent dans l’espace de travail dont vous avez fourni l’ID de ressource lors de l’installation de l’extension Container Insights. Dans le cas contraire, les données sont acheminées vers un espace de travail par défaut dans le groupe de ressources associé à votre abonnement (en fonction de l'emplacement d'Azure).

Un exemple pour USA Est peut se présenter comme suit :

  • Nom de l’espace de travail Log Analytics : DefaultWorkspace-<GUID>-EUS
  • Nom du groupe de ressources : DefaultResourceGroup-EUS

Exécutez la commande suivante pour obtenir un identifiant de ressource d’espace de travail Log Analytics pré-existant :

az login

az account set --subscription "<Subscription Name or ID the Log Analytics workspace is in>"

az monitor log-analytics workspace show --workspace-name "<Log Analytics workspace Name>" \
  --resource-group "<Log Analytics workspace Resource Group>" \
  -o tsv --query id

Le déploiement de Container Insights et l'affichage des données dans l'espace de travail Log Analytics applicable requièrent certaines attributions de rôles dans votre compte. Par exemple, l’attribution de rôle « Contributeur ». Consultez les instructions pour l’attribution de rôles requis :

  • Rôle Contributeur Log Analytics : autorisations nécessaires pour activer la surveillance des conteneurs sur un cluster CNF (provisionné).
  • Rôle Lecteur Log Analytics : non membre du rôle Contributeur Log Analytics, recevez des autorisations pour afficher les données dans l’espace de travail Log Analytics une fois que vous avez activé la surveillance du conteneur.

Installation de l’extension du cluster

Connectez-vous à Azure Cloud Shell pour accéder au cluster :

az login

az account set --subscription "<Subscription Name or ID the Provisioned Cluster is in>"

Maintenant, déployez l'extension Container Insights sur un cluster Nexus Kubernetes provisionné en utilisant l'une des deux commandes suivantes :

Avec l’espace de travail Log Analytics pré-créé par le client

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings logAnalyticsWorkspaceResourceID="<Log Analytics workspace Resource ID>" \
  amalogsagent.useAADAuth=true

Utiliser l’espace de travail Log Analytics par défaut

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings amalogsagent.useAADAuth=true

Valider l’extension de cluster

Validez le déploiement réussi de l'activation des agents de surveillance sur les clusters Nexus Kubernetes à l'aide de la commande suivante :

az k8s-extension show --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters

Recherchez l’état d’approvisionnement « Réussi » pour l’extension. La commande « créer une k8s-extension » peut également avoir renvoyé l’état.

Personnaliser la collection de journaux et de métriques

Container Insights fournit aux utilisateurs finaux des fonctionnalités permettant d'affiner la collecte de journaux et de métriques à partir des clusters Nexus Kubernetes. Consultez les instructions de Configuration de la collecte de données de l'agent Container Insights pour plus d'informations.

Remarque

Par défaut, Container Insights ne collecte pas les journaux de l’espace de noms kube-system. Pour collecter les journaux de l’espace de noms kube-system, vous devez configurer l’agent pour collecter les journaux de l’espace de noms kube-system. Pour ce faire, supprimez l’espace de noms kube-system du champ excludedNamespaces dans ConfigMap en suivant l’approche configMap de configuration .

[log_collection_settings]
  [log_collection_settings.stdout]
    # In the absense of this configmap, default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stdout' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absense of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namepace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

  [log_collection_settings.stderr]
    # Default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stderr' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absense of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namepace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

Ressources supplémentaires