This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第25章 永続ストレージの例
25.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションでは、一般的なストレージのユースケースを定義するための総合的なな手順について詳しく説明します。以下の例では、永続ボリュームとそのセキュリティーの管理だけでなく、システムのユーザーがボリュームに対する要求を行う方法についても取り上げます。
25.3. Ceph RBD を使用した詳細例 リンクのコピーリンクがクリップボードにコピーされました!
25.3.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、既存の Ceph クラスターを OpenShift Container Platform の永続ストアとして使用する詳細な例を紹介します。ここでは、作業用の Ceph クラスターがすでに設定されていることを前提とします。まだ設定されていない場合は、Red Hat Ceph Storage の概要について参照してください。
Ceph RADOS ブロックデバイスを使用した永続ストレージでは、永続ボリューム (PV)、Persistent Volume Claim (永続ボリューム要求、PVC)、永続ストレージとしての Ceph RBD の使用について説明しています。
oc …
コマンドはすべて OpenShift Container Platform のマスターホストで実行されます。
25.3.2. ceph-common パッケージのインストール リンクのコピーリンクがクリップボードにコピーされました!
ceph-common ライブラリーは、すべてのスケジュール可能な OpenShift Container Platform ノードにインストールする必要があります。
OpenShift Container Platform のオールインワンホストは、Pod のワークロードを実行するために使用されることは多くありません。したがって、これはスケジュール可能なノードに含まれません。
yum install -y ceph-common
# yum install -y ceph-common
25.3.3. Ceph シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
ceph auth get-key
コマンドを Ceph の MON ノードで実行すると、client.admin ユーザーのキー値が以下のように表示されます。
例25.5 Ceph のシークレットの定義
- 1
- この base64 キーは、Ceph の MON ノードの 1 つで
ceph auth get-key client.admin | base64
コマンドを使用して生成されたものであり、出力をコピーし、これをシークレットキーの値として貼り付けています。
シークレット定義を ceph-secret.yaml などのファイルに保存し、シークレットを作成します。
oc create -f ceph-secret.yaml
$ oc create -f ceph-secret.yaml
secret "ceph-secret" created
シークレットが作成されたことを確認します。
oc get secret ceph-secret
# oc get secret ceph-secret
NAME TYPE DATA AGE
ceph-secret Opaque 1 23d
25.3.4. 永続ボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
次に、OpenShift Container Platform で PV オブジェクトを作成する前に、永続ボリュームファイルを定義します。
例25.6 Ceph RBD を使用した永続ボリュームオブジェクトの定義
- 1
- PV の名前。Pod 定義で参照されたり、各種の
oc
ボリュームコマンドで表示されたりします。 - 2
- このボリュームに割り当てられるストレージの量。
- 3
accessModes
は、PV と PVC を一致させるためのラベルとして使用します。現時点で、これらはいずれの形態のアクセス制御も定義しません。ブロックストレージはすべて、単一ユーザーに対して定義されます (非共有ストレージ)。- 4
- 使用するボリュームタイプを定義します。この例では rbd プラグインを定義しています。
- 5
- Ceph モニターの IP アドレスとポートの配列です。
- 6
- 先に定義した Ceph のシークレットです。OpenShift Container Platform から Ceph サーバーへのセキュアな接続を作成するのに使用します。
- 7
- Ceph RBD ブロックデバイスにマウントされるファイルシステムタイプです。
PV の定義を ceph-pv.yaml などのファイルに保存し、永続ボリュームを作成します。
oc create -f ceph-pv.yaml
# oc create -f ceph-pv.yaml
persistentvolume "ceph-pv" created
永続ボリュームが作成されたことを確認します。
oc get pv
# oc get pv
NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
ceph-pv <none> 2147483648 RWO Available 2s
25.3.5. Persistent Volume Claim (永続ボリューム要求) の作成 リンクのコピーリンクがクリップボードにコピーされました!
Persistent Volume Claim (永続ボリューム要求、PVC) では、必要なアクセスモードとストレージ容量を指定します。現時点では、これら 2 つの属性のみに基づいて PVC が 1 つの PV にバインドされます。PV が PVC にバインドされると、その PV は基本的に当該 PVC のプロジェクトに結び付けられ、別の PVC にバインドすることはできません。PV と PVC には 1 対 1 のマッピングが存在します。ただし、同じプロジェクト内の複数の Pod が同じ PVC を使用することは可能です。
例25.7 PVC オブジェクト定義
PVC の定義を ceph-claim.yaml などのファイルに保存し、以下のように PVC を作成します。
- 1
- 要求が ceph-pv PV にバインドされています。
25.3.6. Pod の作成 リンクのコピーリンクがクリップボードにコピーされました!
Pod 定義ファイルまたはテンプレートファイルを使用して Pod を定義できます。以下は、1 つのコンテナーを作成し、Ceph RBD ボリュームを読み書きアクセス用にマウントする Pod 仕様です。
例25.8 Pod オブジェクトの定義
Pod 定義を ceph-pod1.yaml などのファイルに保存し、以下のように Pod を作成します。
- 1
- しばらくすると、Pod が Running 状態になります。
25.3.7. グループ ID と所有者 ID の定義 (オプション) リンクのコピーリンクがクリップボードにコピーされました!
Ceph RBD などのブロックストレージを使用する場合、物理ブロックストレージは Pod の管理対象になります。Pod で定義されたグループ ID は、コンテナー内の Ceph RBD マウントと実際のストレージ自体の両方のグループ ID になります。そのため、通常はグループ ID を Pod 仕様に定義する必要はありません。ただし、グループ ID が必要な場合は、以下の Pod 定義の例に示すように fsGroup
を使用して定義することができます。
25.3.8. ceph-user-secret をプロジェクトのデフォルトとして設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
すべてのプロジェクトで永続ストレージを使用できるようにする場合は、デフォルトのプロジェクトテンプレートを修正する必要があります。デフォルトプロジェクトテンプレートの修正についての詳細は、「デフォルトプロジェクトテンプレートの修正」を参照してください。これをデフォルトプロジェクトテンプレートに追加することで、プロジェクトの作成アクセス権を持つすべてのユーザーが Ceph クラスターにアクセスできるようになります。
例25.10 デフォルトプロジェクトの例
- 1
- 各自のスーパーシークレット Ceph ユーザーキーをここに base64 形式で記述します。「Ceph のシークレットの作成」を参照してください。
25.4. 動的プロビジョニングでの Ceph RBD の使用 リンクのコピーリンクがクリップボードにコピーされました!
25.4.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、既存の Ceph クラスターを OpenShift Container Platform の永続ストレージとして使用する詳細な例を紹介します。ここでは、作業用の Ceph クラスターがすでに設定されていることを前提とします。まだ設定されていない場合は、Red Hat Ceph Storage の概要について参照してください。
「Ceph RADOS ブロックデバイスを使用した永続ストレージ」では、永続ボリューム (PV)、Persistent Volume Claim (永続ボリューム要求、PVC)、永続ストレージとしての Ceph RADOS ブロックデバイス (RBD) の使用方法について説明しています。
-
OpenShift Container Platform のマスターホストで、全
oc
コマンドを実行します。 - OpenShift Container Platform のオールインワンホストは、Pod のワークロードを実行するために使用されることは多くありません。したがって、これはスケジュール可能なノードに含まれません。
25.4.2. 動的ボリューム用プールの作成 リンクのコピーリンクがクリップボードにコピーされました!
最新の ceph-common パッケージをインストールします。
yum install -y ceph-common
yum install -y ceph-common
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ceph-common
ライブラリーは、all schedulable
OpenShift Container Platform ノードにインストールする必要があります。管理者または MON ノードによって、以下のように動的ボリューム用の新規プールが作成されます。
ceph osd pool create kube 1024 ceph auth get-or-create client.kube mon 'allow r, allow command "osd blacklist"' osd 'allow class-read object_prefix rbd_children, allow rwx pool=kube' -o ceph.client.kube.keyring
$ ceph osd pool create kube 1024 $ ceph auth get-or-create client.kube mon 'allow r, allow command "osd blacklist"' osd 'allow class-read object_prefix rbd_children, allow rwx pool=kube' -o ceph.client.kube.keyring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記RBD のデフォルトプールを使用することも可能ですが、このオプションは推奨されません。
25.4.3. 動的な永続ストレージでの既存の Ceph クラスターの使用 リンクのコピーリンクがクリップボードにコピーされました!
動的な永続ストレージに既存の Ceph クラスターを使用するには、以下を実行します。
client.admin 向けに base64 でエンコードされたキーを作成します。
ceph auth get client.admin
$ ceph auth get client.admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph シークレット定義例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow client.admin 用に Ceph シークレットを作成します。
oc create -f ceph-secret.yaml
$ oc create -f ceph-secret.yaml secret "ceph-secret" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットが作成されたことを確認します。
oc get secret ceph-secret
$ oc get secret ceph-secret NAME TYPE DATA AGE ceph-secret kubernetes.io/rbd 1 5d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージクラスを作成します。
oc create -f ceph-storageclass.yaml
$ oc create -f ceph-storageclass.yaml storageclass "dynamic" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph ストレージクラスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ceph が監視する IP アドレスのコンマ区切りの一覧。この値は必須です。
- 2
- Ceph クライアント ID。プール内にイメージを作成する権限があります。デフォルトは
admin
です。 - 3
adminId
のシークレット名。この値は必須です。設定するシークレットにはkubernetes.io/rbd
が含まれる必要があります。- 4
adminSecret
の namespace。デフォルトはdefault
です。- 5
- Ceph RBD プール。デフォルトは
rbd
ですが、この値は推奨されません。 - 6
- Ceph RBD イメージのマッピングに使用される Ceph クライアント ID。デフォルトは
adminId
のシークレット名と同じです。 - 7
- Ceph RBD イメージをマッピングするための
userId
の Ceph シークレット名。PVC と同じ namespace に存在する必要があります。Ceph シークレットが新規プロジェクトのデフォルトとして設定されていない限り、このパラメーターの値を指定する必要があります。
ストレージクラスが作成されたことを確認します。
oc get storageclasses
$ oc get storageclasses NAME TYPE dynamic (default) kubernetes.io/rbd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC オブジェクト定義を作成します。
PVC オブジェクト定義例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC を作成します。
oc create -f ceph-pvc.yaml
$ oc create -f ceph-pvc.yaml persistentvolumeclaim "ceph-claim-dynamic" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC が作成されていて、予想される PV にバインドされていることを確認します。
oc get pvc
$ oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE ceph-claim Bound pvc-f548d663-3cac-11e7-9937-0024e8650c7a 2Gi RWO 1m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod オブジェクト定義を以下のように作成します。
Pod オブジェクトの定義例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f ceph-pod1.yaml
$ oc create -f ceph-pod1.yaml pod "ceph-pod1" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が作成されていることを確認します。
oc get pod
$ oc get pod NAME READY STATUS RESTARTS AGE ceph-pod1 1/1 Running 0 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
しばらくすると、Pod のステータスが Running
に変わります。
25.4.4. ceph-user-secret をプロジェクトのデフォルトとして設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
全プロジェクトで永続ストレージを使用できるようにするには、デフォルトのプロジェクトテンプレートを変更する必要があります。これをデフォルトのプロジェクトテンプレートに追加すると、プロジェクト作成の権限があるユーザーはすべて Ceph クラスターにアクセスできるようになります。詳細情報は、「デフォルトのプロジェクトテンプレート変更」を参照してください。
デフォルトプロジェクトの例
- 1
- base64 形式で Ceph のユーザーキーをここに配置します。
25.5. GlusterFS を使用する詳細例 リンクのコピーリンクがクリップボードにコピーされました!
25.5.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、既存のコンバージドモード、インデペンデントモードまたはスタンドアロンの Red Hat Gluster Storage クラスターを OpenShift Container Platform の永続ストレージとして使用する詳細例を紹介します。ここでは作業用の Red Hat Gluster Storage クラスターがすでに設定されていることを前提とします。コンバージドモードまたはインデペンデントモードのインストールについてのヘルプは、「Red Hat Gluster Storage を使用する永続ストレージ」を参照してください。スタンドアロンの Red Hat Gluster Storage の場合については、『Red Hat Gluster Storage Administration Guide』を参照してください。
GlusterFS ボリュームを動的にプロビジョニングする方法の詳細例については、「GlusterFS を動的プロビジョニングに使用する詳細例」を参照してください。
oc
コマンドはすべて OpenShift Container Platform のマスターホストで実行されます。
25.5.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
GlusterFS ボリュームにアクセスするには、すべてのスケジュール可能なノードで mount.glusterfs
コマンドを利用できる必要があります。RPM ベースのシステムの場合は、glusterfs-fuse パッケージがインストールされている必要があります。
yum install glusterfs-fuse
# yum install glusterfs-fuse
このパッケージはすべての RHEL システムにインストールされています。ただし、サーバーが x86_64 アーキテクチャーを使用する場合は Red Hat Gluster Storage の最新バージョンに更新することを推奨します。そのためには、以下の RPM リポジトリーを有効にする必要があります。
subscription-manager repos --enable=rh-gluster-3-client-for-rhel-7-server-rpms
# subscription-manager repos --enable=rh-gluster-3-client-for-rhel-7-server-rpms
glusterfs-fuse がノードにすでにインストールされている場合、最新バージョンがインストールされていることを確認します。
yum update glusterfs-fuse
# yum update glusterfs-fuse
デフォルトでは、SELinux は Pod からリモート Red Hat Gluster Storage サーバーへの書き込みを許可しません。SELinux が有効な状態で Red Hat Gluster Storage ボリュームへの書き込みを有効にするには、GlusterFS を実行する各ノードで以下のコマンドを実行します。
sudo setsebool -P virt_sandbox_use_fusefs on sudo setsebool -P virt_use_fusefs on
$ sudo setsebool -P virt_sandbox_use_fusefs on
$ sudo setsebool -P virt_use_fusefs on
- 1
-P
オプションを使用すると、再起動した後もブール値が永続化されます。
virt_sandbox_use_fusefs
ブール値は、docker-selinux パッケージによって定義されます。このブール値が定義されていないというエラーが表示される場合は、このパッケージがインストールされていることを確認してください。
Atomic Host を使用している場合に、Atomic Host をアップグレードすると、SELinux のブール値が消去されるので、Atomic Host をアップグレードする場合には、これらのブール値を設定し直す必要があります。
25.5.3. 静的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
-
静的プロビジョニングを有効にするには、最初に GlusterFS ボリュームを作成します。
gluster
コマンドラインインターフェースを使用してこれを行う方法については、『Red Hat Gluster Storage Administration Guide』を参照してください。また、heketi-cli
を使用してこれを行う方法については、heketi プロジェクトサイトを参照してください。この例では、ボリュームにmyVol1
という名前を付けます。 gluster-endpoints.yaml
で以下のサービスとエンドポイントを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストからサービスとエンドポイントを作成します。
oc create -f gluster-endpoints.yaml
$ oc create -f gluster-endpoints.yaml service "glusterfs-cluster" created endpoints "glusterfs-cluster" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスとエンドポイントが作成されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記エンドポイントはプロジェクトごとに一意です。GlusterFS にアクセスする各プロジェクトには独自のエンドポイントが必要です。
ボリュームにアクセスするには、ボリューム上のファイルシステムにアクセスできるユーザー ID (UID) またはグループ ID (GID) でコンテナーを実行する必要があります。この情報は以下の方法で取得できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gluster-pv.yaml
で以下の PersistentVolume (PV) を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから PV を作成します。
oc create -f gluster-pv.yaml
$ oc create -f gluster-pv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV が作成されたことを確認します。
oc get pv
$ oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE gluster-default-volume <none> 2147483648 RWX Available 2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gluster-claim.yaml
で、新規 PV にバインドする PersistentVolumeClaim (PVC) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから PVC を作成します。
oc create -f gluster-claim.yaml
$ oc create -f gluster-claim.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV と PVC がバインドされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PVC はプロジェクトごとに一意です。GlusterFS ボリュームにアクセスする各プロジェクトには独自の PVC が必要です。PV は単一のプロジェクトにバインドされないため、複数のプロジェクトにまたがる PVC が同じ PV を参照する場合があります。
25.5.4. ストレージの使用 リンクのコピーリンクがクリップボードにコピーされました!
ここまでの時点で、PVC にバインドされる GlusterFS ボリュームを動的に作成しましたので、この PVC を Pod で利用できるようになりました。
Pod オブジェクト定義を以下のように作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 先の手順で作成した PVC の名前。
OpenShift Container Platform マスターホストから、以下のように Pod を作成します。
oc create -f hello-openshift-pod.yaml
# oc create -f hello-openshift-pod.yaml pod "hello-openshift-pod" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を表示します。イメージがまだ存在していない場合はダウンロードする必要があるので、数分かかります。
oc get pods -o wide
# oc get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE hello-openshift-pod 1/1 Running 0 9m 10.38.0.0 node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーへの
oc exec
を実行し、index.html ファイルを Pod のmountPath
定義内に作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、Pod の URL に対して
curl
を実行します。curl http://10.38.0.0
# curl http://10.38.0.0 Hello OpenShift!!!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を削除してから再作成し、これが出現するまで待機します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow もう一度 Pod に対して
curl
を実行します。データは前と同じになりますが、Pod の IP アドレスは変更されている可能性があることに注意してください。curl http://10.37.0.0
# curl http://10.37.0.0 Hello OpenShift!!!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の操作をいずれかのノードで実行して、index.html ファイルが GlusterFS ストレージに書き込まれていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.6. GlusterFS を動的プロビジョニングに使用する詳細例 リンクのコピーリンクがクリップボードにコピーされました!
25.6.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、既存のコンバージドモード、インデペンデントモードまたはスタンドアロンの Red Hat Gluster Storage クラスターを OpenShift Container Platform の動的永続ストレージとして使用する詳細例を紹介します。ここでは作業用の Red Hat Gluster Storage クラスターがすでに設定されていることを前提とします。コンバージドモードまたはインデペンデントモードのインストールについてのヘルプは、「Red Hat Gluster Storage を使用する永続ストレージ」を参照してください。スタンドアロンの Red Hat Gluster Storage の場合については、『Red Hat Gluster Storage Administration Guide』を参照してください。
oc
コマンドはすべて OpenShift Container Platform のマスターホストで実行されます。
25.6.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
GlusterFS ボリュームにアクセスするには、すべてのスケジュール可能なノードで mount.glusterfs
コマンドを利用できる必要があります。RPM ベースのシステムの場合は、glusterfs-fuse パッケージがインストールされている必要があります。
yum install glusterfs-fuse
# yum install glusterfs-fuse
このパッケージはすべての RHEL システムにインストールされています。ただし、サーバーが x86_64 アーキテクチャーを使用する場合は Red Hat Gluster Storage の最新バージョンに更新することを推奨します。そのためには、以下の RPM リポジトリーを有効にする必要があります。
subscription-manager repos --enable=rh-gluster-3-client-for-rhel-7-server-rpms
# subscription-manager repos --enable=rh-gluster-3-client-for-rhel-7-server-rpms
glusterfs-fuse がノードにすでにインストールされている場合、最新バージョンがインストールされていることを確認します。
yum update glusterfs-fuse
# yum update glusterfs-fuse
デフォルトでは、SELinux は Pod からリモート Red Hat Gluster Storage サーバーへの書き込みを許可しません。SELinux が有効な状態で Red Hat Gluster Storage ボリュームへの書き込みを有効にするには、GlusterFS を実行する各ノードで以下のコマンドを実行します。
sudo setsebool -P virt_sandbox_use_fusefs on sudo setsebool -P virt_use_fusefs on
$ sudo setsebool -P virt_sandbox_use_fusefs on
$ sudo setsebool -P virt_use_fusefs on
- 1
-P
オプションを使用すると、再起動した後もブール値が永続化されます。
virt_sandbox_use_fusefs
ブール値は、docker-selinux パッケージによって定義されます。このブール値が定義されていないというエラーが表示される場合は、このパッケージがインストールされていることを確認してください。
Atomic Host を使用している場合に、Atomic Host をアップグレードすると、SELinux のブール値が消去されるので、Atomic Host をアップグレードする場合には、これらのブール値を設定し直す必要があります。
25.6.3. 動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
動的プロビジョニングを有効にするには、最初に
StorageClass
オブジェクト定義を作成します。以下の定義は、OpenShift Container Platform でこの例を使用するために必要な最小要件に基づいています。その他のパラメーターと仕様定義については、「動的プロビジョニングとストレージクラスの作成」を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから StorageClass を作成します。
oc create -f gluster-storage-class.yaml
# oc create -f gluster-storage-class.yaml storageclass "glusterfs" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新たに作成される StorageClass を使用して PVC を作成します。以下は例になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから PVC を作成します。
oc create -f glusterfs-dyn-pvc.yaml
# oc create -f glusterfs-dyn-pvc.yaml persistentvolumeclaim "gluster1" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC を表示し、ボリュームが動的に作成され、PVC にバインドされていることを確認します。
oc get pvc
# oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE gluster1 Bound pvc-78852230-d8e2-11e6-a3fa-0800279cf26f 30Gi RWX gluster-dyn 42s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.6.4. ストレージの使用 リンクのコピーリンクがクリップボードにコピーされました!
ここまでの時点で、PVC にバインドされる GlusterFS ボリュームを動的に作成しましたので、この PVC を Pod で利用できるようになりました。
Pod オブジェクト定義を以下のように作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 先の手順で作成した PVC の名前。
OpenShift Container Platform マスターホストから、以下のように Pod を作成します。
oc create -f hello-openshift-pod.yaml
# oc create -f hello-openshift-pod.yaml pod "hello-openshift-pod" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を表示します。イメージがまだ存在していない場合はダウンロードする必要があるので、数分かかります。
oc get pods -o wide
# oc get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE hello-openshift-pod 1/1 Running 0 9m 10.38.0.0 node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーへの
oc exec
を実行し、index.html ファイルを Pod のmountPath
定義内に作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、Pod の URL に対して
curl
を実行します。curl http://10.38.0.0
# curl http://10.38.0.0 Hello OpenShift!!!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を削除してから再作成し、これが出現するまで待機します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow もう一度 Pod に対して
curl
を実行します。データは前と同じになりますが、Pod の IP アドレスは変更されている可能性があることに注意してください。curl http://10.37.0.0
# curl http://10.37.0.0 Hello OpenShift!!!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の操作をいずれかのノードで実行して、index.html ファイルが GlusterFS ストレージに書き込まれていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7. 特権付き Pod へのボリュームのマウント リンクのコピーリンクがクリップボードにコピーされました!
25.7.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
永続ボリュームは、特権付き SCC (Security Context Constraint) が割り当てられた Pod にマウントすることができます。
このトピックでは、特権付き Pod へのボリュームのマウントのユースケースの例として GlusterFS を使用していますが、これはいずれの サポート対象ストレージプラグインを使用するケースにも適用できます。
25.7.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 既存の Gluster ボリューム。
- すべてのホストにインストールされている glusterfs-fuse。
GlusterFS の定義:
- エンドポイントとサービス: gluster-endpoints-service.yaml および gluster-endpoints.yaml
- 永続ボリューム: gluster-pv.yaml
- Persistent Volume Claim (永続ボリューム要求): gluster-pvc.yaml
- 特権付き Pod: gluster-S3-pod.yaml
-
cluster-admin ロールのバインディングを持つユーザー。このガイドでは、このユーザーを
admin
と呼んでいます。
25.7.3. 永続ボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
PersistentVolume を作成すると、プロジェクトに関係なく、ユーザーがストレージにアクセスできるようになります。
admin として、サービス、エンドポイントオブジェクトおよび永続ボリュームを作成します。
oc create -f gluster-endpoints-service.yaml oc create -f gluster-endpoints.yaml oc create -f gluster-pv.yaml
$ oc create -f gluster-endpoints-service.yaml $ oc create -f gluster-endpoints.yaml $ oc create -f gluster-pv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オブジェクトが作成されたことを以下のように確認します。
oc get svc
$ oc get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE gluster-cluster 172.30.151.58 <none> 1/TCP <none> 24s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ep
$ oc get ep NAME ENDPOINTS AGE gluster-cluster 192.168.59.102:1,192.168.59.103:1 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pv
$ oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE gluster-default-volume <none> 2Gi RWX Available 2d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7.4. 通常ユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
通常ユーザーを以下のように 特権付き SCC (または SCC へのアクセスのあるグループ) に追加すると、当該ユーザーは特権付き Pod を実行できるようになります。
admin として、ユーザーを SCC に追加します。
oc adm policy add-scc-to-user privileged <ユーザー名>
$ oc adm policy add-scc-to-user privileged <ユーザー名>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通常ユーザーとしてログインします。
oc login -u <username> -p <password>
$ oc login -u <username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、新規プロジェクトを作成します。
oc new-project <project_name>
$ oc new-project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7.5. Persistent Volume Claim (永続ボリューム要求) の作成 リンクのコピーリンクがクリップボードにコピーされました!
通常ユーザーとして、ボリュームにアクセスするための PersistentVolumeClaim を作成します。
oc create -f gluster-pvc.yaml -n <project_name>
$ oc create -f gluster-pvc.yaml -n <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要求にアクセスするための Pod を定義します。
Pod を作成するとマウントディレクトリーが作成され、ボリュームがそのマウントポイントに割り当てられます。
通常ユーザーとして、以下のように定義から Pod を作成します。
oc create -f gluster-S3-pod.yaml
$ oc create -f gluster-S3-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が正常に作成されたことを確認します。
oc get pods
$ oc get pods NAME READY STATUS RESTARTS AGE gluster-S3-pod 1/1 Running 0 36m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が作成されるまでに数分の時間がかかることがあります。
25.7.6. 設定の検証 リンクのコピーリンクがクリップボードにコピーされました!
25.7.6.1. Pod の SCC の確認 リンクのコピーリンクがクリップボードにコピーされました!
Pod 設定をエクスポートします。
oc get -o yaml --export pod <pod_name>
$ oc get -o yaml --export pod <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。
openshift.io/scc
の値がprivileged
であることを確認します。例25.12 スニペットのエクスポート
metadata: annotations: openshift.io/scc: privileged
metadata: annotations: openshift.io/scc: privileged
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7.6.2. マウントの検証 リンクのコピーリンクがクリップボードにコピーされました!
Pod にアクセスし、ボリュームがマウントされていることを確認します。
oc rsh <pod_name>
$ oc rsh <pod_name> [root@gluster-S3-pvc /]# mount
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gluster ボリュームの出力結果を確認します。
例25.13 ボリュームマウント
192.168.59.102:gv0 on /mnt/gluster type fuse.gluster (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
192.168.59.102:gv0 on /mnt/gluster type fuse.gluster (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.8. 統合 OpenShift Container レジストリーから GlusterFS への切り替え リンクのコピーリンクがクリップボードにコピーされました!
25.8.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、GlusterFS ボリュームを統合 OpenShift Container レジストリーに割り当てる方法を説明します。この操作は、コンバージドモード、インデペンデントモード、またはスタンドアロンの Red Hat Gluster Storage のいずれかで実行できます。ここでは、レジストリーがすでに起動されていて、ボリュームが作成済みであることを前提とします。
25.8.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ストレージを設定せずにデプロイされている既存の レジストリー。
- 既存の GlusterFS ボリューム。
- すべてのスケジュール可能なノードにインストールされている glusterfs-fuse。
cluster-admin ロールのバインディングを持つユーザー。
- このガイドでは、このユーザーを admin と呼んでいます。
oc
コマンドはすべてマスターノードで admin ユーザーとして実行されます。
25.8.3. GlusterFS PersistentVolumeClaim の手動プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
-
静的プロビジョニングを有効にするには、最初に GlusterFS ボリュームを作成します。
gluster
コマンドラインインターフェースを使用してこれを行う方法については、『Red Hat Gluster Storage Administration Guide』を参照してください。また、heketi-cli
を使用してこれを行う方法については、heketi プロジェクトサイトを参照してください。この例では、ボリュームにmyVol1
という名前を付けます。 gluster-endpoints.yaml
で以下のサービスとエンドポイントを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストからサービスとエンドポイントを作成します。
oc create -f gluster-endpoints.yaml
$ oc create -f gluster-endpoints.yaml service "glusterfs-cluster" created endpoints "glusterfs-cluster" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスとエンドポイントが作成されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記エンドポイントはプロジェクトごとに一意です。GlusterFS にアクセスする各プロジェクトには独自のエンドポイントが必要です。
ボリュームにアクセスするには、ボリューム上のファイルシステムにアクセスできるユーザー ID (UID) またはグループ ID (GID) でコンテナーを実行する必要があります。この情報は以下の方法で取得できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gluster-pv.yaml
で以下の PersistentVolume (PV) を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから PV を作成します。
oc create -f gluster-pv.yaml
$ oc create -f gluster-pv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV が作成されたことを確認します。
oc get pv
$ oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE gluster-default-volume <none> 2147483648 RWX Available 2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gluster-claim.yaml
で、新規 PV にバインドする PersistentVolumeClaim (PVC) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform マスターホストから PVC を作成します。
oc create -f gluster-claim.yaml
$ oc create -f gluster-claim.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV と PVC がバインドされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PVC はプロジェクトごとに一意です。GlusterFS ボリュームにアクセスする各プロジェクトには独自の PVC が必要です。PV は単一のプロジェクトにバインドされないため、複数のプロジェクトにまたがる PVC が同じ PV を参照する場合があります。
25.8.4. PersistentVolumeClaim のレジストリーへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
次に進む前に、docker-registry サービスが実行中であることを確認します。
oc get svc
$ oc get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
docker-registry 172.30.167.194 <none> 5000/TCP docker-registry=default 18m
docker-registry サービス、またはそれに関連付けられている Pod のいずれかが実行されていない場合は、レジストリーの設定手順を再度参照してトラブルシューティングを行ってから次に進んでください。
次に、PVC を割り当てます。
oc volume deploymentconfigs/docker-registry --add --name=registry-storage -t pvc \ --claim-name=gluster-claim --overwrite
$ oc volume deploymentconfigs/docker-registry --add --name=registry-storage -t pvc \
--claim-name=gluster-claim --overwrite
OpenShift Container レジストリーの使用についての詳細は、「レジストリーのセットアップ」を参照してください。
25.9. ラベルによる永続ボリュームのバインド リンクのコピーリンクがクリップボードにコピーされました!
25.9.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、PV でラベルを定義して PVC 内でセレクターを一致させることで Persistent Volume Claim (永続ボリューム要求、PVC) を 永続ボリューム (PV) にバインドする詳細例を紹介します。この機能はすべてのストレージオプションで使用できます。ここでは、OpenShift Container Platform クラスターに永続ストレージリソースが含まれていて、それらのリソースを PVC によるバインディングに使用できることを前提としています。
ラベルとセレクターに関する注記
ラベルは OpenShift Container Platform の機能であり、ユーザー定義のタグ (キーと値のペア) をオブジェクトの仕様の一部としてサポートします。その主な目的は、オブジェクト間で同一ラベルを定義してオブジェクトを任意にグループ化できるようにすることです。定義したラベルをセレクターでターゲットとして指定すると、指定のラベル値を持つすべてのオブジェクトが一致します。この機能により、PVC を PV にバインドすることができます。ラベルについての詳細は、「Pods and Services」を参照してください。
この例では、変更された GlusterFS の PV および PVC 仕様を使用しています。ただし、実装したセレクターとラベルはすべてのストレージオプションで汎用的に使用できます。使用しているボリュームプロバイダーの独自の設定については、「関連するストレージオプション」を参照してください。
25.9.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下があることを前提とします。
- 少なくとも 1 つのマスターと 1 つのノードがある既存の OpenShift Container Platform クラスター
- 少なくとも 1 つのサポート対象ストレージボリューム
- cluster-admin 権限を持つユーザー
25.9.2. 仕様の定義 リンクのコピーリンクがクリップボードにコピーされました!
ここでの仕様は GlusterFS に合わせてカスタマイズされています。使用しているボリュームプロバイダーの独自の設定については、「関連するストレージオプション」を参照してください。
25.9.2.1. ラベルのある永続ボリューム リンクのコピーリンクがクリップボードにコピーされました!
例25.14 glusterfs-pv.yaml
25.9.2.2. セレクターのある Persistent Volume Claim (永続ボリューム要求) リンクのコピーリンクがクリップボードにコピーされました!
selector スタンザのある要求 (以下の例を参照してください) は、事前にバインドされていない既存の非要求の PV との一致を試みます。PVC セレクターがあるため、PV の容量は無視されます。ただし、accessModes は一致条件において考慮されます。
要求はその selector スタンザに含まれるすべてのキーと値のペアに一致する必要がある、ということに注意してください。要求に一致する PV がない場合、PVC はバインドされない (保留中の) ままになります。PV はその後に作成され、要求によってラベルの一致の有無が自動的にチェックされます。
例25.15 glusterfs-pvc.yaml
- 1
- selector スタンザでは、この要求と一致させるために PV で必要なすべてのラベルを定義します。
25.9.2.3. ボリュームエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
PV を Gluster ボリュームに割り当てるには、オブジェクトを作成する前にエンドポイントを設定する必要があります。
例25.16 glusterfs-ep.yaml
25.9.2.4. PV、PVC、およびエンドポイントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
この例では、oc
コマンドを cluster-admin 権限のあるユーザーとして実行します。実稼働環境では、クラスタークライアントが PVC の定義と作成を行うことなどが予想されます。
最後に、PV と PVC が正常にバインドされていることを確認します。
oc get pv,pvc
# oc get pv,pvc
NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
gluster-volume 2Gi RWX Bound gfs-trial/gluster-claim 7s
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
gluster-claim Bound gluster-volume 2Gi RWX 7s
PVC はプロジェクトに対してローカルですが、PV はクラスター全体にわたるグローバルリソースです。開発者および管理者以外のユーザーは、使用可能な PV のすべて (またはいずれか) にアクセスできない場合があります。
25.10. ストレージクラスを使用した動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
25.10.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
この例では、StorageClass のさまざまな設定と Google Cloud Platform Compute Engine (GCE) を使用した動的プロビジョニングについて、いくつかのシナリオを紹介します。これらの例では、Kubernetes、GCE、および永続ディスクについて理解していること、また OpenShift Container Platform がインストールされていて GCE を使用できるよう適切に設定されていることを前提とします。
25.10.2. シナリオ 1: 2 種類の StorageClass を持つ基本的な動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
StorageClass を使用すると、ストレージのレベルや使用状況を区別し、記述することができます。この例では、cluster-admin
または storage-admin
が GCE で 2 つの異なるストレージのクラスを設定します。
-
slow
: 低コストで効率的なシーケンシャルデータの操作に最適化されている (低速読み取り/書き込み) -
fast
: 高速なランダム IOPS と持続的スループットに最適化されている (高速読み取り/書き込み)
これらの StorageClass を作成することで、cluster-admin
または storage-admin
はユーザーに対して、StorageClass の特定のレベルまたはサービスについての要求の作成を許可することができます。
例25.17 StorageClass 低速オブジェクトの定義
例25.18 StorageClass 高速オブジェクトの定義
cluster-admin
または storage-admin
として、両方の定義を YAML ファイル (slow-gce.yaml
と fast-gce.yaml
など) に保存します。次に StorageClass を作成します。
cluster-admin
ユーザーまたは storage-admin
ユーザーは、適切な StorageClass 名を適切なユーザー、グループ、およびプロジェクトに送る必要があります。
通常ユーザーとして、以下のように新規プロジェクトを作成します。
oc new-project rh-eng
# oc new-project rh-eng
要求の YAML 定義を作成し、これをファイル (pvc-fast.yaml
) に保存します。
oc create
コマンドを使用して要求を追加します。
oc create -f pvc-fast.yaml
# oc create -f pvc-fast.yaml
persistentvolumeclaim "pvc-engineering" created
要求がバインドされているかどうかをチェックします。
oc get pvc
# oc get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
pvc-engineering Bound pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX 2m
この要求は rh-eng プロジェクトで作成され、バインドされているため、同じプロジェクトのいずれのユーザーにも共有できます。
cluster-admin
ユーザーまたは storage-admin
ユーザーとして、最近動的にプロビジョニングした永続ボリューム (PV) を表示します。
oc get pv
# oc get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE
pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX Delete Bound rh-eng/pvc-engineering 5m
動的にプロビジョニングされたすべてのボリュームについて、RECLAIMPOLICY がデフォルトで Delete になっていることに注意してください。これは、ボリュームが要求がシステムに存在している間存続することを意味します。要求を削除するとボリュームも削除され、ボリュームのすべてのデータが失われます。
最後に GCE コンソールをチェックします。新規のディスクが作成され、使用できる状態になります。
kubernetes-dynamic-pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 SSD persistent disk 10 GB us-east1-d
kubernetes-dynamic-pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 SSD persistent disk 10 GB us-east1-d
これで、Pod で Persistent Volume Claim (永続ボリューム要求) を参照し、ボリュームの使用を開始することができます。
25.10.3. シナリオ 2: クラスターにおけるデフォルトの StorageClass の動作を有効にする方法 リンクのコピーリンクがクリップボードにコピーされました!
この例では、cluster-admin
または storage-admin
により、StorageClass を要求に暗黙的に指定していない他のすべてのユーザーおよびプロジェクトについてデフォルトのストレージクラスが有効になります。この方法は、特化した StorageClass をクラスター全体に設定し、伝達することなしに cluster-admin
または storage-admin
がストレージボリュームを容易に管理できるようにする場合に役に立ちます。
以下の例は 「シナリオ 1: 2 種類の StorageClass を持つ基本的な動的プロビジョニング」 を基づいて作成されています。cluster-admin
または storage-admin
は、デフォルトの StorageClass として指定するための別の StorageClass を作成します。
例25.19 デフォルトの StorageClass オブジェクトの定義
cluster-admin
または storage-admin
として、この定義を YAML ファイル (generic-gce.yaml
) に保存し、StorageClass を作成します。
通常ユーザーとして、StorageClass の要件なしに新規の要求定義を作成し、これをファイル (generic-pvc.yaml
) に保存します。
例25.20 デフォルトのストレージ要求オブジェクトの定義
以下のように実行し、要求がバインドされていることをチェックします。
- 1
pvc-engineering2
は、デフォルトで、動的にプロビジョニングされたボリュームにバインドされます。
cluster-admin
または storage-admin
として、ここまでに定義した永続ボリュームを表示します。
oc get pv
# oc get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE
pvc-a9f70544-8bfd-11e6-9962-42010af00004 5Gi RWX Delete Bound rh-eng/pvc-engineering2 5m
pvc-ba4612ce-8b4d-11e6-9962-42010af00004 5Gi RWO Delete Bound mytest/gce-dyn-claim1 21h
pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX Delete Bound rh-eng/pvc-engineering 46m
GCE を使用して (動的にプロビジョニングされるのではなく) 手動でプロビジョニングされるディスクを作成します。次に、新規の GCE ディスク (pv-manual-gce.yaml
) に接続する永続ボリュームを作成します。
例25.21 手動の PV オブジェクトの定義
オブジェクト定義ファイルを実行します。
oc create -f pv-manual-gce.yaml
# oc create -f pv-manual-gce.yaml
ここでもう一度 PV を表示します。pv-manual-gce
ボリュームが Available になっていることに留意してください。
今度は generic-pvc.yaml
PVC 定義と同一の別の要求を作成しますが、名前を変更し、ストレージクラス名は設定しません。
例25.22 要求オブジェクトの定義
このインスタンスではデフォルトの StorageClass が有効になっているため、手動で作成された PV は要求のリクエストに対応せず、ユーザーは新たに動的にプロビジョニングされた永続ボリュームを受け取ることになります。
oc get pvc
# oc get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
pvc-engineering Bound pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX 1h
pvc-engineering2 Bound pvc-a9f70544-8bfd-11e6-9962-42010af00004 5Gi RWX 19m
pvc-engineering3 Bound pvc-6fa8e73b-8c00-11e6-9962-42010af00004 15Gi RWX 6s
デフォルトの StorageClass がこのシステムで有効になっているため、手動で作成された永続ボリュームを前述の要求によってバインドし、動的にプロビジョニングされた新規ボリュームがバインドされないようにするには、PV をデフォルトの StorageClass で作成しておく必要があります。
デフォルトの StorageClass がこのシステムで有効になっているため、手動で作成された永続ボリュームを前述の要求によってバインドし、動的にプロビジョニングされた新規ボリュームをバインドしないようにするためには、PV をデフォルトの StorageClass で作成しておく必要があります。
これを解決するには、cluster-admin
ユーザーまたは storage-admin
ユーザーは、別の GCE ディスクを作成するか、または必要に応じて最初の手動の PV を削除し、StorageClass 名を割り当てる PV オブジェクト定義 (pv-manual-gce2.yaml
) を使用することのみが必要になります。
例25.23 デフォルトの StorageClass 名を持つ手動 PV の仕様
- 1
- 先に作成した汎用 の StorageClass の名前。
オブジェクト定義ファイルを実行します。
oc create -f pv-manual-gce2.yaml
# oc create -f pv-manual-gce2.yaml
PV を一覧表示します。
動的にプロビジョニングされたすべてのボリュームの RECLAIMPOLICY がデフォルトで Delete である点に注目してください。PV に動的にバインドされた PVC が削除されると、GCE ボリュームが削除され、すべてのデータが消失します。ただし、手動で作成された PV の RECLAIMPOLICY はデフォルトで Retain です。
25.11. 既存のレガシーストレージに対するストレージクラスの使用 リンクのコピーリンクがクリップボードにコピーされました!
25.11.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
この例では、レガシーデータボリュームが存在し、cluster-admin
または storage-admin
がそのボリュームを特定のプロジェクトで使用できるようにする必要があります。StorageClass を使用すると、他のユーザーおよびプロジェクトがこのボリュームへのアクセスを要求から取得する可能性が低くなります。これは、要求には完全一致する StorageClass 名の値が必要になるためです。また、ここでは動的なプロビジョニングも無効にしています。この例では以下の要件を満たしていることを前提としています。
- OpenShift Container Platform、GCE、および永続ディスクについてある程度理解している。
- OpenShift Container Platform が GCE を使用するように適切に設定されている。
25.11.1.1. シナリオ 1: レガシーデータを含む既存の永続ボリュームに StorageClass をリンクさせる リンクのコピーリンクがクリップボードにコピーされました!
cluster-admin
または storage-admin
として、過去の財務データ用の StorageClass を定義し、作成します。
例25.24 StorageClass の finance-history オブジェクトの定義
この定義を YAML ファイル (finance-history-storageclass.yaml
) に保存して、StorageClass を作成します。
cluster-admin
ユーザーまたは storage-admin
ユーザーは、適切な StorageClass 名を適切なユーザー、グループ、およびプロジェクトに送る必要があります。
StorageClass が存在します。cluster-admin
または storage-admin
は StorageClass で使用するための永続ボリューム (PV) を作成することができます。(動的にプロビジョニングされない) GCE および新しい GCE ディスク (gce-pv.yaml
) に接続される永続ボリュームを使用して、手動でプロビジョニングされたディスクを作成します。
例25.25 財務履歴の PV オブジェクト
cluster-admin
または storage-admin
として、PV を作成し、これを表示します。
pv-finance-history
が Available で、いつでも利用可能であることに留意してください。
ユーザーとして、Persistent Volume Claim (永続ボリューム要求、PVC) を YAML ファイルとして作成し、以下のように適切な StorageClass 名を指定します。
例25.26 finance-history オブジェクト定義の要求
- 1
- StorageClass 名。完全一致している必要があります。そうでない場合には、削除されるか、または名前が一致する別の StorageClass が作成されるまで要求が非バインドの状態になります。
PVC と PV を作成および表示して、バインドされているか確認します。
同じクラスター内の StorageClass を、レガシーデータ (動的プロビジョニングなし) および動的プロビジョニングの両方に対して使用することができます。
25.12. Azure Blob Storage での統合 Docker レジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
25.12.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、Microsoft Azure Blob Storage で OpenShift 統合 Docker レジストリー を設定する方法を説明します。
25.12.2. 作業を開始する前に リンクのコピーリンクがクリップボードにコピーされました!
- Microsoft Azure Portal、Microsoft Azure CLI、または Microsoft Azure Storage Explorer を使用してストレージコンテナーを作成します。ストレージアカウント名、ストレージアカウントキー、および コンテナー名をメモしてください。
- デプロイされていない場合は、統合 Docker レジストリーをデプロイします。
25.12.3. レジストリー設定の上書き リンクのコピーリンクがクリップボードにコピーされました!
新規レジストリー Pod を作成し、古い Pod と自動的に置き換えるには、以下の手順を実行します。
registryconfig.yaml という名前の新規レジストリー設定ファイルを作成して、以下の情報を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規レジストリー設定を作成します。
oc create secret generic registry-config --from-file=config.yaml=registryconfig.yaml
$ oc create secret generic registry-config --from-file=config.yaml=registryconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットを追加します。
oc volume dc/docker-registry --add --type=secret \ --secret-name=registry-config -m /etc/docker/registry/
$ oc volume dc/docker-registry --add --type=secret \ --secret-name=registry-config -m /etc/docker/registry/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow REGISTRY_CONFIGURATION_PATH
環境変数を設定します。oc set env dc/docker-registry \ REGISTRY_CONFIGURATION_PATH=/etc/docker/registry/config.yaml
$ oc set env dc/docker-registry \ REGISTRY_CONFIGURATION_PATH=/etc/docker/registry/config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリー設定をすでに作成している場合は、以下の手順を実行します。
シークレットを削除します。
oc delete secret registry-config
$ oc delete secret registry-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規レジストリー設定を作成します。
oc create secret generic registry-config --from-file=config.yaml=registryconfig.yaml
$ oc create secret generic registry-config --from-file=config.yaml=registryconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ロールアウトを開始して設定を更新します。
oc rollout latest docker-registry
$ oc rollout latest docker-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow