5.2.5. AWS でのカスタム /var パーティションを持つ新規 RHCOS ワーカーノードの追加


OpenShift Container Platform は、ブートストラップ時に処理されるマシン設定を使用したインストール時のデバイスのパーティション設定をサポートします。ただし、/var パーティション設定を使用する場合は、デバイス名はインストール時に決定する必要があり、変更することはできません。デバイス命名スキーマが異なる場合は、異なるインスタンスタイプをノードとして追加することはできません。たとえば、/var パーティションを m4.large インスタンスのデフォルトの AWS デバイス名 dev/xvdb で設定した場合、m5.large インスタンスはデフォルトで /dev/nvme1n1 デバイスを使用するため、AWS m5.large インスタンスを直接追加することはできません。異なる命名スキーマにより、デバイスはパーティション設定に失敗する可能性があります。

本セクションの手順では、インストール時に設定したものとは異なるデバイス名を使用するインスタンスと共に、新規の Red Hat Enterprise Linux CoreOS (RHCOS) コンピュートノードを追加する方法を説明します。カスタムユーザーデータシークレットを作成し、新規コンピュートマシンセットを設定します。これらの手順は AWS クラスターに固有のものです。この原則は、他のクラウドデプロイメントにも適用されます。ただし、デバイスの命名スキーマは他のデプロイメントでは異なり、ケースごとに決定する必要があります。

