Mettre à niveau le cluster Kubernetes version 1.18 vers 1.19

Kubernetes ne prend pas en charge la mise à niveau sur plusieurs versions ! Par conséquent, la mise à niveau progressive de 1.18-1.19-1.20-1.21-1.22-1.23 est requise, et la mise à niveau est plus lourde lorsqu'elle s'étend sur plusieurs versions.

I. Aperçu

1. Notes sur la mise à niveau

  • Ce qui suit décrit le moment où chaque nœud est libéré pendant le processus de mise à niveau. Si vous effectuez kubeletune mise à niveau mineure de la version d'un , vous devez d'abord effacer le ou les nœuds à mettre à niveau. CoreDNS PodsPour les nœuds du plan de contrôle, ou d'autres charges très importantes peuvent s'exécuter sur eux . Voir Nœuds vides pour plus d'informations.
  • Après une mise à niveau, tous les conteneurs seront redémarrés car le hachage de la spécification du conteneur a changé.
  • Pour vérifier que le service Kubelet a redémarré avec succès après la mise à niveau, vous pouvez exécuter systemctl status kubeletou journalctl -xeu kubeletafficher le journal du service.

2. Stratégie de déviation de version

nom serveur API Kubelet
serveur API ±1
Kubelet -2
gestionnaire de contrôleur kube, planificateur kube -1
être un mandataire -2 Identique au nœud Kubelet
Kubectl ±1

3. L'environnement actuel du cluster

l'hôte système IP
loc-master35 CentOS 7.6 10.10.1.35
lieu-noeud36 CentOS 7.6 10.10.1.36
loc-noeud37 CentOS 7.6 10.10.1.37

4. Processus de mise à niveau des macros

  • Mettre à niveau le nœud du plan de contrôle principal
  • Mettre à niveau d'autres nœuds du plan de contrôle
  • Mettre à niveau les nœuds de travail

2. Mettre à niveau les nœuds du plan de contrôle

1. Confirmez la version de mise à niveau

# yum list --showduplicates kubeadm --disableexcludes=kubernetes
......
ubeadm.x86_64                         1.17.16-0                         kubernetes 
kubeadm.x86_64                        1.17.17-0                         kubernetes 
......
kubeadm.x86_64                        1.18.20-0                         kubernetes 
kubeadm.x86_64                        1.19.0-0                          kubernetes 
kubeadm.x86_64                        1.19.1-0                          kubernetes 
kubeadm.x86_64                        1.19.2-0                          kubernetes 
kubeadm.x86_64                        1.19.3-0                          kubernetes 
kubeadm.x86_64                        1.19.4-0                          kubernetes 
kubeadm.x86_64                        1.19.5-0                          kubernetes 
kubeadm.x86_64                        1.19.6-0                          kubernetes 
kubeadm.x86_64                        1.19.7-0                          kubernetes 
kubeadm.x86_64                        1.19.8-0                          kubernetes 
kubeadm.x86_64                        1.19.9-0                          kubernetes 
kubeadm.x86_64                        1.19.10-0                         kubernetes 
kubeadm.x86_64                        1.19.11-0                         kubernetes 
kubeadm.x86_64                        1.19.12-0                         kubernetes 
kubeadm.x86_64                        1.19.13-0                         kubernetes 
kubeadm.x86_64                        1.19.14-0                         kubernetes 
kubeadm.x86_64                        1.19.15-0                         kubernetes 
......
kubeadm.x86_64                        1.24.0-0                          kubernetes

2. Mettre à niveau les nœuds du plan de contrôle

Nous mettons d’abord à niveau le premier nœud de contrôle principal, puis mettons à niveau les autres nœuds de contrôle et enfin mettons à niveau les autres nœuds de travail.

Mise à niveau de Kubeadm 2.1

  • mise à niveaukubeadm
# yum install kubeadm-1.19.12-0 --disableexcludes=kubernetes
  • Vérifier le plan de mise à niveau
# kubeadm upgrade plan  # 检查集群是否可以升级
......
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT       AVAILABLE
kubelet     3 x v1.18.0   v1.19.16

Upgrade to the latest stable version:

COMPONENT                 CURRENT   AVAILABLE
kube-apiserver            v1.18.0   v1.19.16
kube-controller-manager   v1.18.0   v1.19.16
kube-scheduler            v1.18.0   v1.19.16
kube-proxy                v1.18.0   v1.19.16
CoreDNS                   1.6.7     1.7.0
etcd                      3.4.3-0   3.4.13-0

You can now apply the upgrade by executing the following command:

	kubeadm upgrade apply v1.19.16

Note: Before you can perform this upgrade, you have to update kubeadm to v1.19.16.
......
_____________________________________________________________________
  • Sélectionnez la version vers laquelle mettre à niveau
