Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Gestión de hosts

Los usuarios pueden ver y gestionar SUSE Virtualization nodos desde la página del host. El primer nodo siempre se configura como un nodo de gestión del clúster. Cuando hay tres o más nodos, los otros dos nodos que se unieron primero se promueven automáticamente a nodos de gestión para formar un clúster HA.

Debido a que SUSE Virtualization está construido sobre Kubernetes y utiliza etcd como su base de datos, la tolerancia máxima a fallos de nodos es uno cuando hay tres nodos de gestión.

host.png

SUSE Virtualization reserva recursos de CPU para operaciones a nivel de sistema, por lo que el número total de núcleos indicado en la columna CPU es ligeramente inferior al número real de núcleos en cada host. Para más información, consulte Cálculo del pool de CPU compartido.

Mantenimiento de nodos

Los usuarios administradores pueden habilitar el Modo de Mantenimiento (seleccionar ⋮ > Habilitar Modo de Mantenimiento) para expulsar automáticamente todas las máquinas virtuales de un nodo. Este modo aprovecha la migración por lotes para mover las máquinas virtuales migrables en vivo a otros nodos, lo cual es útil cuando necesitas reiniciar, actualizar el firmware o reemplazar componentes de hardware. Se requieren al menos dos nodos activos para utilizar esta función.

Las máquinas virtuales no migrables pueden impedir que el nodo active el Modo de Mantenimiento. Cuando esto ocurre, debes identificar y apagar manualmente esas máquinas virtuales. Para más información, consulte Migración en Vivo.

Para forzar a las VMs individuales a apagarse en lugar de migrar a otros nodos, añade la etiqueta harvesterhci.io/maintain-mode-strategy y uno de los siguientes valores a esas VMs:

  • Migrate: Migra la VM en vivo a otro nodo en el clúster. Este es el comportamiento predeterminado si la etiqueta harvesterhci.io/maintain-mode-strategy no está configurada.

  • ShutdownAndRestartAfterEnable: Reinicia la VM después de que el nodo cambie a modo de mantenimiento. La VM está programada en un nodo diferente.

  • ShutdownAndRestartAfterDisable: Apaga la VM cuando el modo de mantenimiento está habilitado y reinicia la VM cuando el modo de mantenimiento está deshabilitado. La VM permanece en el mismo nodo.

  • Shutdown: Apaga la VM cuando el modo de mantenimiento está habilitado. La VM permanece apagada en lugar de reiniciarse.

Puedes forzar un apagado colectivo de todas las VMs en un nodo en la pantalla de Habilitar Modo de Mantenimiento. Esto desactiva configuraciones individuales utilizando la etiqueta harvesterhci.io/maintain-mode-strategy.

Para ejecutar un comando especial antes de apagar una VM, considera usar el gancho del ciclo de vida del contenedor PreStop.

node-maintenance.png

Aislamiento de un Nodo

Los nodos aislados se marcan como no programables. El aislamiento es útil cuando deseas evitar que se programen nuevas cargas de trabajo en un nodo. Puedes desaislar un nodo para hacerlo programable nuevamente.

cordon-node.png

Eliminando un Nodo

Antes de eliminar un nodo de un SUSE Virtualization clúster, determina si los nodos restantes tienen suficientes recursos de computación y almacenamiento para asumir la carga de trabajo del nodo que se va a eliminar. Compruebe los siguientes elementos:

  • Uso actual de recursos en el clúster (en la pantalla de Hosts de la interfaz SUSE Virtualization)

  • Capacidad de los nodos restantes para mantener suficientes réplicas para todos los volúmenes

Si los nodos restantes no tienen suficientes recursos, las VMs pueden fallar al migrar y los volúmenes pueden degradarse cuando eliminas un nodo.

1. Verifica si el nodo puede ser eliminado del clúster.

