Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Retour à l’état initial de K3s

Vous pouvez revenir à l’état initial de la version K3s de Kubernetes après une mise à niveau, en utilisant une combinaison de rétrogradation du binaire K3s et de restauration de la base de données. Le retour à l’état initial peut être effectué sur des clusters de tous types, y compris un SQLite à nœud unique, un magasin de données externe ou un etcd intégré. Lorsque vous revenez à l’état initial vers une version mineure précédente de Kubernetes, vous devez disposer d’un instantané de la base de données pris sur la version mineure de Kubernetes vers laquelle vous souhaitez revenir.

Si vous ne pouvez pas restaurer la base de données, vous ne pouvez pas revenir à l’état initial vers une version mineure précédente.

Considérations importantes

  • Sauvegardes : Avant de procéder à la mise à niveau, assurez-vous d’avoir un instantané valide de la base de données ou d’etcd de votre cluster exécutant l’ancienne version de K3s. Sans sauvegarde, un retour à l’état initial est impossible.

  • Perte de données potentielle : Le script k3s-killall.sh interrompt de force les processus K3s et peut entraîner une perte de données si les applications ne sont pas correctement arrêtées.

  • Détails de la version : Vérifiez toujours les versions de K3s et des composants avant et après le retour à l’état initial.

Retour à l’état initial d’un cluster K3s

  • SQLite

  • etcd intégré

  • Base de données externe

Pour revenir à l’état initial d’un cluster K3s utilisant une base de données SQLite, remplacez le fichier .db par la copie du fichier .db que vous avez faite lors de la sauvegarde de votre base de données.

Pour revenir à l’état initial d’un cluster K3s utilisant un etcd intégré, suivez ces étapes :

  1. Si le cluster est en cours d’exécution et que l’API Kubernetes est disponible, arrêtez gracieusement les charges de travail en drainant tous les nœuds :

    kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...
  2. Sur chaque nœud, interrompez le service K3s et tous les processus de pod en cours d’exécution :

    k3s-killall.sh
  3. Sur chaque nœud, rétrogradez le binaire K3s à la version précédente, mais ne démarrez pas K3s.

    • Clusters avec accès Internet :

      • Nœuds de serveur :

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" INSTALL_K3S_SKIP_START="true" sh -
      • Nœuds d’agent :

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" INSTALL_K3S_SKIP_START="true" sh -
    • Clusters isolés physiquement :

      • Téléchargez les artefacts et exécutez le script d’installation localement. Ajoutez la variable d’environnement INSTALL_K3S_SKIP_START="true" lors de l’exécution du script d’installation pour empêcher K3s de démarrer.

  4. Sur le premier nœud de serveur ou le nœud sans entrée server: dans son fichier de configuration K3s, initiez la restauration du cluster. Référez-vous aux Étapes de restauration d’instantané pour plus d’informations :

    k3s server --cluster-reset --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>

    Cela écrase toutes les données dans la base de données etcd. Vérifiez l’intégrité de l’instantané avant de restaurer. Soyez conscient que les grands instantanés peuvent prendre beaucoup de temps à restaurer.

  5. Démarrez le service K3s sur le premier nœud de serveur :

    systemctl start k3s
  6. Sur les autres nœuds de serveur, supprimez le répertoire de base de données K3s :

    rm -rf /var/lib/rancher/k3s/server/db
  7. Démarrez le service K3s sur les autres nœuds de serveur :

    systemctl start k3s
  8. Démarrez le service K3s sur tous les nœuds d’agent :

    systemctl start k3s
  9. Vérifiez l’état du service K3s avec systemctl status k3s.

Pour effectuer un retour à l’état initial d’un cluster K3s en utilisant une base de données externe (par exemple, PostgreSQL, MySQL), suivez ces étapes :

  1. Si le cluster est en cours d’exécution et que l’API Kubernetes est disponible, arrêtez gracieusement les charges de travail en drainant tous les nœuds :

    kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...

    Ce processus peut perturber les applications en cours d’exécution.

  2. Sur chaque nœud, arrêtez le service K3s et tous les processus de pod en cours d’exécution :

    k3s-killall.sh
  3. Restaurez un instantané de base de données pris avant la mise à niveau de K3s et vérifiez l’intégrité de la base de données. Par exemple, si vous utilisez PostgreSQL, exécutez la commande suivante :

    pg_restore -U <DB-USER> -d <DB-NAME> <BACKUP-FILE>
  4. Sur chaque nœud, rétrogradez le binaire K3s à la version précédente.

    • Clusters avec accès Internet :

      • Nœuds de serveur :

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" sh -
      • Nœuds d’agent :

        curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" sh -
    • Clusters isolés physiquement :

      • Téléchargez les artefacts et exécutez le script d’installation localement. Vérifiez la version de K3s après l’installation avec k3s --version et réappliquez toutes les configurations personnalisées qui étaient utilisées avant la mise à niveau.

  5. Démarrez le service K3s sur chaque nœud :

    systemctl start k3s
  6. Vérifiez l’état du service K3s avec systemctl status k3s.

Vérification

Après le retour à l’état initial, vérifiez ce qui suit :

  • Version de K3s : k3s --version

  • État du cluster Kubernetes : kubectl get nodes

  • Fonctionnalité de l’application.

  • Vérifiez les journaux de K3s pour détecter les erreurs.