Skip to content

Rancher and RKE

Instalación Rancher Kubernetes Engine v2 (RKE2) All In One


Introducción

La instalación de Rancher Kubernetes Engine v2 (RKE2) en un entorno All-In-One es una configuración diseñada para simplificar la implementación de Kubernetes en un único servidor, integrando tanto los componentes de administración como los nodos de trabajo en una sola instancia. Esta modalidad es ideal para entornos de laboratorio y pruebas, ya que permite a los usuarios familiarizarse con las funcionalidades de RKE2 sin necesidad de infraestructura compleja o de múltiples servidores.

En este tema, exploraremos paso a paso el proceso de instalación de RKE2 en su configuración All-In-One, incluyendo los requisitos previos, la preparación del entorno, los comandos de instalación y la configuración inicial. Al finalizar esta sección, los participantes habrán implementado un clúster Kubernetes funcional con RKE2, listo para administrar cargas de trabajo y practicar operaciones básicas de administración y despliegue de contenedores en un solo nodo.


Objetivos

Objetivo General:

  • Guiar a los participantes en el proceso de instalación y configuración de Rancher Kubernetes Engine v2 (RKE2) en un entorno All-In-One, proporcionando los conocimientos y habilidades necesarios para desplegar un clúster de Kubernetes funcional. Este objetivo busca facilitar la comprensión de los pasos y mejores prácticas involucrados en la implementación de RKE2, preparando a los participantes para gestionar y operar entornos de contenedores de manera eficiente y segura.

Laboratorio: Instalación Rancher Kubernetes Engine 2 - RKE2 (AIO)

En este laboratorio, procederemos a la instalación de RKE2 en un único nodo en modo All in One, lo que significa que el nodo cumplirá tanto la función de control plane como la de worker. Esto permitirá la creación de un clúster Kubernetes simple pero funcional en un solo servidor.

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio y haber realizado la validación de conexión y funcionamiento

Inicio de laboratorio

Asegurarse de estar en el servidor bastion con el usuario student

student@lab-0-bastion:~>

  1. Establecer una sesión como el usuario student al servidor: lab-#-aio
    student@lab-0-bastion:~> export LAB=X
    
    student@lab-0-bastion:~> ssh student@lab-${LAB}-aio 
    
  2. Cambiar al usuario root
    student@lab-0-aio:~> sudo -i
    
  3. Procederemos a descargar el script de instalación de RKE2. Es recomendado descargarlo por seguridad.
    curl -sfL https://get.rke2.io --output install.sh
    
    chmod +x install.sh
    
  4. Para este laboratorio, utilizaremos la versión de RKE2: v1.29.9+rke2r1. Y ejecutaremos el instalador.
    export INSTALL_RKE2_VERSION=v1.29.9+rke2r1
    
    ./install.sh
    
  5. Crearemos el directorio de configuración de rke2.
    mkdir -p /etc/rancher/rke2
    
  6. Crearemos la configuración inicial de rke2. Se mostrará en pantalla y se remplazará el contenido del archivo de configuración /etc/rancher/rke2/config.yaml. En este archivo se puede definir el token, esto se realizará en un laboratorio posterior.
    cat << EOF | tee /etc/rancher/rke2/config.yaml
    write-kubeconfig-mode: "0600" # Es importante proteger este archivo, ya que cotiene las credenciales del administrador del cluster
    node-name: $(hostname -f)
    tls-san:
      - "$(hostname -f)"
    resolv-conf: /etc/resolv.conf # Forzar utilizar DNS local
    node-label:
      - "cluster=rancher"
    EOF
    
  7. Es recomendable validar el formato del archivo de configuración, para esto instalaremos la herramiento yq. Y validaremos el archivo creado.
    zypper install -y yq
    
    yq /etc/rancher/rke2/config.yaml
    
    echo $? # La salida de este comando deberá ser 0
    
    Significado del Código de Salida: 0: El comando se ejecutó correctamente sin errores. Diferente de 0: Hubo un error en la ejecución del comando. En este caso, si echo $? muestra 0, significa que yq pudo leer y procesar el archivo config.yaml sin problemas. Si el valor es diferente de 0, indicaría un problema al leer o procesar el archivo, como si no existiera, no se tuviera permisos adecuados, o hubiera un error de sintaxis en el YAML.
  8. Una vez validado el archivo, podemos iniciar y habilitar el servicio. Este proceso puede demorar unos minutos.
    systemctl enable rke2-server.service --now
    
  9. Validar es estado del servicio. Debe estar en ejecución active (running)
    systemctl status rke2-server.service
    
  10. Validar el estado del cluster. Asegurse que el nombre del sistema muestra el FQDN del nodo. Y que la versión sea la requerida por esta laboratorio y que el estado del nodo sea Ready.
    export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
    
    export PATH=$PATH:/var/lib/rancher/rke2/bin
    
    kubectl version
    
    kubectl get nodes
    
    kubectl get nodes -L cluster # Para validar que se haya aplicado la etiquda del node definida en la configuración de rke2.
    
  11. Listar los pods en ejecución en este cluster. Si existe algún pod en estado de error, puede consultar sus bitcoras. Espere hasta que todos los pods, estén en estado Running o Completed.
    kubectl get pods -A
    