Puedes eliminar de forma segura un nodo del plano de control dependiendo de la cantidad y disponibilidad de otros nodos en el clúster.

  • El clúster tiene tres nodos del plano de control y uno o más nodos de trabajo.

    Cuando eliminas un nodo del plano de control, un nodo de trabajo será promovido a nodo del plano de control. SUSE Virtualization te permite asignar un rol a cada nodo que se une a un clúster. En versiones anteriores, los nodos de trabajo eran seleccionados aleatoriamente para la promoción. Si prefieres promover nodos específicos, consulta Gestión de Roles y Archivo de Configuración para más información.

    La promoción automática de nodos ocurre solo cuando se elimina un nodo del plano de control del clúster. Esto no incluye situaciones en las que un nodo se vuelve no disponible debido a fallos en las comprobaciones de salud. El nodo no saludable mantiene su rol.

  • El clúster tiene tres nodos de plano de control y no tiene nodos de trabajo.

    Debes añadir un nuevo nodo al clúster antes de eliminar un nodo del plano de control. Esto asegura que el clúster siempre tenga tres nodos de plano de control y que se pueda formar un quórum incluso si falla un nodo del plano de control.

  • El clúster solo tiene dos nodos de plano de control y no tiene nodos de trabajo.

    Eliminar un nodo del plano de control en esta situación no se recomienda porque los datos de etcd no se replican en un clúster de un solo nodo. La falla de un solo nodo puede hacer que etcd pierda su quórum y apague el clúster.

2. Comprueba el estado de los volúmenes.

  1. Accede a la interfaz SUSE Storage incrustada.

  2. Ve a la pantalla de Volumen.

  3. Verifica que el estado de todos los volúmenes sea Saludable.

3. Desaloja réplicas del nodo que se va a eliminar.

  1. Accede a la interfaz SUSE Storage incrustada.

  2. Ve a la pantalla Nodo.

  3. Selecciona el nodo que deseas eliminar, haz clic en el icono en la columna Operación, y luego selecciona Editar nodo y discos.

  4. Configure los ajustes siguientes:

    • Programación de Nodos: Selecciona Deshabilitar.

    • Desalojo Solicitado Selecciona Verdadero.

  5. Haz clic en Guardar.

  6. Regresa a la pantalla Nodo y verifica que el valor de Réplicas para el nodo a eliminar sea 0.

La expulsión no se puede completar si los nodos restantes no pueden aceptar réplicas del nodo a eliminar. En este caso, algunos volúmenes permanecerán en estado Degraded hasta que añadas más nodos al clúster.

4. Gestionar máquinas virtuales no migrables

Verifique si hay alguna máquina virtual no migrable.

  • Cree una copia de seguridad o una instantánea para cada máquina virtual no migrable.

  • Puede eliminar los volúmenes/dispositivos específicos del nodo y los selectores de nodo para permitir que las máquinas virtuales se programen en otros nodos.

    Como el nodo actual va a ser eliminado, las máquinas virtuales no guardadas/no migradas se perderán.
  • Detenga manualmente las máquinas virtuales no migrables restantes.

5. Expulse cargas de trabajo del nodo a eliminar.

Puede habilitar el Modo de Mantenimiento en el nodo para migrar automáticamente las VMs y cargas de trabajo. También puede migrar manualmente en vivo las VMs a otros nodos.

Todas las cargas de trabajo han sido expulsadas con éxito si el estado del nodo es Mantenimiento.

node-maintain-completed.png

Si un clúster tiene solo dos nodos de plano de control, SUSE Virtualization no le permite habilitar el Modo de Mantenimiento en ningún nodo. Puede drenar manualmente el nodo a eliminar utilizando el siguiente comando:

kubectl drain <node_name> --force --ignore-daemonsets --delete-local-data --pod-selector='app!=csi-attacher,app!=csi-provisioner'

De nuevo, eliminar un nodo de plano de control en esta situación es no recomendado porque los datos de etcd no están replicados. La falla de un solo nodo puede hacer que etcd pierda su quórum y apague el clúster.

