2.2.8. Machine sets that deploy machines with ultra disks as data disks
Ultra ディスクと共にマシンをデプロイする Azure で実行されるマシンセットを作成できます。Ultra ディスクは、最も要求の厳しいデータワークロードでの使用を目的とした高性能ストレージです。
Azure ウルトラディスクに支えられたストレージクラスに動的にバインドし、それらを Pod にマウントする永続ボリューム要求 (PVC) を作成することもできます。
データディスクは、ディスクスループットまたはディスク IOPS を指定する機能をサポートしていません。これらのプロパティーは、PVC を使用して設定できます。
2.2.8.1. マシンセットを使用した Ultra ディスクを持つマシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
マシンセットの YAML ファイルを編集することで、Azure 上に Ultra ディスクと共にマシンをデプロイできます。
前提条件
- 既存の Microsoft Azure クラスターがある。
手順
次のコマンドを実行して、
workerデータシークレットを使用してopenshift-machine-apinamespace にカスタムシークレットを作成します。$ oc -n openshift-machine-api \ get secret <role>-user-data \1 --template='{{index .data.userData | base64decode}}' | jq > userData.txt2 テキストエディターで、
userData.txtファイルを開き、ファイル内の最後の}文字を見つけます。-
直前の行に、
,を追加します。 ,の後に新しい行を作成し、以下の設定内容を追加します。"storage": { "disks": [1 { "device": "/dev/disk/azure/scsi1/lun0",2 "partitions": [3 { "label": "lun0p1",4 "sizeMiB": 1024,5 "startMiB": 0 } ] } ], "filesystems": [6 { "device": "/dev/disk/by-partlabel/lun0p1", "format": "xfs", "path": "/var/lib/lun0p1" } ] }, "systemd": { "units": [7 { "contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var/lib/lun0p1\nWhat=/dev/disk/by-partlabel/lun0p1\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n",8 "enabled": true, "name": "var-lib-lun0p1.mount" } ] }- 1
- ウルトラディスクとしてノードに接続するディスクの設定の詳細。
- 2
- 使用しているマシンセットの
dataDisksスタンザで定義されているlun値を指定します。たとえば、マシンセットにlun:0が含まれている場合は、lun0を指定します。この設定ファイルで複数の"disks"エントリーを指定することにより、複数のデータディスクを初期化できます。複数の"disks"エントリーを指定する場合は、それぞれのlun値がマシンセットの値と一致することを確認してください。 - 3
- ディスク上の新しいパーティションの設定の詳細。
- 4
- パーティションのラベルを指定します。
lun0の最初のパーティションにlun0p1などの階層名を使用すると便利な場合があります。 - 5
- パーティションの合計サイズを MiB で指定します。
- 6
- パーティションをフォーマットするときに使用するファイルシステムを指定します。パーティションラベルを使用して、パーティションを指定します。
- 7
- 起動時にパーティションをマウントする
systemdユニットを指定します。パーティションラベルを使用して、パーティションを指定します。この設定ファイルで複数の"partitions"エントリーを指定することにより、複数のパーティションを作成できます。複数の"partitions"エントリーを指定する場合は、それぞれにsystemdユニットを指定する必要があります。 - 8
Whereには、storage.filesystems.pathの値を指定します。Whatには、storage.filesystems.deviceの値を指定します。
-
直前の行に、
次のコマンドを実行して、無効化テンプレート値を
disableTemplating.txtというファイルに抽出します。$ oc -n openshift-machine-api get secret <role>-user-data \1 --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt- 1
<role>をworkerに置き換えます。
次のコマンドを実行して、
userData.txtファイルとdisableTemplating.txtファイルを組み合わせてデータシークレットファイルを作成します。$ oc -n openshift-machine-api create secret generic <role>-user-data-x5 \1 --from-file=userData=userData.txt \ --from-file=disableTemplating=disableTemplating.txt- 1
<role>-user-data-x5には、シークレットの名前を指定します。<role>をworkerに置き換えます。
既存の Azure
MachineSetカスタムリソース (CR) をコピーし、次のコマンドを実行して編集します。$ oc edit machineset <machine_set_name><machine_set_name>は、Ultra ディスクを使用してマシンをプロビジョニングするマシンセットです。示された位置に次の行を追加します。
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet spec: template: spec: metadata: labels: disk: ultrassd1 providerSpec: value: ultraSSDCapability: Enabled2 dataDisks:3 - nameSuffix: ultrassd lun: 0 diskSizeGB: 4 deletionPolicy: Delete cachingType: None managedDisk: storageAccountType: UltraSSD_LRS userDataSecret: name: <role>-user-data-x54 次のコマンドを実行して、更新された設定を使用してマシンセットを作成します。
$ oc create -f <machine_set_name>.yaml
検証
次のコマンドを実行して、マシンが作成されていることを確認します。
$ oc get machinesマシンは
Running状態になっているはずです。実行中でノードが接続されているマシンの場合、次のコマンドを実行してパーティションを検証します。
$ oc debug node/<node_name> -- chroot /host lsblkこのコマンドでは、
oc debug node/<node_name>によりノード<node_name>上でデバッグシェルを起動し、--を指定してコマンドを渡します。渡されたコマンドchroot /hostは、基盤となるホスト OS バイナリーへのアクセスを提供し、lsblkは、ホスト OS マシンに接続されているブロックデバイスを表示します。
次のステップ
Pod 内から Ultra ディスクを使用するには、マウントポイントを使用するワークロードを作成します。次の例のような YAML ファイルを作成します。
apiVersion: v1 kind: Pod metadata: name: ssd-benchmark1 spec: containers: - name: ssd-benchmark1 image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - name: lun0p1 mountPath: "/tmp" volumes: - name: lun0p1 hostPath: path: /var/lib/lun0p1 type: DirectoryOrCreate nodeSelector: disktype: ultrassd