Skip to content

Rancher and RKE

Instalación RKE2 - Multi Server Mode


Introducción

El Modo Multi-Server de Rancher Kubernetes Engine v2 (RKE2) es una configuración avanzada diseñada para proporcionar alta disponibilidad y resiliencia a los clústeres de Kubernetes. A diferencia de la instalación en modo All-In-One, el despliegue en modo Multi-Server distribuye las funciones del Control Plane y los nodos de trabajo en múltiples servidores, garantizando un entorno más robusto y preparado para producción. Esta modalidad es ideal para organizaciones que necesitan alta disponibilidad y que buscan reducir puntos únicos de fallo, asegurando la continuidad de los servicios.

En este tema, se explorarán los pasos necesarios para instalar y configurar RKE2 en modo Multi-Server, desde la preparación de los nodos hasta la verificación de la instalación y la puesta en marcha del clúster. Los participantes aprenderán cómo distribuir componentes críticos, gestionar la comunicación entre nodos y aplicar prácticas recomendadas para la instalación de un clúster altamente disponible y escalable.


Objetivo

Objetivo General:

  • Proporcionar a los participantes los conocimientos y habilidades necesarias para instalar y configurar Rancher Kubernetes Engine v2 (RKE2) en Modo Multi-Server, asegurando un despliegue que ofrezca alta disponibilidad y resistencia ante fallos. Este objetivo busca capacitar a los administradores para gestionar entornos de producción complejos y escalables, optimizando la resiliencia y eficiencia de la infraestructura de Kubernetes en sus organizaciones.

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

En este laboratorio, procederemos a la instalación de RKE2 varios nodos, lo que significa dividiremos los roles entre worker y control plane. Esto permitirá la creación de un clúster Kubernetes con multiples nodos.

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio
  • Aunque no es estrictamente necesario para esta práctica, se recomienda haber terminado los laboratorios anteriores de Instalalación del cluster All In One e Instalación de Rancher Manager Server.

Inicio de laboratorio

Instalación de Servidor Control Plane o Master

  1. Establecer una sesión como el usuario student a lab-#-master
    export LAB=X
    
    ssh student@lab-${LAB}-master 
    
  2. Cambiar al usuario root
    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
    
    export INSTALL_RKE2_TYPE=server # Este es el valor por defecto
    
    ./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. Esta configuración comtempla dedicar el nodo master, para cargas de trabajo de control plane. Y definiremos un token definido por el usuario.
    TOKEN=$(openssl rand -base64 32)
    
    echo "TOKEN=${TOKEN}"
    
    Asegurese de guardar en un lugar seguro y conocido el contenido de la variable TOKEN, será utilizado en las guías siguientes.
    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)"
    token: "${TOKEN}"
    tls-san:
      - "$(hostname -f)"
    node-label:
      - "cluster=cluster1"
    node-taint:
      - "CriticalAddonsOnly=true:NoExecute"
    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
    
  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. Esto puedo demorar unos minutos.
    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
    
  12. Asegurese de guardar el nombre del servidor Master, ya que será utilizado posteriormente, puede verificarlo con el siguiente comando:
    lab-0-master:~ # hostname -f
    
  13. Cierre la sesión en el servidor Master del usuario root con el comando exit:
    lab-0-master:~ # exit
    
  14. Cierre la sesión en el servidor Master del usuario student con el comando exit:
    student@lab-0-master:~> exit
    

Instalación de Servidor Worker 1 (lab-#-node1)

Asegurarse de estar en el servidor bastion con el usuario student

student@lab-0-bastion:~>

  1. Establecer una sesión como el usuario student a lab-#-node1
    export LAB=X
    
    ssh student@lab-${LAB}-node1 
    
  2. Cambiar al usuario root
    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
    
    export INSTALL_RKE2_TYPE=agent # Este es el valor por defecto
    
    ./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. Esta configuración comtempla dedicar el nodo master, para cargas de trabajo de control plane. Y definiremos un token definido por el usuario.
    TOKEN='COLOCAR_VALOR_GENERADO_EN_LA_INSTALACION_DEL_MASTER'
    
    SERVER_NODE='COLOCAR_FQDN_DE_MASTER_DE_LA_SECCION_ANTERIOR'
    
    cat << EOF | tee /etc/rancher/rke2/config.yaml
    write-kubeconfig-mode: "0600"
    server: https://${SERVER_NODE}:9345
    resolv-conf: /etc/resolv.conf # Forzar utilizar DNS local
    node-name: "$(hostname -f)"
    token: "${TOKEN}" 
    node-label:
    - "cluster=cluster1"
    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
    
  8. Una vez validado el archivo, podemos iniciar y habilitar el servicio. Este proceso puede demorar unos minutos.
    systemctl enable rke2-agent.service --now
    
  9. Validar es estado del servicio. Debe estar en ejecución active (running)
    systemctl status rke2-agent.service
    
  10. Cierre la sesión en el servidor Node1 del usuario root con el comando exit:
    lab-0-node1:~ # exit
    
  11. Cierre la sesión en el servidor Node1 del usuario student con el comando exit:
    student@lab-0-node1:~> exit
    

Repetir los mismos pasos ejecutados en el servidor lab-#-node1 para lab-#-node2.

Asegurarse de estar en el servidor bastion con el usuario student

student@lab-0-bastion:~>

Verificar el estado del cluster y de los servidores que componen el ambiente

  1. Asegurarse de estar en el servidor bastion con el usuario student
    student@lab-0-bastion:~>
    
  2. Establecer una sesión como el usuario student a lab-#-master
    export LAB=X
    
    ssh student@lab-${LAB}-master
    
  3. Cambiar al usuario root
    sudo -i
    
  4. Validar el estado del cluster. Asegurse que el nombre del sistema muestra el FQDN de los nodos. Y que la versión sea la requerida por esta laboratorio y que el estado del nodo sea Ready. Esto puedo demorar unos minutos.
    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.
    
  5. 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
    
    Rancher and RKE