6. Elimina los servicios de RKE2 y apaga el nodo.

  1. Inicie sesión en el nodo utilizando la cuenta root.

  2. Ejecute el script /opt/rke2/bin/rke2-uninstall.sh para eliminar los servicios de RKE2 que se ejecutan en el nodo.

  3. Apague el nodo.

7. Elimine el nodo.

  1. En la interfaz, vaya a la pantalla de Hosts.

  2. Localice el nodo que desea eliminar y luego haga clic en ⋮ → Eliminar.

    delete node

Hay un problema conocido sobre la eliminación forzada del nodo. Una vez resuelto, puede omitir este paso.

Gestión de funciones

Los problemas de hardware pueden obligarle a reemplazar el nodo de gestión. SUSE Virtualization mejora el proceso introduciendo los siguientes roles:

  • Gestión: Permite que un nodo sea priorizado cuando SUSE Virtualization promueve nodos a nodos de gestión.

  • Testigo: Restringe a un nodo a ser un nodo testigo (solo funciona como un nodo etcd) en un clúster específico.

  • Trabajador: Restringe a un nodo a ser un nodo trabajador (nunca promovido a nodo de gestión) en un clúster específico.

SUSE Virtualization actualmente permite solo un nodo testigo en el clúster.

Para más información sobre la asignación de roles a nodos, consulte Instalación ISO.

Gestión de múltiples discos

Añadir discos adicionales

Los usuarios pueden ver y añadir múltiples discos como volúmenes de datos adicionales desde la página de edición del host.

  1. Vaya a la página de Hosts.

  2. En el nodo que desea modificar, haga clic en ⋮ → Editar configuración.

    Editar Configuración
  3. Selecciona la pestaña Almacenamiento y haz clic en Añadir Disco.

    Añadir Discos

    SUSE Virtualization no soporta añadir particiones como discos adicionales. Si deseas añadirlo como un disco adicional, asegúrate de eliminar todas las particiones primero (por ejemplo, usando fdisk).

  4. Selecciona un aprovisionador para el disco.

    • LonghornV1 (CSI): Este es el aprovisionador por defecto.

      Provisioner LonghornV1

      Debes establecer Forzar Formato a si el dispositivo de bloque nunca ha sido forzado a formatear.

      Forzar Formato
    • LVM: Selecciona este aprovisionador si deseas usar Controlador CSI LVM (Experimental) para crear volúmenes persistentes para tus cargas de trabajo.

      Provisioner LVM
  5. Haz clic en Guardar.

  6. En la pantalla de detalles del host, verifica que los discos se hayan añadido y que se haya establecido el aprovisionador correcto.

    También puedes añadir etiquetas de almacenamiento si deseas que los datos del volumen SUSE Storage se almacenen en nodos o discos específicos. Las etiquetas de almacenamiento solo se pueden usar con los aprovisionadores LonghornV1 (CSI) y LonghornV2 (CSI).

    Etiqueta de disco 01
    Etiqueta de disco 02

Para que SUSE Virtualization identifique los discos, cada disco necesita tener un WWN único. De lo contrario, SUSE Virtualization se negará a añadir el disco. Si tu disco no tiene un WWN, puedes formatearlo con el sistema de archivos EXT4 para ayudar a SUSE Virtualization a reconocer el disco.

+

Si estás probando SUSE Virtualization en un entorno QEMU, necesitarás usar QEMU v6.0 o posterior. Las versiones anteriores de QEMU siempre generarán el mismo WWN para la emulación de discos NVMe. Esto hará que SUSE Virtualization no añada los discos adicionales, como se explicó anteriormente. Sin embargo, aún puedes añadir un disco virtual con el controlador SCSI. La información del WWN podría añadirse manualmente junto con la operación de adjuntar el disco. Para más detalles, por favor consulta el guion.

Etiquetas de almacenamiento

La función de etiquetas de almacenamiento permite que solo ciertos nodos o discos se utilicen para almacenar datos de volumen SUSE Storage. Por ejemplo, los datos sensibles al rendimiento pueden utilizar solo los discos de alto rendimiento que pueden etiquetarse como fast, ssd o nvme, o solo los nodos de alto rendimiento etiquetados como baremetal.

Esta función admite tanto discos como nodos.

Configuración

Las etiquetas se pueden configurar a través de la interfaz de usuario SUSE Virtualization en la página del host:

  1. Haz clic en Hosts -> Edit Config -> Storage

  2. Haz clic en Add Host/Disk Tags para empezar a escribir y pulsa enter para añadir nuevas etiquetas.

  3. Haz clic en Save para actualizar etiquetas.

  4. En la página StorageClasses, crea una nueva clase de almacenamiento y selecciona esas etiquetas definidas en los campos Node Selector y Disk Selector.

Todos los volúmenes programados existentes en el nodo o disco no se verán afectados por las nuevas etiquetas.

Cuando se especifican múltiples etiquetas para un volumen, el disco y los nodos (a los que pertenece el disco) deben tener todas las etiquetas especificadas para ser utilizables.

Eliminar discos

Antes de eliminar un disco, primero debes desalojar las réplicas SUSE Storage en el disco.

Los datos de la réplica se reconstruirán automáticamente en otro disco para mantener la alta disponibilidad.

Identifica el disco a eliminar

  1. Ve a la página Hosts.

  2. En el nodo que contiene el disco, selecciona el nombre del nodo y ve a la pestaña Almacenamiento.

  3. Encuentra el disco que deseas eliminar. Supongamos que queremos eliminar /dev/sdb, y el punto de montaje del disco es /var/lib/harvester/extra-disks/1b805b97eb5aa724e6be30cbdb373d04.

Encuentra el disco a eliminar

Desaloja réplicas (SUSE Storage panel de control)

  1. Por favor, sigue esta sesión para habilitar el panel de control SUSE Storage integrado.

  2. Visita el panel de control SUSE Storage y ve a la página Nodo.

  3. Expande el nodo que contiene el disco. Confirma que el punto de montaje /var/lib/harvester/extra-disks/1b805b97eb5aa724e6be30cbdb373d04 está en la lista de discos.

    Verifica el disco a eliminar
  4. Selecciona Editar nodo y discos.

    Editar nodo y discos
  5. Desplázate hasta el disco que deseas eliminar.

    • Establece Scheduling en Disable.

    • Establece Eviction Requested en True.

    • Selecciona Guardar. No selecciones el icono de eliminar.

      Desalojar disco
  6. El disco será deshabilitado. Por favor, espera hasta que el recuento de réplicas del disco sea 0 para proceder con la eliminación del disco.

    Espera réplicas

Elimina el disco

  1. Ve a la página Hosts.

  2. En el nodo que contiene el disco, selecciona ⋮ → Editar Config.

  3. Ve a la pestaña Almacenamiento y selecciona x para eliminar el disco.

    Eliminar disco
  4. Selecciona Guardar para eliminar el disco.

Restricciones de Distribución de Topología

Las etiquetas de nodo se utilizan para identificar los dominios de topología en los que se encuentra cada nodo. Puedes configurar etiquetas como topology.kubernetes.io/zone en la interfaz de usuario SUSE Virtualization.

  1. Ve a Hosts.

  2. Selecciona el nodo objetivo y luego selecciona ⋮ → Editar Config.

  3. En la pestaña Etiquetas, haz clic en Añadir Etiqueta y luego especifica la etiqueta topology.kubernetes.io/zone y un valor.

  4. Haz clic en Guardar.

La etiqueta se sincroniza automáticamente con el nodo SUSE Storage correspondiente.

Hugepages

