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>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
bcfgde 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
efibootmgren 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.