32 Metal3 #
32.1 Seleção do BareMetalHost e associação do cluster #
Após a criação de um objeto de cluster Metalˆ3ˆ e dos objetos associados
correspondentes, será realizado um processo para escolher o
BareMetalHost que fará parte do cluster. Esse processo
conecta um BareMetalHost a um
Metal3MachineTemplate específico usando rótulos
do Kubernetes e seletores padrão.
Como exemplo, cada BareMetalHost recebe um rótulo para
identificar as respectivas propriedades e o cluster pretendido (por exemplo,
função do cluster, nome do cluster, local 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>
...Em seguida, o objeto Metal3MachineTemplate usa o campo
spec.hostSelector
para corresponder o BareMetalHost desejado.
É possível usar tanto matchLabels
(para correspondência exata de chave-valor) quanto matchExpressions
(para regras mais complexas):
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>É possível também usar namespaces do kubernetes para organizar melhor os diversos objetos.
32.2 Limpar entradas de boot EFI antigas #
Às vezes, o gerenciador de boot UEFI contém várias entradas de sistemas operacionais mais antigos que, provavelmente, não são mais necessárias (em especial, de hosts provisionados várias vezes). É possível limpar essas entradas antigas seguindo qualquer um destes procedimentos:
Exclua as entradas diretamente pela interface de configuração do BIOS/EFI (o procedimento exato depende do hardware).
Execute o shell UEFI
bcfgcomo:# 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
efibootmgrem um sistema Linux como:# List the entries efibootmgr -v # Delete entry number X efibootmgr -b X -B
O processo pode deixar arquivos órfãos na partição de sistema EFI (ESP), que
costumam ficar em subdiretórios nomeados pelo fornecedor (por exemplo,
EFI/opensuse ou EFI/Microsoft). Em
geral, esses arquivos não são prejudiciais, mas poderão ser excluídos se
consumirem um espaço excessivo, já que isso pode impedir a instalação de um
novo SO ou a atualização de um gerenciador de boot. A remoção pode exigir a
montagem explícita da ESP, normalmente montada como
/boot/efi/EFI nos sistemas Linux.