Los hugepages mejoran la gestión de memoria en Linux al permitir que el núcleo de Linux asigne memoria en bloques significativamente más grandes que el predeterminado de 4 KB. Tamaños de página más grandes mejoran la eficiencia al reducir el tiempo de CPU requerido para que el núcleo de Linux procese las asignaciones de memoria. Esto, a su vez, puede aumentar el rendimiento general del sistema.

Existen dos tipos de hugepages:

  • Persistente o estática: Pre-asignado en función de los parámetros de arranque del núcleo de Linux relevantes o configuraciones de SUSE Virtualization.

  • Anónimo o transparente: Asignado y desasignado automáticamente por el núcleo de Linux.

Puedes ver información sobre la asignación actual de hugepages para cada nodo.

  1. En la interfaz de usuario SUSE Virtualization, ve a la pantalla Hosts.

  2. Haz clic en el nodo objetivo, luego selecciona la pestaña Hugepages.

La información en la pestaña Hugepages se divide en dos secciones:

  • Meminfo: Muestra la cantidad total de memoria en uso para hugepages anónimos (transparentes), el tamaño de hugepage por defecto y detalles sobre hugepages persistentes (estáticas).

    El campo Anonymous Hugepages (bytes) normalmente muestra un valor grande, reflejando la RAM utilizada automáticamente por el núcleo para hugepages transparentes.

    Por el contrario, el campo Total Hugepages, que representa hugepages asignados estáticamente, normalmente se mantiene en 0. Sin embargo, si el motor de datos Longhorn V2 está habilitado, este valor cambia a 1024.

  • Transparent Hugepages: Muestra la configuración actual de hugepages transparentes.

    La siguiente tabla describe las opciones y los valores por defecto para cada configuración:

    Opción Valores admitidos Valor por defecto

    Habilitado

    Always, Madvise, Never

    Always

    Shared Memory Enabled

    Always, Within Size, Advise, Never, Deny, Force

    Never

    Defragmentación

    Always, Defer, Defer+Madvise, Madvise, Never

    Madvise

    Puedes modificar estas configuraciones para cada nodo seleccionando ⋮ → Editar Config y luego haciendo clic en la pestaña Hugepages.

    Para más información sobre las opciones, consulta Soporte de Transparent Hugepage en la documentación del núcleo de Linux.

Modo Ksmtuned

Ksmtuned es una herramienta de automatización de KSM desplegada como un DaemonSet para ejecutar Ksmtuned en cada nodo. Iniciará o detendrá el KSM observando el porcentaje de memoria disponible (es decir, Coeficiente de Umbral). Por defecto, necesitas habilitar manualmente Ksmtuned en la interfaz de usuario de cada nodo. Podrás ver las estadísticas del KSM desde la interfaz de usuario del nodo después de 1-2 minutos.(consulta KSM para más detalles).

Ejecución Rápida

  1. Ve a la página Hosts.

  2. En el nodo que deseas modificar, haz clic en ⋮ → Editar Config.

  3. Selecciona la pestaña Ksmtuned y selecciona Ejecutar en Estrategia de Ejecución.

  4. (Opcional) Puedes modificar Coeficiente de Umbral según sea necesario.

    Editar Ksmtuned
  5. Haz clic en Guardar para actualizar.

  6. Espera alrededor de 1-2 minutos y podrás comprobar sus Estadísticas haciendo clic en la pestaña →Ksmtuned de tu nodo.

    Ver Estadísticas de Ksmtuned

Parámetros

Estrategia de Ejecución:

  • Terminar: Terminar Ksmtuned y KSM. Las VMs aún pueden usar páginas de memoria compartida.

  • Ejecutar: Ejecutar Ksmtuned.

  • Podar: Terminar Ksmtuned y podar las páginas de memoria de KSM.

Coeficiente de Umbral: configura el porcentaje de memoria disponible. Si la memoria disponible es menor que el umbral, se iniciará el KSM; de lo contrario, se detendrá el KSM.

Fusionar entre nodos: especifica si las páginas de diferentes nodos NUMA pueden ser fusionadas.

Modo:

  • Estándar: El modo por defecto. El nodo de control ksmd utiliza aproximadamente el 20% de una sola CPU. Utiliza los siguientes parámetros:

Boost: 0
Decay: 0
Maximum Pages: 100
Minimum Pages: 100
Sleep Time: 20
  • Alto rendimiento: El nodo ksmd utiliza entre el 20% y el 100% de una sola CPU y tiene una mayor eficiencia en el escaneo y la fusión. Utiliza los siguientes parámetros:

Boost: 200
Decay: 50
Maximum Pages: 10000
Minimum Pages: 100
Sleep Time: 20
  • Personalizado: Puedes personalizar la configuración para alcanzar el rendimiento que deseas.

Ksmtuned utiliza los siguientes parámetros para controlar la eficiencia de KSM:

Parámetros Descripción

Mejorar

El número de páginas escaneadas se incrementa cada vez que la memoria disponible es menor que el Coeficiente de Umbral.

Decaimiento

El número de páginas escaneadas se decrementa cada vez que la memoria disponible es mayor que el Coeficiente de Umbral.

Páginas Máximas

Número máximo de páginas por escaneo.

Páginas Mínimas

El número mínimo de páginas por escaneo, también la configuración para la primera ejecución.

Tiempo de Espera (ms)

El intervalo entre dos escaneos, que se calcula con la fórmula (Tiempo de Espera * 16 * 1024 * 1024 / Memoria Total). Mínimo: 10ms.

Por ejemplo, supón que tienes un nodo de memoria de 512GiB que utiliza los siguientes parámetros:

Boost: 300
Decay: 100
Maximum Pages: 5000
Minimum Pages: 1000
Sleep Time: 50

Cuando Ksmtuned se inicia, inicializa pages_to_scan en KSM a 1000 (Páginas Mínimas) y establece sleep_millisecs en 10 (50 * 16 * 1024 * 1024 / 536870912 KiB < 10).

KSM se inicia cuando la memoria disponible cae por debajo del Coeficiente de Umbral. Si detecta que está en ejecución, pages_to_scan se incrementa en 300 (Boost) cada minuto hasta alcanzar 5000 (Páginas Máximas).

KSM se detendrá cuando la memoria disponible esté por encima del Coeficiente de Umbral. Si detecta que está detenido, pages_to_scan se decrementa en 100 (Decaimiento) cada minuto hasta alcanzar 1000 (Páginas Mínimas).

Configuración de NTP

La sincronización de tiempo es un aspecto importante de la arquitectura de clúster distribuido. Debido a esto, SUSE Virtualization proporciona una forma más sencilla de configurar los ajustes de NTP.

SUSE Virtualization soporta la configuración de NTP en la pantalla de Ajustes de la UI SUSE Virtualization (Avanzado > Ajustes). Puedes configurar los ajustes de NTP para todo el clúster SUSE Virtualization en cualquier momento, y los ajustes se aplican a todos los nodos del clúster.

harvester ntp settings

Puedes configurar múltiples servidores NTP a la vez.

harvester ntp settings multiple

Puedes comprobar los ajustes en la anotación node.harvesterhci.io/ntp-service en los nodos de Kubernetes:

  • ntpSyncStatus: Estado de la conexión a los servidores NTP (valores posibles: disabled, synced y unsynced)

  • currentNtpServers: Lista de servidores NTP existentes

    $ kubectl get nodes harvester-node-0 -o yaml |yq -e '.metadata.annotations.["node.harvesterhci.io/ntp-service"]'
    {"ntpSyncStatus":"synced","currentNtpServers":"0.suse.pool.ntp.org 1.suse.pool.ntp.org"}
  1. No modifiques el archivo de configuración de NTP en cada nodo. SUSE Virtualization sincronizará automáticamente los ajustes que configuraste en la UI SUSE Virtualization a los nodos.

  2. Si actualizaste SUSE Virtualization desde una versión anterior, la lista ntp-servers en la pantalla de Ajustes estará vacía (ver captura de pantalla). Debes configurar manualmente los ajustes de NTP porque SUSE Virtualization no es consciente de los ajustes anteriores y no puede detectar conflictos.

harvester ntp settings empty

Configuración de nodo nativo de nube

Puede que necesites personalizar uno o más nodos después de instalar SUSE Virtualization. Este proceso generalmente implica actualizar la configuración de tiempo de ejecución y modificar archivos en el directorio /oem de cada nodo para que los cambios persistan después de reiniciar.

Estas personalizaciones se pueden describir en un manifiesto de Kubernetes y luego aplicarse al clúster subyacente utilizando kubectl u otras herramientas centradas en GitOps como SUSE® Rancher Prime: Continuous Delivery.

Las configuraciones incorrectas pueden comprometer la capacidad de un nodo SUSE Virtualization para arrancar, o incluso dañar la estabilidad general del clúster. Puedes prevenir tales problemas leyendo la documentación del kit de herramientas Elemental para aprender a personalizar Elemental correctamente.

Creando un recurso de CloudInit

La personalización del nodo SUSE Virtualization está limitada solo por tu creatividad y por lo que el marcado del kit de herramientas Elemental puede expresar sintácticamente. La documentación, por lo tanto, no puede proporcionar una lista exhaustiva de posibles personalizaciones y casos de uso.

Ejemplo: Quieres añadir una clave SSH autorizada para el usuario rancher por defecto en todos los nodos.

Comienza creando un manifiesto de Kubernetes para un recurso de CloudInit.

file: ssh_access.yaml
apiVersion: node.harvesterhci.io/v1beta1
kind: CloudInit
metadata:
  name: ssh-access
spec:
  matchSelector: {}
  filename: 99_ssh.yaml
  contents: |
    stages:
      network:
        - authorized_keys:
            rancher:
              - ssh-ed25519 AAAA...

Este manifiesto describe un documento cloud-init de Elemental que se aplicará a todos los nodos (porque el campo matchSelector: {} vacío coincide con todo). El documento YAML en el campo .spec.contents se renderizará a /oem/99_ssh.yaml (debido al campo .spec.filename.)

Aplica este ejemplo utilizando el comando kubectl apply -f ssh_access.yaml.

Reinicia los nodos SUSE Virtualization relevantes para que el ejecutor del kit de herramientas Elemental pueda aplicar la nueva configuración al arrancar.

Especificación del recurso de CloudInit

Campo required Descripción

selector de coincidencia

Configuración que te permite especificar los nodos que recibirán los cambios de configuración.

nombre_archivo

Nombre del archivo que aparece en /oem.

contenido

Archivo de estilo cloud-init del kit de herramientas Elemental que se renderizará a un archivo en /oem.

en pausa

No

Cuando se establece en true, el archivo no se actualizará en los nodos a medida que cambie.

El campo matchSelector se puede utilizar para dirigir nodos específicos o grupos de nodos en función de sus etiquetas.

Ejemplo:

matchSelector:
  kubernetes.io/hostname: "harvester-node-1"

Todos los pares clave-valor de etiquetas listados en el campo matchSelector deben coincidir con las etiquetas de los nodos previstos.

En el siguiente ejemplo, matchSelector coincidirá con harvester-node-1 solo si ese nodo también tiene la etiqueta example.com/role con el valor role-a.

matchSelector:
  kubernetes.io/hostname: "harvester-node-1"
  example.com/role: "role-a"

Actualizando un recurso de CloudInit

Puedes usar el comando kubectl edit para actualizar un recurso de CloudInit. Sin embargo, hay una advertencia si el campo matchSelector se actualiza para excluir uno o más nodos de la personalización. Consulta la nota en la sección [Deleting a CloudInit Resource] sobre cómo revertir personalizaciones.

