Aller au contenu

Changement d'environement d'execution (dockershim vers containerd)#

Prérequis:#

Le déploiement docker-exporter se retrouve "cassé" après le changement de runtime, il convient donc de le supprimer avant (ou après) le changement:

trackbone destroy -t <ZONE-NAME> -c docker_exporter
Le namespace n'étant supprimé, il faut faire la suppression à la main:
kubectl delete ns docker-exporter

I) Ajout de nodepool temporaires#

  • Dans le fichier zones/ngot_zones/clusters.cue ajouter le code suivant dans le champ du cluster cible:
type: "cluster"
parameters: kubernetes: pools: {
    "node-tmp1": {
        runtime:           "containerd"
        availability_zone: "eu-west-0a"
    }
    "node-tmp2": {
        runtime:           "containerd"
        availability_zone: "eu-west-0c"
    }
}
  • Lancer la commande de plan suivante pour valider:

    trackbone plan -z <ZONE-NAME> -c cce -t upgrade=true
    

  • Lancer la commande de apply suivante:

    trackbone apply -z <ZONE-NAME> -c cce
    

II) Recréation des nodepools#

  • Lancer un drain des nodes (utilisant dockershim):

     kubectl drain <NODE1> ... <NODE> --ignore-daemonsets --delete-emptydir-data
    

  • Editer le fichier zones/ngot_zones/clusters.cue pour y ajouter:

    type: "cluster"
    parameters: kubernetes: pools: {
        "nodes-0a": {
            runtime:           "containerd"
            availability_zone: "eu-west-0a"
        }
        "nodes-0c": {
            runtime:           "containerd"
            availability_zone: "eu-west-0c"
        }
    }
    
    Le résultat doit être le suivant:
    type: "cluster"
    parameters: kubernetes: pools: {
        "node-tmp1": {
            min_nodes:         3
            desired_nodes:     3
            runtime:           "containerd"
            availability_zone: "eu-west-0a"
        }
        "node-tmp2": {
            min_nodes:         3
            desired_nodes:     3
            runtime:           "containerd"
            availability_zone: "eu-west-0c"
        }
        "nodes-0a": {
            runtime:           "containerd"
            availability_zone: "eu-west-0a"
        }
        "nodes-0c": {
            runtime:           "containerd"
            availability_zone: "eu-west-0c"
        }
    }
    

  • Dans context/cce.cue ajouter le cluster à la liste des clusters mis à jour:

    #UpdatedClusters: ["kub-10010", "kub-10011", "kub-10012", <ZONE-NAME>]
    
    Cela mettra à jour le script de postinstall et donc recréera les random_pet et mettra à jour les nodepool.

  • Lancer la commande de plan suivante pour valider:

    trackbone plan -z <ZONE-NAME> -c cce
    

Note: La commande peut renvoyer une erreur, dans ce cas il faut la relancer pour "faire le ménage".

  • Lancer la commande de apply suivante:
    trackbone apply -z <ZONE-NAME> -c cce
    

III) Bascule sur les nœuds d'origine#

  • Une fois les nœuds d'origine recréés, lancer un drain des nœuds temporaires:
    kubectl drain <NODE1> ... <NODE> --ignore-daemonsets --delete-emptydir-data
    

IV) Suppression des nœuds temporaires#

  • Editer le fichier zones/ngot_zones/clusters.cue et supprimer les nœuds temporaires:

    type: "cluster"
    parameters: kubernetes: pools: {
        "nodes-0a": {
            runtime:           "containerd"
            availability_zone: "eu-west-0a"
        }
        "nodes-0c": {
            runtime:           "containerd"
            availability_zone: "eu-west-0c"
        }
    }
    

  • Lancer un apply:

     trackbone apply -z <ZONE-NAME> -c cce
    

Notes:#

  1. La commande generate-static-zones-files doit être lancée après chaque modifications du fichier clusters.cue
  2. La section concernant les nodepools nodes-0a et nodes-0c devra rester le temps de l'upgrade et sera déplacé dans le fichier model.cue à la fin.