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 :
- Créer le compte de service pour exécuter la mise à niveau.
- Mettre à niveau le programme d’amorçage.
- 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, oc
ou helm si vous êtes familiarisé avec ces outils et Kubernetes yaml/json.
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.
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>
Pour examiner les événements pour voir s’il existe une erreur, exécutez
kubectl describe pod <pod name> --namespace <namespace>
Pour obtenir la liste des conteneurs dans les pods, exécutez
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
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.