# kubectl edit cloudinit CLOUDINIT_NAME

Eliminando un recurso de CloudInit

Puedes usar el comando kubectl delete para eliminar un recurso de CloudInit del clúster SUSE Virtualization.

# kubectl delete cloudinit CLOUDINIT_NAME

SUSE Virtualization no puede "revertir" personalizaciones descritas anteriormente porque el recurso de CloudInit puede describir cualquier cosa que se pueda expresar como una personalización del kit de herramientas Elemental, incluyendo comandos de shell arbitrarios.

En el ejemplo [Creating a CloudInit Resource], el archivo YAML contiene la sección authorized_keys. Esta es una acción de solo añadir en el kit de herramientas Elemental. Cuando el recurso se cambia o se elimina, el archivo authorized_keys en SUSE Rancher Prime seguirá conteniendo la antigua clave pública.

Eres responsable de modificar o crear un recurso de CloudInit que revierta los cambios (si es necesario) antes de reiniciar el nodo.

Resolución de problemas de implementaciones de CloudInit

Si un documento de cloud-init del kit de herramientas Elemental no aparece en /oem o no contiene los contenidos esperados, el bloque de estado del recurso de CloudInit podría contener pistas útiles.

# kubectl get cloudinit CLOUDINIT_NAME -o yaml
status:
  rollouts:
    harvester-dngmf:
      conditions:
      - lastTransitionTime: "2024-02-28T22:31:23Z"
        message: ""
        reason: CloudInitApplicable
        status: "True"
        type: Applicable
      - lastTransitionTime: "2024-02-28T22:31:23Z"
        message: Local file checksum is the same as the CloudInit checksum
        reason: CloudInitChecksumMatch
        status: "False"
        type: OutOfSync
      - lastTransitionTime: "2024-02-28T22:31:23Z"
        message: 99_ssh.yaml is present under /oem
        reason: CloudInitPresentOnDisk
        status: "True"
        type: Present

Los pod(s) harvester-node-manager en el espacio de nombres harvester-system también pueden contener algunas pistas sobre por qué no está renderizando un archivo a un nodo. Este pod es parte de un daemonset, por lo que puede ser útil comprobar el pod que se está ejecutando en el nodo de interés.

Consola remota

Puedes configurar la URL de la consola para la gestión remota del servidor. Esta consola es particularmente útil en entornos donde el acceso físico es limitado.

  1. En la interfaz de usuario SUSE Virtualization, ve a Hosts.

  2. Localiza el host de destino y luego selecciona ⋮ → Editar Config.

    remote console config
  3. Especifica la URL de la Consola y luego haz clic en Guardar.

    Ejemplo (con HPE iLO):

    remote console url
  4. Haz clic en Consola para acceder al servidor remoto.

    remote console button

Rotación de certificados caducados

Si los certificados RKE2 han caducado, no puedes usar la configuración auto-rotate-rke2-certificates para rotarlos. La configuración solo funciona cuando el clúster (cluster.provisioning) está marcado como Ready.

> kubectl get cluster.provisioning -n fleet-local local -o yaml | yq -e '.status.conditions[] | select(.type=="Ready")'
lastUpdateTime: "2025-10-22T06:41:33Z"
status: "True"
type: Ready

Si el valor del campo status es False, debes rotar manualmente los certificados siguiendo estos pasos en cada nodo:

  1. Inicia sesión en el nodo utilizando la cuenta root.

  2. Detén el servicio RKE2.

    • Nodos de gestión

      systemctl stop rke2-server
    • Nodos de trabajo

      systemctl stop rke2-agent
  3. Rota los certificados RKE2.

    /opt/rke2/bin/rke2 certificate rotate
  4. Inicia el servicio RKE2.

    • Nodos de gestión

      systemctl start rke2-server
    • Nodos de trabajo

      systemctl start rke2-agent
  5. Reinicia rancher-system-agent el servicio.

    systemctl restart rancher-system-agent