LoginSignup
0

posted at

Organization

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

背景

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に変更する必要は無かったことになりますね。

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

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
What you can do with signing up
0