Mise à niveau des noeuds gérés vers Kubernetes version 1.35 (ou ultérieure)

Découvrez comment mettre à niveau des noeuds gérés qui utilisent actuellement une image OKE OL7, une image de plate-forme OL7 ou une image personnalisée basée sur une image OL7 pour exécuter Kubernetes version 1.35 (ou ultérieure) et OL8, à l'aide de Kubernetes Engine (OKE).

Remarque

Cette section s'applique uniquement aux noeuds gérés. Pour plus d'informations sur la mise à niveau de noeuds autogérés, reportez-vous à Mise à niveau de noeuds autogérés vers une version de plus récente de Kubernetes en remplaçant un noeud autogéré existant.

A partir de la version 1.35 de Kubernetes, Kubernetes requiert les cgroups v2 pour la gestion des ressources de conteneur.

Les groupes de contrôle (cgroups) est une fonctionnalité du noyau Linux qui fournit un mécanisme de gestion et de contrôle de l'allocation des ressources pour les processus ou les groupes de processus. Les groupes de contrôle version 2 (cgroups v2) fournissent une hiérarchie de groupes de contrôle unique par rapport à laquelle tous les contrôleurs de ressources sont montés. Dans cette hiérarchie, vous pouvez coordonner l'utilisation des ressources entre différents contrôleurs de ressources.

Oracle Linux 7 (OL7) prend en charge les cgroups v1, mais ne prend pas en charge les cgroups v2. Oracle Linux 8 (OL8) et les versions ultérieures prennent en charge à la fois les cgroups v1 et les cgroups v2, mais les cgroups v2 ne sont pas toujours activés par défaut dans OL8.

En résumé, la version 1.35 de Kubernetes requiert donc OL8 (ou version ultérieure) avec les cgroups v2 activés.

Les groupes v2 sont activés par défaut dans les images OKE OL8 dont le numéro de build est supérieur ou égal à 1367. Toutefois, dans les images OKE OL8 dont le numéro de build est inférieur à 1367 (et dans les images de plate-forme OL8), cgroups v1 est activé par défaut.

Pour les noeuds de processus actif sur les clusters exécutant Kubernetes version 1.35 (et ultérieure), Kubernetes Engine prend en charge les images suivantes :

Les images suivantes ne sont pas prises en charge avec Kubernetes version 1.35 :

  • Les images OL7 OKE ne sont pas prises en charge.
  • Les images de plate-forme (images de plate-forme OL7 et images de plate-forme OL8) ne sont pas prises en charge.
  • Les images personnalisées basées sur des images OKE OL7 ne sont pas prises en charge.
  • Les images personnalisées basées sur les images de plate-forme OL7 ne sont pas prises en charge.

Lors de la mise à niveau des noeuds gérés qui utilisent actuellement une image OL8 vers la version 1.35 de Kubernetes (et versions ultérieures), notez les points suivants :

  • Vous pouvez mettre à niveau les noeuds gérés qui utilisent actuellement une image OKE OL8 (ou une image personnalisée basée sur une image OKE OL8) avec un numéro de build inférieur à 1367, en effectuant une mise à niveau sur place et en spécifiant une image OKE OL8 avec un numéro de build supérieur ou égal à 1367.
  • Vous pouvez mettre à niveau les noeuds gérés qui utilisent actuellement une image de plate-forme OL8 en effectuant une mise à niveau sur place et en indiquant une image OKE OL8 avec un numéro de build supérieur ou égal à 1367.
  • Vous pouvez effectuer des mises à niveau sur place des noeuds gérés qui utilisent actuellement une image OL8, que les groupes v2 soient déjà activés pour les noyaux Linux des instances de calcul hébergeant les noeuds.
  • Pour obtenir des instructions sur l'exécution de mises à niveau sur place, reportez-vous à Mise à niveau des noeuds gérés vers une nouvelle version de Kubernetes.

