4.2. Azure を使用した永続ストレージ
OpenShift Container Platform では、Microsoft Azure Disk ボリュームがサポートされます。Azure を使用して、OpenShift Container Platform クラスターに永続ストレージをプロビジョニングできます。これには、Kubernetes と Azure についてのある程度の理解があることが前提となります。Kubernetes 永続ボリュームフレームワークは、管理者がクラスターのプロビジョニングを永続ストレージを使用して実行できるようにし、ユーザーが基礎となるインフラストラクチャーの知識がなくてもこれらのリソースを要求できるようにします。Azure Disk ボリュームは動的にプロビジョニングできます。永続ボリュームは、単一のプロジェクトまたは namespace にバインドされず、OpenShift Container Platform クラスター全体で共有できます。Persistent volume claim (PVC) はプロジェクトまたは namespace に固有のもので、ユーザーによって要求されます。
OpenShift Container Platform は、Azure Disk ストレージをプロビジョニングするためにデフォルトで in-tree または CSI 以外のドライバーの使用に設定されます。
今後の OpenShift Container Platform バージョンでは、既存の in-tree プラグインを使用してプロビジョニングされるボリュームは、同等の CSI ドライバーに移行される予定です。CSI 自動移行はシームレスに行ってください。移行をしても、永続ボリューム、永続ボリューム要求、ストレージクラスなどの既存の API オブジェクトを使用する方法は変更されません。移行についての詳細は、CSI の自動移行 を参照してください。
完全な移行後、in-tree プラグインは最終的に OpenShift Container Platform の今後のバージョンで削除されます。
インフラストラクチャーにおけるストレージの高可用性は、基礎となるストレージのプロバイダーに委ねられています。
関連情報
4.2.1. Azure ストレージクラスの作成
ストレージクラスを使用すると、ストレージのレベルや使用状況を区別し、記述することができます。ストレージクラスを定義することにより、ユーザーは動的にプロビジョニングされた永続ボリュームを取得できます。
手順
-
OpenShift Container Platform コンソールで、Storage
Storage Classes をクリックします。 - ストレージクラスの概要では、Create Storage Class をクリックします。
表示されるページで必要なオプションを定義します。
- ストレージクラスを参照するための名前を入力します。
- オプションの説明を入力します。
- 回収ポリシーを選択します。
ドロップダウンリストから
kubernetes.io/azure-disk
を選択します。-
ストレージアカウントのタイプを入力します。これは、Azure ストレージアカウントの SKU の層に対応します。有効なオプションは、
Premium_LRS
、Standard_LRS
、StandardSSD_LRS
、およびUltraSSD_LRS
です。 アカウントの種類を入力します。有効なオプションは
shared
、dedicated
およびmanaged
です。重要Red Hat は、ストレージクラスでの
kind: Managed
の使用のみをサポートします。Shared
およびDedicated
の場合、Azure はマネージド外のディスクを作成しますが、OpenShift Container Platform はマシンの OS (root) ディスクの管理ディスクを作成します。ただし、Azure Disk はノードで管理ディスクおよびマネージド外ディスクの両方の使用を許可しないため、Shared
またはDedicated
で作成されたマネージド外ディスクを OpenShift Container Platform ノードに割り当てることはできません。
-
ストレージアカウントのタイプを入力します。これは、Azure ストレージアカウントの SKU の層に対応します。有効なオプションは、
- 必要に応じてストレージクラスの追加パラメーターを入力します。
- Create をクリックしてストレージクラスを作成します。
4.2.2. 永続ボリューム要求 (PVC) の作成
前提条件
ストレージは、ボリュームとして OpenShift Container Platform にマウントされる前に基礎となるインフラストラクチャーになければなりません。
手順
-
OpenShift Container Platform コンソールで、Storage
Persistent Volume Claims をクリックします。 - 永続ボリューム要求 (PVC) の概要で、Create Persistent Volume Claim をクリックします。
表示されるページで必要なオプションを定義します。
- ドロップダウンメニューから以前に作成されたストレージクラスを選択します。
- ストレージ要求の一意の名前を入力します。
- アクセスモードを選択します。これにより、作成されたストレージ要求の読み取り/書き込みアクセスが決定されます。
- ストレージ要求のサイズを定義します。
- Create をクリックして永続ボリューム要求 (PVC) を作成し、永続ボリュームを生成します。
4.2.3. ボリュームのフォーマット
OpenShift Container Platform は、ボリュームをマウントしてコンテナーに渡す前に、永続ボリューム定義の fsType
パラメーターで指定されたファイルシステムがボリュームにあるかどうか確認します。デバイスが指定されたファイルシステムでフォーマットされていない場合、デバイスのデータはすべて消去され、デバイスはそのファイルシステムで自動的にフォーマットされます。
これにより、OpenShift Container Platform がフォーマットされていない Azure ボリュームを初回の使用前にフォーマットするため、それらを永続ボリュームとして使用することが可能になります。
4.2.4. PVC を使用して Ultra ディスクと共にマシンをデプロイするマシンセット
Ultra ディスクと共にマシンをデプロイする Azure で実行されるマシンセットを作成できます。Ultra ディスクは、最も要求の厳しいデータワークロードでの使用を目的とした高性能ストレージです。
in-tree プラグインおよび CSI ドライバーの両方が、Ultra ディスクを有効にするための PVC の使用をサポートします。PVC を作成せずに、データディスクとしての Ultra デイスクと共にマシンをデプロイすることもできます。
関連情報
4.2.4.1. マシンセットを使用した Ultra ディスクを持つマシンの作成
マシンセットの YAML ファイルを編集することで、Azure 上に Ultra ディスクと共にマシンをデプロイできます。
前提条件
- 既存の Microsoft Azure クラスターがある。
手順
既存の 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: ultrassd 1 ... providerSpec: value: ... ultraSSDCapability: Enabled 2 ...
次のコマンドを実行して、更新された設定を使用してマシンセットを作成します。
$ oc create -f <machine-set-name>.yaml
以下の YAML 定義が含まれるストレージクラスを作成します。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ultra-disk-sc 1 parameters: cachingMode: None diskIopsReadWrite: "2000" 2 diskMbpsReadWrite: "320" 3 kind: managed skuname: UltraSSD_LRS provisioner: disk.csi.azure.com 4 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer 5
以下の YAML 定義が含まれる、
ultra-disk-sc
ストレージクラスを参照する永続ボリューム要求 (PVC) を作成します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk 1 spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc 2 resources: requests: storage: 4Gi 3
以下の YAML 定義が含まれる Pod を作成します。
apiVersion: v1 kind: Pod metadata: name: nginx-ultra spec: nodeSelector: disk: ultrassd 1 containers: - name: nginx-ultra image: alpine:latest command: - "sleep" - "infinity" volumeMounts: - mountPath: "/mnt/azure" name: volume volumes: - name: volume persistentVolumeClaim: claimName: ultra-disk 2
検証
次のコマンドを実行して、マシンが作成されていることを確認します。
$ 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
4.2.4.2. Ultra ディスクを有効にするマシンセットのリソースに関するトラブルシューティング
このセクションの情報を使用して、発生する可能性のある問題を理解し、回復してください。
4.2.4.2.1. Ultra ディスクがサポートする永続ボリューム要求 (PVC) をマウントできない
Ultra ディスクでサポートされる永続ボリューム要求 (PVC) のマウントに問題がある場合、Pod は ContainerCreating
状態のままになり、アラートがトリガーされます。
たとえば、additionalCapabilities.ultraSSDEnabled
パラメーターが Pod をホストするノードをサポートするマシンで設定されていない場合、以下のエラーメッセージが表示されます。
StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
この問題を解決するには、以下のコマンドを実行して Pod を記述します。
$ oc -n <stuck_pod_namespace> describe pod <stuck_pod_name>