- Ingresamos a okd-provisioner
ssh okd-provisioner-nodo01
Verificaciones previas
- Obtener los nodos actuales
oc get nodes

- Revisar la expiración de certificados
- Para asegurar que el clúster reinicie sin problemas, planificá reiniciarlo en o antes de la fecha indicada. Al reiniciar, el proceso podría requerir que aprobés manualmente los CSR pendientes para recuperar los certificados de kubelet.
oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer \
-o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'

1. Marcar todos los nodos como no programables (cordon)
- Esto evita que se programen pods nuevos mientras apagás. Corré:
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do
echo ${node}
oc adm cordon ${node}
done

2. Apagar todos los nodos
- Este comando le dice a cada nodo que se apague de forma ordenada (1 minuto de gracia para que los pods terminen bien):
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do
oc debug node/${node} -- chroot /host shutdown -h 1
done
- Resultado
Starting pod/compute1okdunaaccr-debug-frvx7 ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 21:36:00 UTC, use 'shutdown -c' to cancel.
Removing debug pod ...
Starting pod/compute2okdunaaccr-debug-vkb9z ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 15:36:02 CST, use 'shutdown -c' to cancel.
Removing debug pod ...
Starting pod/compute3okdunaaccr-debug-2cs2l ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 15:36:03 CST, use 'shutdown -c' to cancel.
Removing debug pod ...
Starting pod/cp1okdunaaccr-debug-ss825 ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 15:36:21 CST, use 'shutdown -c' to cancel.
Removing debug pod ...
Starting pod/cp2okdunaaccr-debug-g6xvf ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 15:36:22 CST, use 'shutdown -c' to cancel.
Removing debug pod ...
Starting pod/cp3okdunaaccr-debug-zb5v4 ...
To use host binaries, run `chroot /host`. Instead, if you need to access host namespaces, run `nsenter -a -t 1`.
Shutdown scheduled for Mon 2026-06-29 15:36:23 CST, use 'shutdown -c' to cancel.
Removing debug pod ...

NOTA: como tu clúster es bare-metal, conviene saber cuál control-plane tiene el API VIP para que sea el último en apagarse. Pero con -h 1 los seis reciben la orden casi al mismo tiempo y se apagan en paralelo tras ese minuto, así que en la práctica con 6 nodos no suele dar problema.

3. Verificar que los nodos ya se apagaron
- Esperá 1-2 minutos a que se cumpla el plazo, y confirmá que están realmente abajo. Como el API se apaga junto con los masters,
ocva a dejar de responder; podemos ejecutar
oc get nodes
- Resultado
E0629 15:38:46.565839 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
E0629 15:38:56.623750 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
E0629 15:39:06.689324 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
E0629 15:39:16.743920 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
E0629 15:39:26.811625 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
E0629 15:39:36.869042 7700 memcache.go:265] «Unhandled Error» err=»couldn’t get current server API group list: Get \»https://api.okd.una.ac.cr:6443/api?timeout=32s\»: EOF»
Unable to connect to the server: EOF

- O lo podemos confirmar con
for n in compute1 compute2 compute3 cp1 cp2 cp3; do
echo -n "${n}: "
ping -c1 -W1 ${n}.okd.una.ac.cr >/dev/null 2>&1 && echo "ARRIBA" || echo "abajo"
done