手順

  1. コマンドラインで、openshift-machine-api namespace に移動します。

    $ oc project openshift-machine-api
  2. worker-user-data シークレットから新規シークレットを作成します。

    1. シークレットの userData セクションをテキストファイルにエクスポートします。

      $ oc get secret worker-user-data --template='{{index .data.userData | base64decode}}' | jq > userData.txt
    2. テキストファイルを編集して、新規ノードに使用するパーティションの storagefilesystems、および systemd スタンザを追加します。必要に応じて Ignition 設定パラメーター を指定できます。

      注記

      ignition スタンザの値は変更しないでください。

      {
        "ignition": {
          "config": {
            "merge": [
              {
                "source": "https:...."
              }
            ]
          },
          "security": {
            "tls": {
              "certificateAuthorities": [
                {
                  "source": "data:text/plain;charset=utf-8;base64,.....=="
                }
              ]
            }
          },
          "version": "3.2.0"
        },
        "storage": {
          "disks": [
            {
              "device": "/dev/nvme1n1", 
      1
      
              "partitions": [
                {
                  "label": "var",
                  "sizeMiB": 50000, 
      2
      
                  "startMiB": 0 
      3
      
                }
              ]
            }
          ],
          "filesystems": [
            {
              "device": "/dev/disk/by-partlabel/var", 
      4
      
              "format": "xfs", 
      5
      
              "path": "/var" 
      6
      
            }
          ]
        },
        "systemd": {
          "units": [ 
      7
      
            {
              "contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var\nWhat=/dev/disk/by-partlabel/var\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n",
              "enabled": true,
              "name": "var.mount"
            }
          ]
        }
      }
      1
      AWS ブロックデバイスへの絶対パスを指定します。
      2
      データパーティションのサイズをメビバイト単位で指定します。
      3
      メビバイト単位でパーティションの開始点を指定します。データパーティションをブートディスクに追加する場合は、最小値の 25000 MB (メビバイト) が推奨されます。ルートファイルシステムは、指定したオフセットまでの利用可能な領域をすべて埋めるためにサイズを自動的に変更します。値の指定がない場合や、指定した値が推奨される最小値よりも小さい場合、生成されるルートファイルシステムのサイズは小さ過ぎるため、RHCOS の再インストールでデータパーティションの最初の部分が上書きされる可能性があります。
      4
      /var パーティションへの絶対パスを指定します。
      5
      ファイルシステムのフォーマットを指定します。
      6
      Ignition がルートファイルシステムがマウントされる場所に対して相対的な場所で実行される、ファイルシステムのマウントポイントを指定します。これは実際のルートにマウントする場所と同じである必要はありませんが、同じにすることが推奨されます。
      7
      /dev/disk/by-partlabel/var デバイスを /var パーティションにマウントする systemd マウントユニットを定義します。
    3. disableTemplating セクションを work-user-data シークレットからテキストファイルに展開します。

      $ oc get secret worker-user-data --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
    4. 2 つのテキストファイルから新しいユーザーデータのシークレットファイルを作成します。このユーザーデータのシークレットは、userData.txt ファイルの追加のノードパーティション情報を新規作成されたノードに渡します。

      $ oc create secret generic worker-user-data-x5 --from-file=userData=userData.txt --from-file=disableTemplating=disableTemplating.txt
  3. 新規ノードの新規コンピュートマシンセットを作成します。

    1. AWS 向けに設定される新規のコンピュートマシンセット YAML ファイルを、以下のように作成します。必要なパーティションおよび新規に作成されたユーザーデータシークレットを追加します。

      ヒント

      既存のコンピュートマシンセットをテンプレートとして使用し、新規ノード用に必要に応じてパラメーターを変更します。

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: auto-52-92tf4
        name: worker-us-east-2-nvme1n1 
      1
      
        namespace: openshift-machine-api
      spec:
        replicas: 1
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-cluster: auto-52-92tf4
            machine.openshift.io/cluster-api-machineset: auto-52-92tf4-worker-us-east-2b
        template:
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: auto-52-92tf4
              machine.openshift.io/cluster-api-machine-role: worker
              machine.openshift.io/cluster-api-machine-type: worker
              machine.openshift.io/cluster-api-machineset: auto-52-92tf4-worker-us-east-2b
          spec:
            metadata: {}
            providerSpec:
              value:
                ami:
                  id: ami-0c2dbd95931a
                apiVersion: awsproviderconfig.openshift.io/v1beta1
                blockDevices:
                - DeviceName: /dev/nvme1n1 
      2
      
                  ebs:
                    encrypted: true
                    iops: 0
                    volumeSize: 120
                    volumeType: gp2
                - DeviceName: /dev/nvme1n2 
      3
      
                  ebs:
                    encrypted: true
                    iops: 0
                    volumeSize: 50
                    volumeType: gp2
                credentialsSecret:
                  name: aws-cloud-credentials
                deviceIndex: 0
                iamInstanceProfile:
                  id: auto-52-92tf4-worker-profile
                instanceType: m6i.large
                kind: AWSMachineProviderConfig
                metadata:
                  creationTimestamp: null
                placement:
                  availabilityZone: us-east-2b
                  region: us-east-2
                securityGroups:
                - filters:
                  - name: tag:Name
                    values:
                    - auto-52-92tf4-worker-sg
                subnet:
                  id: subnet-07a90e5db1
                tags:
                - name: kubernetes.io/cluster/auto-52-92tf4
                  value: owned
                userDataSecret:
                  name: worker-user-data-x5 
      4
      1
      新規ノードの名前を指定します。
      2
      AWS ブロックデバイスへの絶対パスを指定します (ここでは暗号化された EBS ボリューム)。
      3
      オプション: 追加の EBS ボリュームを指定します。
      4
      ユーザーデータシークレットファイルを指定します。
    2. コンピュートマシンセットを作成します。

      $ oc create -f <file-name>.yaml

      マシンが利用可能になるまでに少し時間がかかる場合があります。

  4. 新しいパーティションとノードが作成されたことを確認します。

    1. コンピュートマシンセットが作成されていることを確認します。

      $ oc get machineset

      出力例

      NAME                                               DESIRED   CURRENT   READY   AVAILABLE   AGE
      ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1a        1         1         1       1           124m
      ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1b        2         2         2       2           124m
      worker-us-east-2-nvme1n1                           1         1         1       1           2m35s 
      1

      1
      これが新しいコンピュートマシンセットです。
    2. 新規ノードが作成されていることを確認します。

      $ oc get nodes

      出力例

      NAME                           STATUS   ROLES    AGE     VERSION
      ip-10-0-128-78.ec2.internal    Ready    worker   117m    v1.31.3
      ip-10-0-146-113.ec2.internal   Ready    master   127m    v1.31.3
      ip-10-0-153-35.ec2.internal    Ready    worker   118m    v1.31.3
      ip-10-0-176-58.ec2.internal    Ready    master   126m    v1.31.3
      ip-10-0-217-135.ec2.internal   Ready    worker   2m57s   v1.31.3 
      1
      
      ip-10-0-225-248.ec2.internal   Ready    master   127m    v1.31.3
      ip-10-0-245-59.ec2.internal    Ready    worker   116m    v1.31.3

      1
      これは新しいノードです。
    3. カスタム /var パーティションが新しいノードに作成されていることを確認します。

      $ oc debug node/<node-name> -- chroot /host lsblk

      以下に例を示します。

      $ oc debug node/ip-10-0-217-135.ec2.internal -- chroot /host lsblk

      出力例

      NAME        MAJ:MIN  RM  SIZE RO TYPE MOUNTPOINT
      nvme0n1     202:0    0   120G  0 disk
      |-nvme0n1p1 202:1    0     1M  0 part
      |-nvme0n1p2 202:2    0   127M  0 part
      |-nvme0n1p3 202:3    0   384M  0 part /boot
      `-nvme0n1p4 202:4    0 119.5G  0 part /sysroot
      nvme1n1     202:16   0    50G  0 disk
      `-nvme1n1p1 202:17   0  48.8G  0 part /var 
      1

      1
      nvme1n1 デバイスが /var パーティションにマウントされます。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る