Solucionar error de python al actualizar Kubespray

Como suelo hacer, me disponía a actualizar mi clúster kubernetes casero utilizando kubespray. La última versión de kubespray que ejecuté fue la v2.28.0.

Cuando se publicó la versión v2.29.0, intenté ejecutarla en mi clúster de kubernetes pero, sorprendentemente, obtuve el error que se muestra en la siguiente imagen.

Tras una rápida búsqueda en Gemini, parecía que el error se producía porque la versión de python en el nodo que fallaba era inferior a 3.7. La imagen de abajo muestra qué versión de python había en el nodo que fallaba, así que confirmé que estaba instalada la versión 3.6.9.

Después de confirmar lo que Gemini me dijo, volví a preguntar a Gemini cómo solucionarlo utilizando Kubespray y me mostró que hay un rol bootstrap en Kubernetes que instala python en todos los nodos kubernetes.

Lo que hice fue cambiar a la última versión que me funcionaba y ejecutar el rol bootstrap contra el nodo que no estaba bien configurado.

git checkout v2.28.0
pip install -r requirements.txt --upgrade
ansible-playbook cluster.yml --limit master1 --tags bootstrap_os -b -i inventory/home_cluster/inventory.ini -e ansible_python_interpreter=/opt/bin/python -K

Como el nodo está marcado como ya inicializado, python no es instalado por el rol bootstrap. Para forzar la reinstalación de python de nuevo utilizando una versión más reciente configurada en kubespray v2.28.0, es necesario eliminar el archivo /opt/bin/.bootstrapped. Accede mediante SSH al nodo problemático y ejecuta

sudo rm /opt/bin/.bootstrapped

Se producirá otro error porque el enlace simbólico de Python está presente.

Ejecuta el comando para eliminarlo

sudo unlink /opt/bin/python

Después de este comando, el comando ansible para arrancar el nodo volverá a fallar, pero hay una pequeña diferencia con el primer fallo. Esta vez, hay otra versión de python presente en el nodo problemático.

Sin embargo, la versión de python por defecto sigue siendo la antigua. He ejecutado los siguientes comandos para configurarlo correctamente.

master1 /opt/bin # mv pypy3 pypy3.6
master1 /opt/bin # mv pypy3.9-v7.3.9-linux64/ pypy3 
master1 /opt/bin # python --version
Python 3.9.12 (05fbe3aa5b0845e6c37239768aa455451aa5faba, Mar 29 2022, 08:15:34)
[PyPy 7.3.9 with GCC 10.2.1 20210130 (Red Hat 10.2.1-11)]

Ahora, la versión es correcta y el problema está solucionado. El comando para actualizar el clúster kubernetes funciona bien ahora.

Espero que te haya gustado esta lectura. Disfruté mucho haciendo todos los pasos, así como escribiendo mi experiencia.

Gracias por leer mi blog. ¡Nos vemos en el próximo post!

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *