mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 09:04:42 +02:00
feat: funk-cluster start --k8s — uncordon + attente ArgoCD
Après funk-stop --k8s, les nœuds reviennent Ready mais SchedulingDisabled (cordon stocké dans etcd). Sans uncordon, tous les pods restent Pending. Ajouts dans funk-start --k8s : - kubectl uncordon sur les nœuds SchedulingDisabled uniquement (idempotent) - Attente ArgoCD Running (jusqu'à 3 min) — confirme que le GitOps est opérationnel Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a631a4ab6c
commit
c9fd0d2812
2 changed files with 42 additions and 4 deletions
|
|
@ -308,6 +308,8 @@ cmd_start() {
|
|||
if [ -n "$with_k8s" ]; then
|
||||
echo ""
|
||||
echo "[ cluster k8s — démarrage compute-01/02/03 ]"
|
||||
|
||||
# Envoi WOL pour les nœuds éteints
|
||||
for i in 0 1 2; do
|
||||
local ip="${K8S_IPS[$i]}" name="${K8S_NAMES[$i]}" mac="${K8S_MACS[$i]}"
|
||||
if ping -c1 -W2 "$ip" &>/dev/null; then
|
||||
|
|
@ -317,21 +319,53 @@ cmd_start() {
|
|||
ok "$name — WOL envoyé"
|
||||
fi
|
||||
done
|
||||
|
||||
# Attente ping
|
||||
info "Attente ping des nœuds..."
|
||||
for ip in "${K8S_IPS[@]}"; do
|
||||
wait_ping "$ip" 120 && ok "$ip joignable" || warn "$ip n'a pas répondu"
|
||||
done
|
||||
|
||||
# Attente nœuds Ready (kubelet enregistré + CNI ok)
|
||||
info "Attente nœuds Ready (jusqu'à 3 min)..."
|
||||
local k8s_elapsed=0
|
||||
until [ $($KUBECTL get nodes --no-headers 2>/dev/null | grep -c " Ready" || echo 0) -ge 3 ] \
|
||||
until [ "$($KUBECTL get nodes --no-headers 2>/dev/null | grep -c " Ready" || echo 0)" -ge 3 ] \
|
||||
|| [ $k8s_elapsed -ge 180 ]; do
|
||||
sleep 10; k8s_elapsed=$((k8s_elapsed + 10))
|
||||
echo -ne " → Attente nœuds Ready... ${k8s_elapsed}s\r"
|
||||
done; echo ""
|
||||
local ready=$($KUBECTL get nodes --no-headers 2>/dev/null | grep -c " Ready" || echo 0)
|
||||
local ready="$($KUBECTL get nodes --no-headers 2>/dev/null | grep -c " Ready" || echo 0)"
|
||||
[ "$ready" -ge 1 ] \
|
||||
&& check_ok "kubectl — $ready nœud(s) Ready" \
|
||||
|| warn "Nœuds pas encore Ready (vérifier avec kubectl get nodes)"
|
||||
|
||||
# Uncordon — les nœuds restent SchedulingDisabled après un funk-stop --k8s
|
||||
# Sans ça, ArgoCD déploie des pods qui restent Pending indéfiniment
|
||||
echo ""
|
||||
info "Uncordon des nœuds (autorise le scheduling des pods)..."
|
||||
local uncordoned=0
|
||||
for name in "${K8S_NAMES[@]}"; do
|
||||
if $KUBECTL get node "$name" --no-headers 2>/dev/null | grep -q "SchedulingDisabled"; then
|
||||
$KUBECTL uncordon "$name" 2>/dev/null && ok "$name — uncordonné" || warn "$name — uncordon échoué"
|
||||
uncordoned=$((uncordoned + 1))
|
||||
fi
|
||||
done
|
||||
[ $uncordoned -eq 0 ] && ok "Nœuds déjà schedulables (pas de cordon résiduel)"
|
||||
|
||||
# Attente ArgoCD opérationnel (signe que les workloads peuvent se déployer)
|
||||
echo ""
|
||||
info "Attente ArgoCD opérationnel (jusqu'à 3 min)..."
|
||||
local argocd_elapsed=0
|
||||
until [ "$($KUBECTL get pods -n argocd --no-headers 2>/dev/null \
|
||||
| grep -c "Running" || echo 0)" -ge 1 ] \
|
||||
|| [ $argocd_elapsed -ge 180 ]; do
|
||||
sleep 10; argocd_elapsed=$((argocd_elapsed + 10))
|
||||
echo -ne " → Attente ArgoCD... ${argocd_elapsed}s\r"
|
||||
done; echo ""
|
||||
local argocd_pods="$($KUBECTL get pods -n argocd --no-headers 2>/dev/null | grep -c "Running" || echo 0)"
|
||||
[ "$argocd_pods" -ge 1 ] \
|
||||
&& check_ok "ArgoCD — $argocd_pods pod(s) Running (GitOps opérationnel)" \
|
||||
|| warn "ArgoCD pas encore prêt — workloads k8s en cours de déploiement"
|
||||
fi
|
||||
|
||||
print_score
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue