LoginSignup
2
0

More than 1 year has passed since last update.

Red Hat OpenShift on IBM Cloud(ROKS)で、デフォルトのストレージ・クラスを変更する

Posted at

背景

OperatorHubなどからオペレーターによってアプリケーションなどをデプロイする場合、作成されるPersistent Volumeが、デフォルトのストレージ・クラスに依存することがあります。このデフォルトのストレージ・クラスを変更するための方法です。

確認した環境

  • Red Hat OpenShift on IBM Cloud(ROKS)
    • 4.10
  • Block Storage for VPC アドオン
    • 4.4

Block Storage for VPCアドオンのバージョン確認方法は以下の通りです。

$ ibmcloud oc cluster addons --cluster [クラスター名]
OK
名前                   バージョン   正常性の状態   正常性の状況   
vpc-block-csi-driver   4.4          normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500) 

経緯

まず、Red Hat社の提供する以下のドキュメントを参照しました。

現在の状態を確認すると、10IOPSの一番性能のいいBlock Storageがデフォルトになっていました。

$ oc get sc | grep default
ibmc-vpc-block-10iops-tier (default)          vpc.block.csi.ibm.io   Delete          Immediate              true                   13d

使用可能なストレージ・クラスを以下のサイトで確認して、値段の安い3IOPSのBlock Storageを使用したいので、ibmc-vpc-block-general-purposeをデフォルトにすることにします。

ストレージ・クラス・リファレンス - IBM Cloud Docs

以下のコマンドを実行することで、デフォルトのストレージ・クラスを変更します。

$ oc patch storageclass ibmc-vpc-block-10iops-tier -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
storageclass.storage.k8s.io/ibmc-vpc-block-10iops-tier patched
$ oc patch storageclass ibmc-vpc-block-general-purpose -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
storageclass.storage.k8s.io/ibmc-vpc-block-general-purpose patched

確認すると変更されていました。

$ oc get sc | grep default
ibmc-vpc-block-general-purpose (default)      vpc.block.csi.ibm.io   Delete          Immediate              true                   13d

ただ、その後アプリケーションを導入しようとすると、以下のようなエラーでPVC・PVが作成されませんでした。

Error from server (Forbidden): error when creating "pvc.yaml": persistentvolumeclaims "pvc" is forbidden: Internal error occurred: 2 default StorageClasses were found

改めてデフォルトのストレージ・クラスを確認すると、10IOPSのデフォルトが復活?して、デフォルトのストレージ・クラスが2つになってしまっていした。

$ oc get sc | grep default
ibmc-vpc-block-10iops-tier (default)          vpc.block.csi.ibm.io   Delete          Immediate              true                   13d
ibmc-vpc-block-general-purpose (default)      vpc.block.csi.ibm.io   Delete          Immediate              true                   13d

解決策

以下にガイドがありました。Block Storage for VPC アドオンのConfigMapを編集する必要があるとのこと。

デフォルトのストレージ・クラスの変更 - IBM Cloud Docs

ガイドにあるとおり、以下のコマンドでConfigMapを編集モードで開き、「IsStorageClassDefault 設定を false に変更(IsStorageClassDefault: "false")」して、保存します。

$ oc edit cm addon-vpc-block-csi-driver-configmap -n kube-system

そしてまたガイドにあるとおり、15分ほど待ってから以下のコマンドを実行し、storageclass.kubernetes.io/is-default-class: "false"となることを確認します。

$ oc get sc ibmc-vpc-block-10iops-tier -o yaml

上記の状態が変わった頃には、ストレージ・クラスのデフォルトも、最初にoc patchでtrueに変更した3IOPSの1つになっていました。なので、最初に元のデフォルト・ストレージ・クラスだったibmc-vpc-block-10iops-tierの設定をoc patchでfalseに変更する必要は無かったことになりますね。

これでストレージコストを節約することが出来そうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0