Documentación de SUSE Edge|Consejos y trucos|Metal3

32 Metal3

32.1 Selección de BareMetalHost y asociación de clúster

Después de crear un objeto de clúster de Metal³ y sus objetos asociados correspondientes, se realiza un proceso para elegir qué BareMetalHost formará parte del clúster. Este proceso conecta un host BareMetalHost con una plantilla Metal3MachineTemplate específica mediante etiquetas de Kubernetes y selectores estándares.

Como ejemplo, cada host BareMetalHost se etiqueta para identificar sus propiedades y el clúster previsto (por ejemplo, la función y el nombre del clúster, la ubicación, etc.):

apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
  name: mynode1
  labels:
    cluster-role: control-plane
    cluster: foobar
    location: madrid
    datacenter: xyz
<snip>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
  name: mynode2
  labels:
    cluster-role: worker
    cluster: foobar
    location: madrid
    datacenter: xyz
<snip>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
  name: mynode3
  labels:
    cluster-role: worker
    cluster: foobar2
    location: madrid
    datacenter: xyz
<snip>
...

A continuación, el objeto Metal3MachineTemplate usa el campo spec.hostSelector para coincidir con el host BareMetalHost deseado.

Se pueden usar tanto matchLabels (para la coincidencia exacta de clave-valor) como matchExpressions (para usar reglas más complejas):

apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3MachineTemplate
metadata:
  name: foobar-cluster-controlplane
  namespace: mynamespace
spec:
  template:
    spec:
      hostSelector:
        matchLabels:
          cluster-role: control-plane
          cluster: foobar
<snip>
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3MachineTemplate
metadata:
  name: foobar-cluster-worker
  namespace: mynamespace
spec:
  template:
    spec:
      hostSelector:
        matchExpressions:
          - { key: cluster-role, operator: In, values: [worker] }
          - { key: cluster, operator: In, values: [foobar] }
<snip>
Nota
Nota

También se pueden usar espacios de nombres de Kubernetes para organizar mejor los distintos objetos.

32.2 Limpieza de entradas antiguas de arranque EFI

A veces, el gestor de arranque UEFI contiene varias entradas para sistemas operativos antiguos que probablemente ya no sean necesarias (especialmente para hosts que se han reaprovisionado varias veces). Puede borrar esas entradas antiguas con uno de estos procedimientos:

  • Elimínelas directamente en la interfaz de configuración de BIOS/EFI (el procedimiento exacto dependerá del hardware).

  • Ejecute la shell bcfg de UEFI:

    # List the entries
    bcfg boot dump -b
    # Delete entry number X
    bcfg boot rm X
    # X is the number associated the entry to remove. For example, if the entry is "Boot0002 foobar", then X is 2.
  • Use efibootmgr en un sistema Linux:

    # List the entries
    efibootmgr -v
    # Delete entry number X
    efibootmgr -b X -B

El proceso puede dejar archivos huérfanos en la partición del sistema EFI (ESP), que suelen encontrarse en subdirectorios con nombres asignados por el proveedor (por ejemplo, EFI/opensuse o EFI/Microsoft). Aunque estos archivos no suelen dar problemas, deben eliminarse si ocupan demasiado espacio, ya que pueden impedir la instalación de un nuevo sistema operativo o la actualización del gestor de arranque. Para la eliminación puede ser necesario montar explícitamente la ESP, que normalmente se monta como /boot/efi/EFI en los sistemas Linux.