# kubeadm upgrade apply 1.19.12
......
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.19.12". Enjoy!

kubeadm upgradeLes certificats gérés sur le nœud sont automatiquement kubeadmrenouvelés. Si vous devez ignorer l'opération de renouvellement du certificat, vous pouvez utiliser l'indicateur --certificate-renewal=false.

# kubeadm upgrade apply 1.19.12  --certificate-renewal=false

2.2 Nœuds vides

kubectl drain commande pour marquer un nœud comme non planifiable et expulser toute la charge

# kubectl drain loc-master35 --ignore-daemonsets

2.3 Mettre à niveau Kubelet et Kubectl

# yum install kubelet-1.19.12-0 kubectl-1.19.12-0 --disableexcludes=kubernetes -y

# 重启 kubelet
# systemctl daemon-reload
# systemctl restart kubelet

2.4 Annuler la protection des nœuds

# kubectl uncordon loc-master35
node/loc-master35 uncordoned

3. Améliorez d'autres plans de contrôle

En supposant qu'il y en ait d'autres master, nous devons également les mastermettre à niveau.

# yum install kubeadm-1.19.12-0 kubelet-1.19.12-0 kubectl-1.19.12-0 --disableexcludes=kubernetes
# 
# kubeadm upgrade node          # 这一点与主不一样
# kubectl drain loc-master-xx --ignore-daemonsets
# systemctl daemon-reload
# systemctl restart kubelet
# kubectl uncordon loc-master-xx

3. Mettez à niveau le nœud de travail

1. Mettre à niveau Kubeadm

# yum install kubeadm-1.19.12-0 --disableexcludes=kubernetes

2、kubeadmMise à niveau

# kubeadm upgrade node

3. Évacuez le nœud

kubectl drain commande pour marquer un nœud comme non planifiable et expulser toute la charge

# kubectl drain loc-node36 --ignore-daemonsets

4. Mettre à niveau Kubelet et Kubectl

# yum install kubelet-1.19.12-0 kubectl-1.19.12-0 --disableexcludes=kubernetes -y

# 重启 kubelet
# systemctl daemon-reload
# systemctl restart kubelet

5. Annuler la protection des nœuds

# kubectl uncordon loc-node36
node/loc-node36uncordoned

4. Inspection après mise à niveau

  • Afficher l'état du nœud
# kubectl get nodes -o wide 
NAME           STATUS   ROLES    AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
loc-master35   Ready    master   33d   v1.19.12   10.10.1.35    <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
loc-node36     Ready    <none>   33d   v1.19.12   10.10.1.36    <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
loc-node37     Ready    <none>   33d   v1.19.12   10.10.1.37    <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://18.6.3
  • Vérifiez si le plug-in est normal
# kubectl logs -f kube-controller-manager-loc-master35 -n kube-system
  • Afficher kubeletla sortie du journal
# journalctl -f -u kubelet
...

5. Principe de fonctionnement

1、kubeadm Mise à niveau appliquée

Kubeadm Upgrade Apply effectue les opérations suivantes :

  • Vérifiez si votre cluster est dans un état évolutif :
    • Le serveur API est accessible
    • Tous les nœuds sont à l'état Prêt
    • La surface de contrôle est saine
  • Appliquez une politique de dérive de version.
  • Assurez-vous que l'image du plan de contrôle est disponible ou extraite vers le serveur.
  • Si une configuration de composant nécessite une mise à niveau de version, générez une configuration alternative et/ou utilisez une configuration de version de remplacement fournie par l'utilisateur.
  • Mettez à niveau les composants du plan de contrôle ou annulez si l'un d'entre eux ne parvient pas à démarrer.
  • Appliquez les nouveaux manifestes CoreDNS et kube-proxy et forcez la création de toutes les règles RBAC requises.
  • Si l'ancien fichier expire après 180 jours, un nouveau certificat et un nouveau fichier de clé pour le serveur API seront créés et l'ancien fichier sera sauvegardé.

2、kubeadmNoeud de mise à niveau

kubeadm upgrade nodeSur les autres nœuds plats de contrôle, procédez comme suit :

  • Obtenez le kubeadm ClusterConfiguration à partir du cluster.
  • (Facultatif) Sauvegardez le certificat kube-apiserver.
  • Mettez à niveau le manifeste du pod statique des composants du plan de contrôle.
  • Mettre à niveau la configuration du kubelet pour ce nœud

kubeadm upgrade nodeEffectuez les tâches suivantes sur les nœuds de travail :

  • Récupérez la configuration kubeadm ClusterConfiguration du cluster.
  • Mettez à niveau la configuration du kubelet pour ce nœud.


Référence :
https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
https://kubernetes.io/releases/version-skew-policy/

Je suppose que tu aimes

Origine blog.csdn.net/qq_25854057/article/details/124848760
conseillé
Classement