Hemos finalizado la instalación de RKE2 en un nodo en modo All in One, la salida de los PODs debería ser similar a la siguiente:

lab-0-bastion:~ # kubectl get pods -A
NAMESPACE     NAME                                                       READY   STATUS      RESTARTS   AGE
kube-system   cloud-controller-manager-lab-0-bastion.c.mx-g01.internal   1/1     Running     0          2m51s
kube-system   etcd-lab-0-bastion.c.mx-g01.internal                       1/1     Running     0          2m32s
kube-system   helm-install-rke2-canal-x5xrx                              0/1     Completed   0          2m37s
kube-system   helm-install-rke2-coredns-4hbvk                            0/1     Completed   0          2m37s
kube-system   helm-install-rke2-ingress-nginx-n7c7b                      0/1     Completed   0          2m37s
kube-system   helm-install-rke2-metrics-server-xfcv5                     0/1     Completed   0          2m37s
kube-system   helm-install-rke2-snapshot-controller-26n28                0/1     Completed   2          2m37s
kube-system   helm-install-rke2-snapshot-controller-crd-tqll9            0/1     Completed   0          2m37s
kube-system   helm-install-rke2-snapshot-validation-webhook-srnx9        0/1     Completed   0          2m37s
kube-system   kube-apiserver-lab-0-bastion.c.mx-g01.internal             1/1     Running     0          2m49s
kube-system   kube-controller-manager-lab-0-bastion.c.mx-g01.internal    1/1     Running     0          2m43s
kube-system   kube-proxy-lab-0-bastion.c.mx-g01.internal                 1/1     Running     0          2m43s
kube-system   kube-scheduler-lab-0-bastion.c.mx-g01.internal             1/1     Running     0          2m43s
kube-system   rke2-canal-8lnzv                                           2/2     Running     0          2m29s
kube-system   rke2-coredns-rke2-coredns-55bf79979b-zk5rs                 1/1     Running     0          2m31s
kube-system   rke2-coredns-rke2-coredns-autoscaler-564964dcd5-85qc7      1/1     Running     0          2m31s
kube-system   rke2-ingress-nginx-controller-blbdz                        1/1     Running     0          90s
kube-system   rke2-metrics-server-6cd986844b-9ltqg                       1/1     Running     0          113s
kube-system   rke2-snapshot-controller-59cc9cd8f4-lnnwq                  1/1     Running     0          89s
kube-system   rke2-snapshot-validation-webhook-54c5989b65-jjs68          1/1     Running     0          106s
lab-0-bastion:~ #

Laboratorio: Desinstalación Rancher Kubernetes Engine 2 - RKE2

Descripción

En este laboratorio, procederemos a eliminar la instalación de RKE2 en un único nodo en modo All in One. Al ejecutar este procedimiento tendremos el nodo limpio. Es recomendado reiniciar el nodo posterior a este procedimiento.

Objetivos

  • Realizar la Des instalación Rancher Kubernetes Engine2 (RKE2) en modo All In One

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio y haber realizado la validación de conexión y funcionamiento

Inicio de laboratorio

  1. Establecer una sesión como el usuario student al servidor: lab-#-aio
    export LAB=X
    
    ssh student@lab-${LAB}-aio 
    
  2. Cambiar al usuario root
    sudo -i
    
  3. Eliminar la instalación, ejecutando:
    rke2-uninstall.sh
    reboot
    
  4. Espere a que el nodo reinicie para reutilizarlo o iniciar una instalación de nuevo.
  5. Establecer una sesión como el usuario student a lab-#-aio
    export LAB=X
    
    ssh student@lab-${LAB}-aio 
    
  6. Cambiar al usuario root
    sudo -i
    
  7. Validar el sistema. Todos los comandos deben fallar al no existir el servicio o los directorios.
    systemctl status rke2-server.service
    
    find /var/lib/rancher
    
    find /etc/rancher
    
  8. Reiniciar el servidor
    sudo reboot
    
    Verificar que inicie de forma correcta.

📝 IMPORTANTE: Asegurarse de volver a instalar este servidor en modo All In One para continuar con las prácticas de laboratorio.

Conclusión

En esta guía de laboratorio, hemos cubierto el proceso completo de instalación y desinstalación de Rancher Kubernetes Engine v2 (RKE2) en un entorno All-In-One. A través de estos pasos, los participantes han adquirido una comprensión sólida de cómo implementar un clúster de Kubernetes funcional en un solo servidor, desde la preparación del entorno y la ejecución de comandos de instalación, hasta la correcta eliminación y limpieza del sistema.

Este conocimiento es fundamental para administradores y profesionales que buscan familiarizarse con la infraestructura de RKE2, permitiéndoles experimentar con configuraciones de laboratorio y comprender mejor las operaciones de instalación y desinstalación en un entorno controlado. Esta práctica proporciona una base sólida para manejar implementaciones más complejas y distribuidas en entornos de producción en el futuro.

La experiencia obtenida a lo largo de esta guía asegura que los participantes estén preparados para enfrentar escenarios reales de gestión de Kubernetes, reforzando sus habilidades y mejorando su eficiencia en la administración de plataformas contenerizadas.