Considérations pour la maintenance
Cette section fournit les prérequis lorsque vous devez vider les travailleurs Kubernetes dédiés à ThingPark Enterprise.
- ThingPark Enterprise 7.1.3 est requis pour gérer correctement les perturbations
- Il est conseillé de sauvegarder les données avant toute opération de maintenance
Exigences générales
Pour maintenir les capacités de calcul de ThingPark Enterprise, il est recommandé de maintenir des ressources de calcul Kubernetes dans chaque zone de disponibilité comme indiqué dans Dimensionnement du matériel
Dans tous les cas, les ressources disponibles de Kubernetes doivent permettre d'ordonnancer des charges de travail sur deux zones de disponibilité.
Exemples d'Azure Kubernetes Service
Mise à jour de la version du cluster Kubernetes
Il s'agit d'un exemple de mise à niveau de la version d'un cluster Kubernetes où seul ThingPark Enterprise est installé.
Hypothèses :
- La procédure suivante explique comment mettre à jour à la fois le plan de contrôle Kubernetes et le travailleur de la version 1.21 à la version 1.24 en utilisant l'az CLI
- ThingPark Enterprise est déployé sur le pool de nœuds par défaut
- Le déploiement est une dimension L segment
-
Commencez par mettre à niveau le plan de contrôle vers la dernière version 1.22 de patch Le plan de contrôle 1.22 est compatible avec le travailleur de 1.20 à 1.22
az aks upgrade --resource-group <resourceGroupName> \
--name <aksClusterName> \
--kubernetes-version 1.22 \
--control-plane-only -
Créer le groupe de travailleurs de secours suivant le même dimensionnement que le principal
az aks nodepool add --cluster-name <aksClusterName> \
--name spare \
--resource-group <resourceGroupName> \
--kubernetes-version 1.22 \
--node-count 3 \
--zones 1 2 3 \
--node-vm-size Standard_D4s_v4 \
--node-osdisk-type Managed \
--node-osdisk-size 128 \
--max-pods 50 -
Commencez à déplacer les charges de travail en vidant les nœuds du pool de nœuds par défaut. Chaque nœud doit être vidé un par un :
-
Videz le nœud et enlevez l'étiquette
kubectl drain <nodeID> --delete-emptydir-data --ignore-daemonsets -
Surveillez que les déploiements et les ensembles avec état sont tous en pleine forme avant de vider le nœud suivant
kubectl get sts
kubectl get deploy
-
-
À ce stade, le pool de nœuds par défaut doit être libre de toutes charges de travail ThingPark Enterprise. Il peut être mis à niveau :
# Speed up upgrade by allowing to upgrade all nodes at same time
az aks nodepool update --cluster-name <aksClusterName> \
--name default \
--resource-group <resourceGroupName> \
--max-surge 100%
# Upgrade to the latest 1.22 patch
az aks nodepool upgrade --cluster-name <aksClusterName> \
--kubernetes-version 1.22 \
--name default \
--resource-group <resourceGroupName> -
Continuez à mettre à niveau à la fois le plan de contrôle et les travailleurs du pool de nœuds par défaut vers la version 1.23 et ensuite vers la version 1.24
# 1.23 upgrade
az aks upgrade --resource-group <resourceGroupName> \
--name <aksClusterName> \
--kubernetes-version 1.23 \
--control-plane-only
az aks nodepool upgrade --cluster-name <aksClusterName> \
--kubernetes-version 1.23 \
--name default \
--resource-group <resourceGroupName>
# 1.24 upgrade
az aks upgrade --resource-group <resourceGroupName> \
--name <aksClusterName> \
--kubernetes-version 1.24 \
--control-plane-only
az aks nodepool upgrade --cluster-name <aksClusterName> \
--kubernetes-version 1.24 \
--name default \
--resource-group <resourceGroupName> -
Drainer les nœuds de secours. Pour chaque nœud :
-
Videz le nœud et enlevez l'étiquette
kubectl drain <nodeID> --delete-emptydir-data --ignore-daemonsets -
Surveillez que les déploiements et les ensembles avec état sont tous en pleine forme avant de vider le nœud suivant
kubectl get sts
kubectl get deploy
-
-
Supprimer le pool de nœuds de secours
az aks nodepool delete --cluster-name <aksClusterName> \
--name spare \
--resource-group <resourceGroupName> -
Vérifiez l'état de provisionnement du cluster
$ az aks show --resource-group <resourceGroupName> \
--name <aksClusterName> \
--output table
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn
--------------- ---------- --------------- ------------------- -------------------------- ------------------- -------------------------------------------------
<aksClusterName> westeurope <resourceGroupName> 1.24.0 1.24.0 Succeeded <aksClusterName>-d1661175.hcp.westeurope.azmk8s.io