Passer au contenu principal

Considérations pour la maintenance

Cette section fournit les prérequis lorsque vous devez vider les travailleurs Kubernetes dédiés à ThingPark Enterprise.

AVERTISSEMENT
  • 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
  1. 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
  2. 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
  3. 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 :

    1. Videz le nœud et enlevez l'étiquette

      kubectl drain <nodeID> --delete-emptydir-data --ignore-daemonsets
    2. 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
  4. À 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>
  5. 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>
  6. Drainer les nœuds de secours. Pour chaque nœud :

    1. Videz le nœud et enlevez l'étiquette

      kubectl drain <nodeID> --delete-emptydir-data --ignore-daemonsets
    2. 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
  7. Supprimer le pool de nœuds de secours

    az aks nodepool delete --cluster-name <aksClusterName> \
    --name spare \
    --resource-group <resourceGroupName>
  8. 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