SUSE Edgeドキュメント|ヒントとコツ|Metal3

32 Metal3

32.1 BareMetalHostの選択とクラスタへの関連付け

Metalˆ3ˆクラスタオブジェクトとそれに対応する関連オブジェクトが作成されると、どのBareMetalHostをクラスタに含めるかを選択するプロセスが実行されます。 このプロセスでは、標準のKubernetesラベルとセレクタを使用して、BareMetalHostを特定のMetal3MachineTemplateに関連付けます。

たとえば、各BareMetalHostはそのプロパティと対象クラスタを特定するためにラベル付けされます(例: クラスタロール、クラスタ名、場所など)。

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

次に、Metal3MachineTemplateオブジェクトはspec.hostSelectorフィールドを使用して、目的のBareMetalHostと一致させます。

matchLabels (キーと値の完全一致用)とmatchExpressions (より複雑なルール用)の両方を使用できます。

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>
注記
注記

Kubernetesネームスペースを使用して、さまざまなオブジェクトをより適切に整理することもできます。

32.2 古いEFIブートエントリのクリーンアップ

UEFIブートマネージャには、もう必要ないと思われる古いオペレーティングシステムの複数のエントリが含まれている場合があります(特にホストが複数回再プロビジョニングされた場合)。 これらの古いエントリは、次のいずれかの手順に従ってクリーンアップできます。

  • BIOS/EFIセットアップインタフェース上で直接削除します(正確な手順はハードウェアによって異なります)。

  • UEFI bcfgシェルを次のように実行します。

    # 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.
  • Linuxシステム上でefibootmgrを次のように使用します。

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

このプロセスによってEFIシステムパーティション(ESP)に孤立したファイルが残る場合があります。これらのファイルは通常、ベンダによって命名されたサブディレクトリ(例: EFI/opensuseEFI/Microsoft)にあります。 これらのファイルは一般的に無害ですが、過剰なスペースを消費する場合は、新しいOSのインストールやブートマネージャの更新を妨げる場合があるため、削除する必要があります。 削除するにはESPを明示的にマウントする必要がある場合があり、通常Linuxシステムで/boot/efi/EFIとしてマウントされます。