From dd3f07e5b73ab51be1b01543086b22acd6d35795 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 9 Oct 2025 15:28:42 -0400 Subject: [PATCH 1/2] 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\ +\``` + -- 2.39.5 From 1802b10ddf5f7b1ed0766ac0a05c5a009ca88c47 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 23 Oct 2025 15:31:45 -0400 Subject: [PATCH 2/2] fix:translated documentaion notes into English --- docs/doc-remove-worker-flag.md | 82 +++++++++++++++++----------------- 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/docs/doc-remove-worker-flag.md b/docs/doc-remove-worker-flag.md index bdb45a7..5f88812 100644 --- a/docs/doc-remove-worker-flag.md +++ b/docs/doc-remove-worker-flag.md @@ -1,58 +1,56 @@ -1. ### **Titre : Retrait du flag *worker* sur les control planes (UPI)** +## **Remove Worker flag from OKD Control Planes** -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. +### **Context** +On OKD user provisioned infrastructure the control plane nodes can have the flag node-role.kubernetes.io/worker which allows non critical workloads to be scheduled on the control-planes -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 : +### **Observed Symptoms** +- After adding HAProxy servers to the backend each back end appears down +- Traffic is redirected to the control planes instead of workers +- The pods router-default are incorrectly applied on the control planes rather than on the workers +- Pods are being scheduled on the control planes causing cluster instability +``` ss -tlnp | grep 80 +``` +- shows process haproxy is listening at 0.0.0.0:80 on cps +- same problem for port 443 +- In namespace rook-ceph certain pods are deploted on cps rather than on worker nodes - -> 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 : + ### **Cause** + - when intalling UPI, the roles (master, worker) are not managed by the Machine Config operator and the cps are made schedulable by default. + ### **Diagnostic** +check node labels: +``` oc get nodes --show-labels | grep control-plane +``` +Inspecter kubelet configuration: -1. Inspecter la configuration du kubelet : - - cat /etc/systemd/system/kubelet.service - - Rechercher la ligne : +``` +cat /etc/systemd/system/kubelet.service +``` +find the line: +``` --node-labels=node-role.kubernetes.io/control-plane,node-role.kubernetes.io/master,node-role.kubernetes.io/worker +``` + → presence of label worker confirms the problem. - → présence du label worker confirme le problème. - -1. Vérifier que ce flag ne provient pas du MCO : - +Verify the flag doesnt come from 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. +**Solution:** +To make the control planes non schedulable you must patch the cluster scheduler resource -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 patch scheduler cluster --type merge -p '{"spec":{"mastersSchedulable":false}}' +``` +after the patch is applied the workloads can be deplaced by draining the nodes -\```\ -oc adm cordon \ -oc adm drain --ignore-daemonsets –delete-emptydir-data\ -\``` +``` +oc adm cordon +oc adm drain --ignore-daemonsets –delete-emptydir-data +``` -- 2.39.5