Partager via


Mettre à niveau un contrôleur de données activé pour Azure Arc connecté indirectement en utilisant des outils Kubernetes

Cet article explique comment mettre à niveau un contrôleur de données Azure Arc connecté indirectement à l’aide des outils Kubernetes.

Lors d’une mise à niveau du contrôleur de données, des parties du plan de contrôle des données, comme les définitions de ressources personnalisées (CRD) et les conteneurs peuvent être mises à niveau. Une mise à niveau du contrôleur de données n’entraîne pas de temps d’arrêt pour les services de données (SQL Managed Instance ou serveur PostgreSQL).

Dans cet article, vous allez appliquer un fichier .yaml pour :

  1. Créer le compte de service pour exécuter la mise à niveau.
  2. Mettre à niveau le programme d’amorçage.
  3. Mettre à niveau le contrôleur de données.

Remarque

Certains des niveaux et modes des services de données sont généralement disponibles (GA), tandis que d’autres sont en préversion. Si vous installez les services disponibles en GA et en préversion sur le même contrôleur de données, vous ne pouvez pas opérer de mise à niveau sur place. Pour mettre à niveau, supprimez toutes les instances de base de données non GA. Vous trouverez la liste des services disponibles en GA et en préversion dans les notes de publication.

Prérequis

Avant de commencer la mise à niveau du contrôleur de données, vous devez :

  • Vous connecter et vous authentifier auprès d’un cluster Kubernetes
  • Avoir sélectionné un contexte Kubernetes existant

Vous avez besoin d’un contrôleur de données connecté indirectement avec imageTag: v1.0.0_2021-07-30 ou une version ultérieure.

Installer des outils

Pour mettre à niveau le contrôleur de données en utilisant des outils Kubernetes, vous devez avoir installé ces outils.

Les exemples de cet article utilisent kubectl, mais des approches similaires peuvent être utilisées avec d’autres outils Kubernetes tels que le tableau de bord Kubernetes, ocou helm si vous êtes familiarisé avec ces outils et Kubernetes yaml/json.

Installer l’outil kubectl

Afficher les images disponibles et choisir une version

Extrayez la liste des images disponibles pour le contrôleur de données à l’aide de la commande suivante :

az arcdata dc list-upgrades --k8s-namespace <namespace>

La commande ci-dessus renvoie une sortie similaire à l’exemple suivant :

Found 2 valid versions.  The current datacontroller version is <current-version>.
<available-version>
...

Mettre à niveau le contrôleur de données

Cette section montre comment mettre à niveau un contrôleur de données connecté indirectement.

Remarque

Certains des niveaux et modes des services de données sont généralement disponibles (GA), tandis que d’autres sont en préversion. Si vous installez les services disponibles en GA et en préversion sur le même contrôleur de données, vous ne pouvez pas opérer de mise à niveau sur place. Pour mettre à niveau, supprimez toutes les instances de base de données non GA. Vous trouverez la liste des services disponibles en GA et en préversion dans les notes de publication.

Pour connaître les chemins de mise à niveau pris en charge, consultez Mettre à niveau les services de données avec Azure Arc.

Mettre à jour

Vous devez vous connecter et vous authentifier auprès d’un cluster Kubernetes et avoir sélectionné un contexte Kubernetes existant avant de commencer la mise à niveau du contrôleur de données.

Créer le compte de service pour exécuter la mise à niveau

Important

Nécessite des autorisations Kubernetes pour créer un compte de service, une liaison de rôle, un rôle de cluster, une liaison de rôle de cluster et toutes les autorisations RBAC accordées au compte de service.

Enregistrez une copie de arcdata-deployer.yaml et remplacez l’espace réservé {{NAMESPACE}} dans le fichier par l’espace de noms du contrôleur de données, par exemple : arc. Exécutez la commande suivante pour créer le compte de service du système de déploiement avec le fichier modifié.

kubectl apply --namespace arc -f arcdata-deployer.yaml

Mettre à niveau le programme d’amorçage

La commande suivante crée un travail pour mettre à niveau le programme d’amorçage et les objets Kubernetes associés.

Important

Le fichier yaml dans la commande suivante utilise par défaut mcr.microsoft.com/arcdata. Enregistrez une copie du fichier yaml et mettez-le à jour de façon à utiliser un autre registre/dépôt si nécessaire.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml

Mettre à niveau le contrôleur de données

La commande suivante corrige l’étiquette de l’image pour mettre à niveau le contrôleur de données.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml

Surveiller l’état de la mise à niveau

Vous pouvez surveiller la progression de la mise à niveau à l’aide de kubectl.

kubectl

kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w

La mise à niveau est un processus en deux parties. D’abord, le contrôleur est mis à niveau, puis la pile d’analyse est mise à niveau. Pendant la mise à niveau, utilisez kubectl get monitors -n <namespace> -w pour afficher l’état. La sortie se présente comme suit :

NAME           STATUS     AGE
monitorstack   Updating   36m
monitorstack   Updating   36m
monitorstack   Updating   39m
monitorstack   Updating   39m
monitorstack   Updating   41m
monitorstack   Ready      41m

Dépannage

Lorsque la version souhaitée est définie sur une version spécifique, le travail de démarrage tente de procéder à la mise à niveau vers cette version jusqu’à ce qu’elle réussisse. Si la mise à niveau réussit, la propriété RunningVersion de la spécification est mise à jour vers la nouvelle version. Les mises à niveau peuvent échouer dans des scénarios comme une balise d’image incorrecte, l’impossibilité de se connecter au registre ou au référentiel, une quantité de processeur ou de mémoire insuffisante allouée aux conteneurs ou un stockage insuffisant.

  1. Exécutez la commande ci-dessous pour voir si l’un des pods présente un statut Error ou présente un nombre élevé de redémarrages :

    kubectl get pods --namespace <namespace>
    
  2. Pour examiner les événements pour voir s’il existe une erreur, exécutez

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Pour obtenir la liste des conteneurs dans les pods, exécutez

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. Pour obtenir les journaux d’un conteneur, exécutez

    kubectl logs <pod name> <container name> --namespace <namespace>
    

Pour afficher les erreurs courantes et la façon de les résoudre, accédez aux Ressources de dépannage.