From dd3f07e5b73ab51be1b01543086b22acd6d35795 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 9 Oct 2025 15:28:42 -0400 Subject: [PATCH 01/19] doc for removing worker flag from cp on UPI --- docs/doc-remove-worker-flag.md | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/doc-remove-worker-flag.md diff --git a/docs/doc-remove-worker-flag.md b/docs/doc-remove-worker-flag.md new file mode 100644 index 0000000..bdb45a7 --- /dev/null +++ b/docs/doc-remove-worker-flag.md @@ -0,0 +1,58 @@ +1. ### **Titre : Retrait du flag *worker* sur les control planes (UPI)** + +1. ### **Contexte** + Dans certaines installations OpenShift UPI, les nodes de control plane (masters) héritent par erreur du label worker (node-role.kubernetes.io/worker).\ + Cela provoque la planification de workloads non critiques (par ex. routers, Ceph pods, etc.) sur les control planes, ce qui compromet la stabilité et la séparation des rôles. + +1. ### **Symptômes observés** +- Apres avoir ajouté des serveur dans HAProxy, tous les serveurs backend (wk0, wk1, wk2) apparaissent en état DOWN.\ + Le trafic HTTP/HTTPS est redirigé vers les control planes au lieu des workers. +- Les pods router-default sont déployés sur cp1 et cp2 plutôt que sur les workers. +- Sur les masters, la commande suivante montre une écoute sur le port 80 : + + ss -tlnp | grep 80 + + -> processus haproxy en écoute sur 0.0.0.0:80 + + -> meme chose pour port 443 + +- Dans le namespace rook-ceph, certains pods (mon, mgr, operator) ne se planifient pas, sont aussi deployé sur les cp au lieu des worker nodes : + +1. ### **Cause** + En installation UPI, les rôles (master, worker) ne sont pas gérés par le Machine Config Operator (MCO).\ + Les controls planes sont schedulable par default. Qui amene les trois roles, worker, master et control-plane. + +1. ### **Diagnostic** +1. Vérifier les labels du node : + + oc get nodes --show-labels | grep control-plane + +1. Inspecter la configuration du kubelet : + + cat /etc/systemd/system/kubelet.service + + Rechercher la ligne : + + --node-labels=node-role.kubernetes.io/control-plane,node-role.kubernetes.io/master,node-role.kubernetes.io/worker + + → présence du label worker confirme le problème. + +1. Vérifier que ce flag ne provient pas du MCO : + + oc get machineconfig | grep rendered-master + +**Solution:**\ +Pour rendre les **control planes non planifiables** (c’est-à-dire empêcher tout déploiement de workloads dessus), il faut appliquer le patch suivant sur la ressource scheduler du cluster :\ +\``` +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +oc patch scheduler cluster --type merge -p '{"spec":{"mastersSchedulable":false}}'\ +\```\ +Cette commande **désactive la planification sur les masters** et **supprime efficacement le rôle worker** de leurs fonctions. + +Une fois le patch appliqué, il faut **déplacer les workloads** encore présents sur les control planes vers les **workers** à l’aide des commandes : + +\```\ +oc adm cordon \ +oc adm drain --ignore-daemonsets –delete-emptydir-data\ +\``` + From e5eb7fde9fb938d2b32e1af6a6675857909b232d Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 9 Oct 2025 15:29:09 -0400 Subject: [PATCH 02/19] doc to clone and transfer a coreos disk --- docs/doc-clone-et-restaure-disque-coreos.md | 117 ++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 docs/doc-clone-et-restaure-disque-coreos.md diff --git a/docs/doc-clone-et-restaure-disque-coreos.md b/docs/doc-clone-et-restaure-disque-coreos.md new file mode 100644 index 0000000..b1e9108 --- /dev/null +++ b/docs/doc-clone-et-restaure-disque-coreos.md @@ -0,0 +1,117 @@ +1. ### **Procédure de clonage et de restauration d’un disque CoreOS / Fedora OKD** + Ce processus décrit les étapes pour copier un disque système défectueux sur un nouveau disque d’entreprise, en conservant les **GUID**, **labels**, et **UUID** d’origine pour assurer la compatibilité avec le système CoreOS/OKD. + +1. ### **Étape 1 — Sauvegarde initiale** + Avant toute manipulation, **sauvegardez vos données**.\ + Ensuite, clonez le disque d’origine vers le nouveau : + + sudo dd if=/dev/old of=/dev/new bs=64K status=progress count=1000Mib + +1. ### **Étape 2 — Vérification et modification des partitions** + Afficher la table des partitions du nouveau disque : + + sgdisk -p /dev/new + + Modifier les partitions (si nécessaire) : + + gdisk /dev/new + + Dans gdisk, utiliser : + +- v → vérifier la table +- p → afficher la table +- d → supprimer une partition +- n → recréer la partition (même numéro et type) + - Pour le **secteur de fin**, appuyer sur **Entrée** pour utiliser l’espace maximal. +- w → écrire les changements + +Créer le système de fichiers XFS sur la nouvelle partition (ex. partition 4) : + +sudo mkfs.xfs -f /dev/new4 + +1. ### **Étape 3 — Récupération des identifiants de l’ancien disque** + Obtenir le **GUID de partition** d’origine : + + sgdisk -i /dev/old\_disk + + Lister les labels et les PARTUUIDs : + + sgdisk -p /dev/old\_disk + + blkid /dev/old\_disk\* + +1. ### **Étape 4 — Appliquer les anciens identifiants sur le nouveau disque** + Définir le même **PARTUUID** : + + sgdisk -u : /dev/new + + Définir le même **nom de partition** : + + sgdisk -c :"" /dev/new + + Vérifier : + + lsblk -o NAME,SIZE,PARTUUID,PARTLABEL /dev/old\_disk + + lsblk -o NAME,SIZE,PARTUUID,PARTLABEL /dev/new + +1. ### **Étape 5 — Copier les données** + Monter les partitions avant la copie : + + mkdir -p /mnt/old /mnt/new + + mount /dev/old4 /mnt/old + + mount /dev/new4 /mnt/new + + Copier les données : + + rsync -aAXHv --numeric-ids /mnt/old/ /mnt/new/ + +1. ### **Étape 6 — Restaurer UUID et labels** + Obtenir l’ancien UUID : + + blkid /dev/old4 + + Le définir sur la nouvelle partition : + + sudo xfs\_admin -U /dev/new4 + + Vérifier et copier le **label** : + + sgdisk -i 4 /dev/old\_disk | grep "Partition name" + + sudo xfs\_admin -L /dev/new4 + +1. ### **Étape 7 — Validation** + Comparer les deux disques : + + sgdisk -p /dev/old\_disk + + sgdisk -p /dev/new + + lsblk -o NAME,SIZE,PARTUUID,PARTLABEL /dev/old\_disk + + lsblk -o NAME,SIZE,PARTUUID,PARTLABEL /dev/new + + blkid /dev/old\_disk\* | grep UUID= + + blkid /dev/new\* | grep UUID= + +1. ### **Étape 8 — Finalisation** + Démonter les partitions : + + umount /mnt/new + + umount /mnt/old + + Éteindre, **échanger les disques**, et vérifier le démarrage : + +1. Éteindre la machine. +1. Retirer le disque défectueux. +1. Définir le nouveau disque comme disque de démarrage principal dans le BIOS. +1. Redémarrer et confirmer que le système démarre correctement. + +**Résultat attendu :**\ +Le nouveau disque est une copie fonctionnelle de l’ancien, avec partitions, labels, et UUID identiques. Aucun réajustement GRUB ni réinstallation n’est nécessaire pour Fedora CoreOS/OKD. + From 008b03f979561da8652ac32154aea89e9d642852 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 23 Oct 2025 14:56:07 -0400 Subject: [PATCH 03/19] fix: changed documentation language to english --- docs/doc-clone-and-restore-coreos.md | 127 ++++++++++++++++++++ docs/doc-clone-et-restaure-disque-coreos.md | 117 ------------------ 2 files changed, 127 insertions(+), 117 deletions(-) create mode 100644 docs/doc-clone-and-restore-coreos.md delete mode 100644 docs/doc-clone-et-restaure-disque-coreos.md diff --git a/docs/doc-clone-and-restore-coreos.md b/docs/doc-clone-and-restore-coreos.md new file mode 100644 index 0000000..9b392ed --- /dev/null +++ b/docs/doc-clone-and-restore-coreos.md @@ -0,0 +1,127 @@ +## Working procedure to clone and restore CoreOS disk from OKD Cluster + +### **Step 1 - take a backup** +``` +sudo dd if=/dev/old of=/dev/backup status=progress +``` + +### **Step 2 - clone beginning of old disk to new** +``` +sudo dd if=/dev/old of=/dev/backup status=progress count=1000Mib +``` + +### **Step 3 - verify and modify disk partitions** +list disk partitions +``` +sgdisk -p /dev/new +``` +if new disk is smaller than old disk and there is space on the xfs partition of the old disk, modify partitions of new disk +``` +gdisk /dev/new +``` +inside of gdisk commands +``` +-v -> verify table +-p -> print table +-d -> select partition to delete partition +-n -> recreate partition with same partition number as deleted partition +``` +For end sector, either specify the new end or just press Enter for maximum available +When asked about partition type, enter the same type code (it will show the old one) +``` +p - >to verify +w -> to write +``` +make xfs file system for new partition +``` +sudo mkfs.xfs -f /dev/new4 +``` + +### **Step 4 - copy old PARTUUID ** + +**careful here** +get old patuuid: +``` +sgdisk -i /dev/old_disk # Note the "Partition unique GUID" +``` +get labels +``` +sgdisk -p /dev/old_disk # Shows partition names in the table + +blkid /dev/old_disk* # Shows PARTUUIDs and labels for all partitions +``` +set it on new disk +``` +sgdisk -u : /dev/sdc +``` +partition name: +``` +sgdisk -c :"" /dev/sdc +``` +verify all: +``` +lsblk -o NAME,SIZE,PARTUUID,PARTLABEL /dev/old_disk +``` + +### **Step 5 - Mount disks and copy files from old to new disk** + +mount files before copy: + +``` +mkdir -p /mnt/new +mkdir -p /mnt/old +mount /dev/old4 /mnt/old +mount /dev/new4 /mnt/new +``` +copy: +``` +rsync -aAXHv --numeric-ids /source/ /destination/ +``` + +### **Step 6 - Set correct UUID for new partition 4** +to set correct uuid for partition 4 +``` +blkid /dev/old4 +``` +``` +xfs_admin -U /dev/new_partition +``` +to set labels +get it +``` +sgdisk -i 4 /dev/sda | grep "Partition name" +``` +set it +``` +sgdisk -c 4:"" /dev/sdc + +or + +(check existing with xfs_admin -l /dev/old_partition) +Use xfs_admin -L