Pour mettre à niveau des noeuds gérés qui utilisent actuellement une image OKE OL7, une image de plate-forme OL7 ou une image personnalisée basée sur une image OL7, afin d'exécuter Kubernetes version 1.35 (ou ultérieure), effectuez une mise à niveau sans réutilisation de la mémoire afin de remplacer le pool de noeuds existant par un nouveau pool de noeuds :

  1. Identifiez les pools de noeuds existants qui utilisent OL7 à l'aide de la console ou de l'interface de ligne de commande comme suit :

    • Utilisation de la console:

      1. Dans la page de liste Clusters, sélectionnez le nom du cluster contenant les pools de noeuds à afficher. Si vous avez besoin d'aide pour trouver la page de liste ou le cluster, reportez-vous à Liste des clusters.
      2. Sélectionnez l'onglet Pools de noeuds.
      3. Utilisez la colonne Nom d'image pour identifier les pools de noeuds qui utilisent des images Oracle-Linux-7.9.x.
    • Utilisation de l'interface de ligne de commande : identifiez les pools de noeuds existants qui utilisent OL7 en saisissant une commande semblable à la suivante :

      oci ce node-pool list --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --query 'data[*].{name:"name", image:"node-source"."image-id"}'
  2. Créez un pool de noeuds de remplacement qui utilise une image OL8 à l'aide de la console ou de l'interface de ligne de commande, comme suit :

    • Utilisation de la console:

      1. Dans l'onglet Pools de noeuds, sélectionnez Ajouter un pool de noeuds et entrez les détails du nouveau pool de noeuds.
      2. Sélectionnez une image de noeud de processus actif OKE basée sur une image Oracle Linux 8.x.
      3. Configurez le nouveau pool de noeuds avec la même forme, la même taille et le même emplacement que le pool de noeuds OL7.
      4. Choisissez Créer.
    • Utilisation de l'interface de ligne de commande : créez un pool de noeuds de remplacement qui utilise une image OL8 en saisissant une commande similaire à la suivante :

      oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name "nodepool-ol8-workers" --node-shape "VM.Standard.E4.Flex" --kubernetes-version "v1.35.0" --node-image-id <ol8-image-ocid> --size 3 --placement-configs '[{"availabilityDomain":"AD-1","subnetId":"<subnet-ocid>"}]'
  3. Connectez-vous aux noeuds OL7 :

    1. Obtenez les noms des noeuds OL7 en saisissant ce qui suit :

      kubectl get nodes -l node.kubernetes.io/os=ol7
    2. Cordonnez chaque nœud en entrant :

      kubectl cordon <node-name>
  4. Purgez les noeuds OL7 pour migrer progressivement les charges globales :

    1. Videz chaque noeud OL7 en saisissant la commande suivante :
      kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data --force
    2. Vérifiez que les charges globales ont été replanifiées sur les nouveaux noeuds en saisissant la commande suivante :
      kubectl get pods -A -o wide | grep <node-name>
  5. Supprimez le pool de noeuds OL7 à l'aide de la console ou de la CLI, comme suit :

    • Utilisation de la console:

      1. Dans l'onglet Pools de noeuds, sélectionnez Supprimer le pool de noeuds dans le menu Actions (trois points) en regard du pool de noeuds OL7.
      2. Cliquez sur Supprimer.
      3. Confirmez que vous souhaitez supprimer le pool de noeuds, puis sélectionnez Supprimer.
    • Utilisation de l'interface de ligne de commande : supprimez le pool de noeuds OL7 :

      oci ce node-pool delete --node-pool-id <ol7-nodepool-ocid>
  6. Mettez à niveau le cluster (par exemple, vers la version 1.35 de Kubernetes) :

    oci ce cluster update --cluster-id <cluster-ocid> --kubernetes-version "v1.35.0"

Pour plus d'informations, reportez-vous à la section Performing an Out-of-Place Managed Node Kubernetes Upgrade by Replacing an Existing Node Pool with a New Node Pool.