IBM Cloud Object Storage プラグインのインストール
仮想プライベートクラウド クラシック・インフラストラクチャー
IBM Cloud Object Storage プラグインをインストールし、 IBM Cloud Object Storage 用に事前定義されたストレージクラスを設定する。 これらのストレージ・クラスを使用すると、アプリ用に IBM Cloud Object Storage をプロビジョンするための PVC を作成できます。
Helm 経由でのプラグインのインストール
- 前提条件
- IBM Cloud Object Storage プラグインには、少なくとも 0.2 vCPU と 128 MB のメモリーが必要です。
始める前に: アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
「 ibmc 」 Helm プラグインと「 ibm-object-storage-plugin 」をインストールします:
-
ワーカー・ノードを最新のセキュリティー設定で実行するために、ワーカー・ノードに、使用しているマイナー・バージョンに対する最新パッチが適用されていることを確認します。 パッチのバージョンから、ワーカー・ノードの root のパスワードが更新されたかどうかも確認できます。
過去 90 日以内に更新の適用もワーカー・ノードの再ロードも行っていない場合は、ワーカー・ノードの root のパスワードの有効期限が切れているので、ストレージ・プラグインのインストールが失敗する可能性があります。
- ワーカー・ノードの現在のパッチ・バージョンをリストします。
ibmcloud ks worker ls --cluster CLUSTER_NAME_OR_ID ``` 出力例 ```sh {: screen} OK ID Public IP Private IP Machine Type State Status Zone Version kube-dal10-crb1a23b456789ac1b20b2nc1e12b345ab-w26 169.xx.xxx.xxx 10.xxx.xx.xxx b3c.4x16.encrypted normal Ready dal10 1.35_1523* ``` ワーカー・ノードで、最新のパッチ・バージョンが適用されていない場合は、CLI 出力の `*`Version** 列にアスタリスク (**) が表示されます。 2. [Kubernetes のバージョン情報](/docs/containers?topic=containers-cs_versions) を参照して、最新の変更を確認してください。 3. ワーカー・ノードを再ロードして、最新のパッチ・バージョンを適用します。 ワーカーノードを再読み込みする前に、` [ibmcloud ks worker reload` コマンド](/docs/containers?topic=containers-kubernetes-service-cli#worker-reload-cli) の手順に従って、ワーカーノード上で実行中のポッドを安全に再スケジュールしてください。 再ロード中に、ワーカー・ノード・マシンが最新のイメージで更新されるので、[ワーカー・ノードの外部に保管](/docs/containers?topic=containers-storage-plan)していないデータは削除されることに注意してください。 -
変更ログを調べて、クラスターのバージョンとアーキテクチャーのサポートを確認してください。
-
こちらの手順に従って、バージョン 3 の Helm クライアントをローカル・マシンにインストールします。
IBM Cloud アカウント VRFと サービスエンドポイントを 有効にしている場合、非公開リポジトリ「 IBM Cloud Helm 」を使用することで、イメージのプルトラフィックをプライベートネットワーク内に留めることができます。 アカウントで VRF またはサービス・エンドポイントを有効にできない場合は、パブリック Helm リポジトリーを使用します。
-
IBM Cloud Helm リポジトリーをクラスターに追加します。
helm repo add ibm-helm https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm -
Helm リポジトリーを更新して、このリポジトリー内のすべての Helm チャートの最新バージョンを取得します。
helm repo update -
以前に IBM Cloud Object Storage Helm プラグインをインストールした場合は、
ibmcプラグインを削除します。helm plugin uninstall ibmc -
Helm チャートをダウンロードして、現行ディレクトリーにチャートをアンパックします。
helm fetch --untar ibm-helm/ibm-object-storage-plugin出力に「
Error: failed to untar: a file or directory with the name ibm-object-storage-plugin already exists」と表示された場合は、ibm-object-storage-pluginディレクトリーを削除して、helm fetchコマンドを再実行してください。 -
初めてプラグインをインストールする場合は、 IBM Cloud Object Storage Helm プラグイン
ibmcをインストールしてください。 プラグインは、クラスター・ロケーションを自動的に取得し、ストレージ・クラス内の IBM Cloud Object Storage バケットの API エンドポイントを設定します。 Windowsをオペレーティングシステムとして使用している場合は、この手順をスキップしてください。ibmcプラグインは Windows ではサポートされていません。- Helm プラグインをインストールします。
helm plugin install ./ibm-object-storage-plugin/helm-ibmc ``` 2. `ibmc` プラグインが正常にインストールされていることを確認します。 ```sh {: pre} helm ibmc --help ``` 出力例 ```sh {: screen} Helm version: v3.13.1+g3547a4b Install or upgrade Helm charts in IBM K8S Service(IKS) Usage: helm ibmc [command] Available Commands: install Install a Helm chart upgrade Upgrade the release to a new version of the Helm chart Available Flags: -h, --help (Optional) This text. -u, --update (Optional) Update this plugin to the latest version Example Usage: Install: helm ibmc install ibm-object-storage-plugin ibm-helm/ibm-object-storage-plugin Upgrade: helm ibmc upgrade [RELEASE] ibm-helm/ibm-object-storage-plugin Note: 1. It is always recommended to install latest version of ibm-object-storage-plugin chart. 2. It is always recommended to have 'kubectl' client up-to-date. ``` 3. **オプション** :出力に「 `Error: fork/exec /home/iksadmin/.helm/plugins/helm-ibmc/ibmc.sh: permission denied` 」というエラーが表示された場合は、次のコマンドを実行してください。 ```sh {: pre} chmod 755 /Users/<user_name>/Library/helm/plugins/helm-ibmc/ibmc.sh ``` その後、 `ibmc --help` コマンドを再試行してください。 ```sh {: pre} helm ibmc --help ``` -
オプション : IBM Cloud Object Storage プラグインのアクセスを、 IBM Cloud Object Storage サービスの認証情報を保持する Kubernetes のシークレットのみに制限します。 デフォルトでは、プラグインはクラスター内のすべての Kubernetes シークレットにアクセスできます。
- IBM Cloud Object Storage サービス・インスタンスを作成します。
- Kubernetes シークレットへの IBM Cloud Object Storage サービス資格情報を保管します)。
- ディレクトリーを
ibm-object-storage-pluginディレクトリーに変更します。
cd ibm-object-storage-plugin ``` 3. `ibm-object-storage-plugin` から、`templates` ディレクトリーにナビゲートし、使用可能なファイルをリストします。 OS X および Linux ```sh {: pre} cd templates && ls ``` Windows ```sh {: pre} chdir templates && dir ``` 4. `provisioner-sa.yaml` ファイルを開き、`ibmcloud-object-storage-secret-reader` `ClusterRole` 定義を探します。 5. `resourceNames` セクションで、以前に作成したシークレットの名前を、プラグインがアクセスを許可されたシークレットのリストに追加します。 ```yaml {: codeblock} kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: ibmcloud-object-storage-secret-reader rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["<secret_name1>","<secret_name2>"] verbs: ["get"] ``` 6. 変更を保存し、作業ディレクトリーに移動します。 -
ibm-object-storage-pluginをクラスターにインストールします。 このプラグインをインストールすると、事前定義されたストレージ・クラスがクラスターに追加されます。 IBM Cloud Object Storage のサービス資格情報が入った Kubernetes シークレットにだけアクセスできるように IBM Cloud Object Storage プラグインを制限するための前の手順を実行し、まだtemplatesディレクトリーをターゲットにしている場合は、ディレクトリーを作業ディレクトリーに変更してください。 バケットで利用可能なストレージ容量に制限を設けるには、--set quotaLimit=trueを設定します。 VPCクラスターのみ :VPC上で許可されたIPを有効にするには、--set bucketAccessPolicy=trueオプションを設定します。
インストール時に --set quotaLimit=true オプションを設定しないと、PVC の割り当て量を設定できません。
Windows 以外のオペレーティング・システム用の helm ibmc install コマンド例。
helm ibmc install ibm-object-storage-plugin ibm-helm/ibm-object-storage-plugin --set license=true [--set quotaLimit=true/false] [--set bucketAccessPolicy=true/false] [--set allowCrossNsSecret=true/false]
helm install コマンドの Windows の場合の例。
helm install ibm-object-storage-plugin ./ibm-object-storage-plugin --set dcname="${DC_NAME}" --set provider="${CLUSTER_PROVIDER}" --set workerOS="${WORKER_OS}" --set region="${REGION} --set platform="${PLATFORM}" --set license=true [--set bucketAccessPolicy=false]
quotaLimit- 割り当て量制限は、バケットに使用可能なストレージの最大量 (バイト単位) を設定します。 このオプションを
trueに設定した場合、PVC の作成時に、それらの PVC によって作成されるバケットの割り当て量は PVC サイズと等しくなります。 デフォルト値はtrueです。 allowCrossNsSecret- デフォルトでは、プラグインは PVC 名前空間以外の名前空間で Kubernetes シークレットを検索します。 このオプションを
falseに設定すると、プラグインは PVC 名前空間でのみ Kubernetes シークレットを検索します。 デフォルト値はtrueです。 kubeDriver/usr/libexec/kubernetesに設定します。DC_NAME- クラスター・データ・センター。 データ・センターを取得するには、
kubectl get cm cluster-info -n kube-system -o jsonpath="{.data.cluster-config\.json}{'\n'}"を実行します。SET DC_NAME=<datacenter>を実行して、データ・センターの値を環境変数に保管します。 オプション:$env:DC_NAME="<datacenter>"を実行して、Windows PowerShell で環境変数を設定します。 CLUSTER_PROVIDER- インフラストラクチャー・プロバイダー。 この値を取得するには、
kubectl get nodes -o jsonpath="{.items[*].metadata.labels.ibm-cloud\.kubernetes\.io\/iaas-provider}{'\n'}"を実行します。 前のステップからの出力にsoftlayerが含まれている場合は、CLUSTER_PROVIDERを"IBMC"に設定します。 出力にgc、ng、またはg2が含まれている場合は、CLUSTER_PROVIDERを"IBMC-VPC"に設定します。 環境変数にインフラストラクチャー・プロバイダーを保管します。 例えば、SET CLUSTER_PROVIDER="IBMC-VPC"などです。 WORKER_OSおよびPLATFORM- ワーカー・ノードのオペレーティング・システム。 これらの値を取得するには、
kubectl get nodes -o jsonpath="{.items[*].metadata.labels.ibm-cloud\.kubernetes\.io\/os}{'\n'}"を実行します。 ワーカー・ノードのオペレーティング・システムを環境変数に格納します。 IBM Cloud Kubernetes Service クラスターの場合は、SET WORKER_OS="debian"およびSET PLATFORM="k8s"を実行します。 REGION- ワーカー・ノードのリージョン。 この値を取得するには、
kubectl get nodes -o yaml | grep 'ibm-cloud\.kubernetes\.io/region'を実行します。SET REGION="< region>"を実行して、ワーカー・ノードのリージョンを環境変数に保管します。.
IBM Cloud Object Storage プラグインの更新
既存の IBM Cloud Object Storage プラグインを最新バージョンにアップグレードできます。
-
IBM Cloud Object Storage プラグイン Helm リリースの名前と、クラスター内のプラグインのバージョンを取得します。
helm ls -A | grep object出力例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION <release_name> <namespace> 1 2020-02-13 16:05:58.599679 -0500 EST deployed ibm-object-storage-plugin-1.1.2 1.1.2 -
IBM Cloud Helm リポジトリーを更新して、このリポジトリー内のすべての Helm チャートの最新バージョンを取得します。
helm repo update -
IBM Cloud Object Storage
ibmcHelm プラグインを最新バージョンに更新します。helm ibmc --update -
ご使用のオペレーティング・システムの最新バージョンの
ibm-object-storage-pluginをインストールします。Windows 以外のオペレーティング・システム用の
helm ibmc upgradeコマンドの例。helm ibmc upgrade ibm-object-storage-plugin ibm-helm/ibm-object-storage-plugin --set license=true [--set quotaLimit=true/false] [--set bucketAccessPolicy=true/false] [--set allowCrossNsSecret=true/false]helm upgradeコマンドの Windows の場合の例。helm upgrade ibm-object-storage-plugin ./ibm-object-storage-plugin --set dcname="${DC_NAME}" --set provider="${CLUSTER_PROVIDER}" --set workerOS="${WORKER_OS}" --set region="${REGION} --set platform="${PLATFORM}" --set license=true [--set bucketAccessPolicy=false]DC_NAME- クラスター・データ・センター。 データ・センターを取得するには、
kubectl get cm cluster-info -n kube-system -o jsonpath="{.data.cluster-config\.json}{'\n'}"を実行します。SET DC_NAME=<datacenter>を実行して、データ・センターの値を環境変数に保管します。 オプション:$env:DC_NAME="<datacenter>"を実行して、Windows PowerShell で環境変数を設定します。 CLUSTER_PROVIDER- インフラストラクチャー・プロバイダー。 この値を取得するには、
kubectl get nodes -o jsonpath="{.items[*].metadata.labels.ibm-cloud\.kubernetes\.io\/iaas-provider}{'\n'}"を実行します。 前のステップからの出力にsoftlayerが含まれている場合は、CLUSTER_PROVIDERを"IBMC"に設定します。 出力にgc、ng、またはg2が含まれている場合は、CLUSTER_PROVIDERを"IBMC-VPC"に設定します。 環境変数にインフラストラクチャー・プロバイダーを保管します。 例えば、SET CLUSTER_PROVIDER="IBMC-VPC"などです。 WORKER_OSおよびPLATFORM- ワーカー・ノードのオペレーティング・システム。 これらの値を取得するには、
kubectl get nodes -o jsonpath="{.items[*].metadata.labels.ibm-cloud\.kubernetes\.io\/os}{'\n'}"を実行します。 ワーカー・ノードのオペレーティング・システムを環境変数に格納します。 IBM Cloud Kubernetes Service クラスターの場合は、SET WORKER_OS="debian"およびSET PLATFORM="k8s"を実行します。 REGION- ワーカー・ノードのリージョン。 この値を取得するには、
kubectl get nodes -o yaml | grep 'ibm-cloud\.kubernetes\.io/region'を実行します。SET REGION="< region>"を実行して、ワーカー・ノードのリージョンを環境変数に保管します。|
-
ibmcloud-object-storage-pluginが正常にアップグレードされたことを確認します。 CLI 出力でdeployment "ibmcloud-object-storage-plugin" successfully rolled outと表示された場合、プラグインのアップグレードは成功しています。kubectl rollout status deployment/ibmcloud-object-storage-plugin -n ibm-object-s3fs -
ibmcloud-object-storage-driverが正常にアップグレードされたことを確認します。 CLI 出力でdaemon set "ibmcloud-object-storage-driver" successfully rolled outと表示された場合、アップグレードは成功しています。kubectl rollout status ds/ibmcloud-object-storage-driver -n ibm-object-s3fs -
IBM Cloud Object Storage ポッドが
Running状態であることを確認します。kubectl get pods -n <namespace> -o wide | grep object-storage
IBM Cloud Object Storage プラグインの更新に問題がある場合は、 オブジェクト・ストレージ: オブジェクト・ストレージ ibmc Helm プラグインのインストールの失敗およびオブジェクト・ストレージ: IBM Cloud Object Storage プラグインのインストールの失敗を参照してください。
IBM Cloud Object Storage プラグインの削除
クラスター内で IBM Cloud Object Storage をプロビジョンして使用する必要がない場合は、ibm-object-storage-plugin と ibmc Helm プラグインをアンインストールできます。
ibmc Helm プラグインまたは ibm-object-storage-plugin を削除しても、既存の PVC、PV、データは削除されません。 ibm-object-storage-plugin を削除すると、関連するすべてのドライバー・ポッドとデーモン・セットがクラスターから削除されます。つまり、IBM Cloud Object Storage API を直接使用するようにアプリを構成しない限り、クラスターに新しい
IBM Cloud Object Storage をプロビジョンすることはできません。 既存の PVC および PV への影響はありません。
始める前に
- アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
- IBM Cloud Object Storage を使用する PVC や PV がクラスター内にないことを確認します。 特定の PVC をマウントするすべてのポッドをリストするには、
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"を実行します。
ibmc Helm プラグインおよび ibm-object-storage-plugin を削除するには、以下のようにします。
-
ibm-object-storage-pluginHelm インストールの名前を取得します。helm ls -A | grep ibm-object-storage-plugin出力例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ibm-object-storage-plugin default 2 2020-04-01 08:46:01.403477 -0400 EDT deployed ibm-object-storage-plugin-1.1.4 1.1.4 -
ibm-object-storage-pluginプラグインをアンインストールします。helm uninstall <release_name>ibm-object-storage-pluginという名前のリリースのコマンドの例。helm uninstall ibm-object-storage-plugin -
ibm-object-storage-pluginポッドが削除されたことを確認します。kubectl get pod -n <namespace> | grep object-storageCLI 出力にポッドが表示されていなければ、ポッドは正常に削除されています。 CLI 出力にストレージ・クラスが表示されていなければ、ストレージ・クラスは正常に削除されています。
-
ストレージ・クラスが削除されたことを確認します。
kubectl get sc | grep s3 -
OS X または Linux ディストリビューションを使用する場合は、
ibmcHelm プラグインを削除します。 Windows を使用する場合、このステップは不要です。ibmcHelm プラグインを削除します。
helm plugin uninstall ibmc ``` 2. `ibmc` プラグインが削除されたことを確認します。 CLI 出力に `ibmc` プラグインがリストされない場合、`ibmc` プラグインは正常に削除されています。 ```sh {: pre} helm plugin list ``` 出力例 ```sh {: screen} NAME VERSION DESCRIPTION ```
オブジェクト・ストレージ構成の決定
IBM Cloud Kubernetes Service には、特定の構成でバケットを作成するために使用できる事前定義ストレージ・クラスが用意されています。
-
IBM Cloud Kubernetes Service で使用可能なストレージ・クラスをリストします。
kubectl get sc | grep s3出力例
ibmc-s3fs-cold-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-cold-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-perf-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-perf-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-perf-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-perf-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-vault-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-vault-regional ibm.io/ibmc-s3fs 8m -
データ・アクセス要件に合ったストレージ・クラスを選択します。 ストレージクラスによって、バケットのストレージ容量、読み取りおよび書き込み操作、ならびに送信帯域幅が決まります。 どのオプションが適切かは、サービスインスタンスへのデータの読み取りおよび書き込みの頻度によって異なります。
- Standard: このオプションは、頻繁にアクセスされるホット・データに使用されます。 Web アプリやモバイル・アプリが一般的なユース・ケースです。
- Vault: このオプションは、アクセス頻度の低い (月 1 回以下程度) ワークロードまたはクール・データに使用されます。 アーカイブ、短期データ保存、デジタル資産の保持、テープの交換、および災害復旧が一般的なユース・ケースです。
- Cold: このオプションは、めったにアクセスされない (90 日に 1 回以下程度) コールド・データ、または非アクティブ・データに使用されます。 アーカイブ、長期バックアップ、コンプライアンスのために保持する履歴データ、またはめったにアクセスされないワークロードとアプリが一般的なユース・ケースです。
- 「 スマート 」:このオプションは、特定の使用パターンに当てはまらないワークロードやデータ、あるいは規模が大きすぎて使用パターンを特定または予測できないワークロードやデータに使用されます。
-
バケットに格納されるデータの回復力のレベルを決定します。 詳細については、リージョンおよびエンドポイントを参照してください。
- Cross-region: このオプションを使用すると、地理位置情報内の 3 つのリージョンにまたがってデータが格納されるため、最大限の可用性が実現します。 複数のリージョンに分散されたワークロードがある場合、要求は最も近いリージョンのエンドポイントにルーティングされます。 地理位置情報の API エンドポイントは、クラスターの場所に基づいて、以前にインストールした
ibmcHelm プラグインによって自動的に設定されます。 例えば、クラスターがUS Southにある場合、ストレージ・クラスはバケットのUS GEOAPI エンドポイントを使用するように構成されます。 - Regional: このオプションを使用すると、データが 1 つのリージョン内の複数のゾーンに複製されます。 同じリージョンに複数のワークロードがある場合は、Cross-region のセットアップよりも待ち時間が低くなり、パフォーマンスが向上します。 リージョン・エンドポイントは、クラスターの場所に基づいて、以前にインストールした
ibmHelm プラグインによって自動的に設定されます。 例えば、クラスターがUS Southにある場合、ストレージ・クラスはバケットのリージョン・エンドポイントとしてUS Southを使用するように構成されます。
- Cross-region: このオプションを使用すると、地理位置情報内の 3 つのリージョンにまたがってデータが格納されるため、最大限の可用性が実現します。 複数のリージョンに分散されたワークロードがある場合、要求は最も近いリージョンのエンドポイントにルーティングされます。 地理位置情報の API エンドポイントは、クラスターの場所に基づいて、以前にインストールした
-
ストレージ・クラスの詳細な IBM Cloud Object Storage バケット構成を確認します。
kubectl describe storageclass <storageclass_name>出力例
Name: ibmc-s3fs-standard-cross-region IsDefaultClass: No Annotations: <none> Provisioner: ibm.io/ibmc-s3fs Parameters: ibm.io/chunk-size-mb=16,ibm.io/curl-debug=false,ibm.io/debug-level=warn,ibm.io/iam-endpoint=https://iam.bluemix.net,ibm.io/kernel-cache=true,ibm.io/multireq-max=20,ibm.io/object-store-endpoint=https://s3-api.dal-us-geo.objectstorage.service.networklayer.com,ibm.io/object-store-storage-class=us-standard,ibm.io/parallel-count=2,ibm.io/s3fs-fuse-retry-count=5,ibm.io/stat-cache-size=100000,ibm.io/tls-cipher-suite=AESGCM AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none>ibm.io/chunk-size-mb- IBM Cloud Object Storage に対して読み取りまたは書き込みが行われるデータ・チャンクのサイズ (メガバイト単位)。 名前に
perfが指定されたストレージ・クラスは、52 メガバイトでセットアップされます。 名前にperfが指定されていないストレージ・クラスは、16 メガバイトのチャンクを使用します。 例えば、1GBのファイルを読み取る場合、プラグインは、このファイルを複数の 16 メガバイトまたは 52 メガバイトのチャンクで読み取ります。 ibm.io/curl-debug- IBM Cloud Object Storage サービス・インスタンスに送信される要求のロギングを有効にします。 有効にすると、ログが
syslogに送信され、ログを外部ロギング・サーバーに転送することができます。 デフォルトでは、すべてのストレージ・クラスがfalseに設定され、このロギング機能が無効になっています。 ibm.io/debug-level- IBM Cloud Object Storage プラグインによって設定されるロギング・レベル。 すべてのストレージ・クラスは、
WARNロギング・レベルでセットアップされます。 ibm.io/iam-endpoint- IBM Cloud Identity and Access Management (IAM) の API エンドポイント。
ibm.io/kernel-cache- ボリューム・マウント・ポイントのカーネル・バッファー・キャッシュを有効または無効にします。 有効にすると、IBM Cloud Object Storage から読み取られるデータがカーネル・キャッシュに格納され、データへの高速読み取りアクセスが可能になります。 無効の場合、データはキャッシュされず、常に IBM Cloud Object Storage から読み取られます。
standardおよびsmartのストレージクラスではカーネルキャッシュが有効になっており、coldおよびvaultのストレージクラスでは無効になっています。 ibm.io/multireq-max- 1 つのディレクトリー内のファイルをリストするために IBM Cloud Object Storage サービス・インスタンスに送信できる並行要求の最大数。 すべてのストレージ・クラスは、最大 20 個の並行要求でセットアップされます。
ibm.io/object-store-endpoint- IBM Cloud Object Storage サービス・インスタンス内のバケットにアクセスするために使用する API エンドポイント。 エンドポイントは、クラスターのリージョンに基づいて自動的に設定されます。 クラスターが配置されているリージョンとは異なるリージョンにある既存のバケットにアクセスしたい場合は、独自のストレージクラスを作成し、そのバケットのAPIエンドポイントを使用する必要があります。
ibm.io/object-store-storage-class- ストレージ・クラスの名前。
ibm.io/parallel-count- 単一の読み取りまたは書き込み操作のために IBM Cloud Object Storage サービス・インスタンスに送信できる並行要求の最大数。 名前に
perfが指定されたストレージ・クラスは、最大 20 個の並行要求でセットアップされます。perfが指定されていないストレージ・クラスは、デフォルトで 2 つの並行要求でセットアップされます。 ibm.io/s3fs-fuse-retry-count- 操作が失敗したと見なされるまでの読み取りまたは書き込み操作の最大再試行回数。 すべてのストレージ・クラスは、最大 5 回の再試行でセットアップされます。
ibm.io/stat-cache-size- IBM Cloud Object Storage メタデータ・キャッシュ内に保持されるレコードの最大数。 各レコードのサイズの上限は 0.5 キロバイトです。 すべてのストレージ・クラスで、レコードの最大数はデフォルトで 100000 に設定されています。
ibm.io/tls-cipher-suite- IBM Cloud Object Storage への接続が HTTPS エンドポイント経由で確立されるときに使用する必要がある TLS 暗号スイート。 暗号スイートの値は、 OpenSSL フォーマット に準拠している必要があります。 ワーカー・ノードで Ubuntu オペレーティング・システムが実行されている場合、ストレージ・クラスはデフォルトで
AESGCM暗号スイートを使用するようにセットアップされます。 Red Hat オペレーティング・システムが実行されているワーカー・ノードの場合、デフォルトではecdhe_rsa_aes_128_gcm_sha_256暗号スイートが使用されます。
各ストレージ・クラスについて詳しくは、ストレージ・クラス・リファレンスを参照してください。 あらかじめ設定された値のいずれかを変更したい場合は、独自のストレージクラスを作成してください。
-
バケットの名前を決定します。 バケットの名前は、IBM Cloud Object Storage において固有でなければなりません。 IBM Cloud Object Storage プラグインによってバケットの名前を自動的に作成するように選択することもできます。 1 つのバケット内のデータを編成するために、サブディレクトリーを作成できます。
以前に選択したストレージ・クラスによって、バケット全体の料金設定が決定します。 サブディレクトリーに異なるストレージ・クラスを定義することはできません。 異なるアクセス要件を持つデータを格納する場合は、複数の PVC を使用して複数のバケットを作成することを検討してください。
-
クラスターまたは永続ボリューム請求 (PVC) が削除された後もデータとバケットを保持するかどうかを選択します。 PVC を削除すると、必ず PV が削除されます。 PVC の削除時にデータとバケットを自動的に削除するかどうかを選択できます。 IBM Cloud Object Storage サービス・インスタンスは、データに対して選択した保存ポリシーとは独立しているため、PVC の削除時に削除されることはありません。
これで、必要な構成を決定したので、PVC を作成して IBM Cloud Object Storage をプロビジョンする準備ができました。
インストールの検証
ポッドの詳細を確認し、プラグインが正しくインストールされたことを確認します。
-
ドライバー・ポッドをリストして、インストールが成功したことを確認します。
kubectl get pod --all-namespaces -o wide | grep object出力例
ibmcloud-object-storage-driver-9n8g8 1/1 Running 0 2m ibmcloud-object-storage-plugin-7c774d484b-pcnnx 1/1 Running 0 2m1 つの
ibmcloud-object-storage-pluginポッドと 1 つ以上のibmcloud-object-storage-driverポッドが表示されたら、インストールは成功しています。ibmcloud-object-storage-driverポッドの数は、クラスター内のワーカー・ノードの数と等しくなります。 プラグインが正しく機能するためには、すべてのポッドがRunning状態である必要があります。 ポッドが失敗した場合は、障害の根本原因を見つけるためにkubectl describe pod -n ibm-object-s3fs <pod_name>を実行します。 -
ストレージ・クラスが正常に作成されたことを確認します。
kubectl get sc | grep s3出力例
ibmc-s3fs-cold-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-cold-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-perf-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-perf-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-smart-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-perf-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-perf-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-standard-regional ibm.io/ibmc-s3fs 8m ibmc-s3fs-vault-cross-region ibm.io/ibmc-s3fs 8m ibmc-s3fs-vault-regional ibm.io/ibmc-s3fs 8mIBM Cloud Object Storage ストレージ・クラスの 1 つをデフォルト・ストレージ・クラスとして設定する場合は、
kubectl patch storageclass <storageclass> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'を実行します。<storageclass>を IBM Cloud Object Storage ストレージ・クラスの名前に置き換えます。 -
手順に従ってオブジェクト・ストレージをアプリに追加します。
IBM Cloud Object Storage プラグインのインストールに問題がある場合は、 オブジェクト・ストレージ: オブジェクト・ストレージ ibmc Helm プラグインのインストールの失敗およびオブジェクト・ストレージ: IBM Cloud Object Storage プラグインのインストールの失敗を参照してください。