Skip to content

Latest commit

 

History

History
144 lines (101 loc) · 6.19 KB

File metadata and controls

144 lines (101 loc) · 6.19 KB

Lab 8 - Montées de versions AKS

tags: #azure #kubernetes #update #upgrade #version #patch

Objectifs

Voir les différents niveaux de mises à jour possible sur un cluster Azure Kubernetes Service

Lectures additionnelles :

Pré-requis sur le poste d'administration

Les opérations sont réalisables depuis l'Azure Cloud Shell : https://shell.azure.com

Création d'un cluster AKS pour le lab

az login

az group create --name "RG-Lab8" --location "eastus2"

az aks create -n "myCluster" -g "RG-Lab8" --network-plugin azure --location "eastus2" --generate-ssh-keys -o jsonc

az aks get-credentials -n "myCluster" -g "RG-Lab8"

Mises à jour de sécurité des systèmes d'exploitation des worker nodes

Les mises à jour de sécurité du système d'exploitation des worker nodes sont installées automatiquement toutes les 24h.

Si une mise à jour Linux nécessite un rédemarrage, alors il est de la responsabilité du client de redémarrer le processus de redémarrage.

Celui-ci est automatisable facilement via l'utilisation de Kured (Kubernetes Reboot Daemon) et est parfaitement documenté ici : https://docs.microsoft.com/en-us/azure/aks/node-updates-kured

Il est donc recommandé de configurer ses clusters AKS avec Kured.

Mise à jour de l'image des worker nodes

Dans une approche Cattle, la mise à jour in-place des composants installés dans le système d'exploitation des workers n'a pas de sens. Dans AKS, les équipes Produit proposent très fréquemment de nouvelles images des OS et la mise à jour d'un node pool va consister à instancier des nouveaux agents et à supprimer les anciens.

Les annonces sur les nouvelles image d'OS sont disponibles dans le changelog d'AKS : https://github.com/Azure/AKS/blob/master/CHANGELOG.md

Pour avoir plus de détails sur le contenu et les versions des images OS : - images Ubuntu : https://github.com/Azure/AKS/tree/2022-07-03/vhd-notes/aks-ubuntu - images Windows : https://github.com/Azure/AKS/tree/2022-07-03/vhd-notes/AKSWindows

Pour visualiser la version de l'image en cours d'utilisation sur un nodepool

az aks nodepool list --resource-group "RG-Lab8" --cluster-name "MyCluster" -o yaml | grep nodeImageVersion

La commande suivante donne un résultat similaire

az aks nodepool show \
    --resource-group "RG-Lab8" \
    --cluster-name "MyCluster" \
    --name "nodepool1" \
    --query nodeImageVersion

Pour mettre à jour un node pool avec la dernière version de l'image OS, cela est possible et orchestré via l'option --node-image de la commande az aks upgrade

az aks nodepool upgrade \
    --resource-group "RG-Lab8" \
    --cluster-name "MyCluster" \
    --name "nodepool1" \
    --node-image-only \
    --no-wait

Pendant la mise à jour (si une version plus récente de l'image est disponible), il est possible de surveiller les changements

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'

Mise à jour de la version de Kubernetes

Vérifier les mises à jour de Kubernetes disponibles

az aks get-upgrades --resource-group "RG-Lab8" --name "myCluster" -o table

Il est possible de faire la vérification à l'échelle d'un node pool

az aks nodepool get-upgrades \
    --nodepool-name "nodepool1" \
    --cluster-name "myCluster" \
    --resource-group "RG-Lab8"

Le résultat est un tableau présentant les montées de versions possible pour Kubernetes

Par défaut les montées de version de Kubernetes dans AKS se font de la manière suivante :

  1. Montée de version du Control Plane
  2. Montée de version Node Pool par Node Pool

Exécuter l'ordre de mise à jour vers une version supérieure de Kubernetes

az aks upgrade \
    --resource-group "RG-Lab8" \
    --name "myCluster" \
    --kubernetes-version <KUBERNETES_VERSION>

Note : les montées de version nécessite de passer par toutes les versions mineures. Il n'est pas possible par exemple de passer directement de la 1.22.1 à la 1.24.

Observer les nodes et les évènements associés dans le cluster via le portail (dans la partie Node Pools) mais aussi via la CLI kubectl

kubectl get nodes

kubectl get events -n default

Activer les channels de mise à jour automatique (auto-upgrade)

Il est possible d'automatiser les montées de versions à plusieurs niveaux :

  • Au niveau patch. Pour passer automatiquement par exemple de la version 1.2.4 à la version 1.2.5. C'est le channel patch
  • Au niveau version mineure : pour passer automatiquement à la version N-1 dernier niveau de patch (N étant la version Kubernetes la plus récente supportée dans Azure). C'est le channel stable
  • Le channel rapid met à jour le cluster automatiquement avec la version de Kubernetes supporté la plus récente
  • Le channel node-image permet d'avoir des VM worker nodes avec la dernière image mise à disposition par l'équipe AKS

Pour configurer le cluster AKS du Lab en mode auto-upgrade, exécuter la commande suivante:

az aks update --resource-group "RG-Lab8" --name "myCluster" --auto-upgrade-channel rapid -o jsonc

Nettoyage

Supprimer le resource group RG-Lab8

az group delete -n "RG-Lab8"