IBM Cloud ストレージ・ユーティリティー

このトピックでは、 IBM Cloud Kubernetes Service クラスタで未フォーマットのブロック・ストレージを管理するためのユーティリティについて説明します。 ユーティリティと手順は、クラスタ・インフラのタイプによって異なります。

クラシック・クラスター
IBM Cloud Block Storage Attacher プラグインを使用して、raw ブロックストレージをクラシックワーカーノードにアタッチします。
VPC クラスター
VPC ワーカーノードに生の Block Storage for VPC をアタッチするには、 IBM Cloud API または CLI を使用します。 VPC ワーカー・ノードへの raw Block Storage for VPC の追加を 参照してください。

クラシック: IBM Cloud Block Storage Attacher プラグイン (ベータ) のインストール

IBM Cloud Block Storage Attacher プラグインを使用して、未フォーマットおよび未マウントのロー・ブロック・ストレージをクラスター内のクラシック・ワーカー・ノードに接続します。

たとえば、 Portworx、SDSの利用に最適化され、追加のローカルディスクを備えた従来のベアメタルワーカーノードを使用せずに、データを保存する場合などです。 非 SDS のクラシック・ワーカー・ノードにローカル・ディスクを追加するには、IBM Cloud インフラストラクチャー・アカウントでブロック・ストレージ・デバイスを手動で作成し、IBM Cloud Block Volume Attacher を使用してそのストレージを非 SDS ワーカー・ノードに接続する必要があります。

IBM Cloud Block Volume Attacher プラグインは、デーモン・セットの一部としてクラスター内のすべてのワーカー・ノード上にポッドを作成して、後でブロック・ストレージ・デバイスを非 SDS ワーカー・ノードに接続するために使用する Kubernetes ストレージ・クラスをセットアップします。

IBM Cloud Block Volume Attacherプラグインのアップデートまたは削除については、 プラグインのアップデート および プラグインの削除を 参照してください。

  1. こちらの手順に従って、Helm クライアントのバージョン 3 をローカル・マシンにインストールします。

  2. Helm リポジトリーを更新して、このリポジトリーにあるすべての Helm チャートの最新バージョンを取得します。

    helm repo update
    
  3. IBM Cloud Block Volume Attacher プラグインをインストールします。 このプラグインをインストールすると、事前定義されたブロック・ストレージ・クラスがクラスターに追加されます。

    helm install block-attacher iks-charts/ibm-block-storage-attacher --namespace kube-system
    

    出力例

    NAME:   block-volume-attacher
    LAST DEPLOYED: Thu Sep 13 22:48:18 2018
    NAMESPACE: default
    STATUS: DEPLOYED
    RESOURCES:
    ==> v1beta1/ClusterRoleBinding
    NAME                             AGE
    ibmcloud-block-storage-attacher  1s
    ==> v1beta1/DaemonSet
    NAME                             DESIRED  CURRENT  READY  UP-TO-DATE  AVAILABLE  NODE SELECTOR  AGE
    ibmcloud-block-storage-attacher  0        0        0      0           0          <none>         1s
    ==> v1/StorageClass
    NAME                 PROVISIONER                AGE
    ibmc-block-attacher  ibm.io/ibmc-blockattacher  1s
    ==> v1/ServiceAccount
    NAME                             SECRETS  AGE
    ibmcloud-block-storage-attacher  1        1s
    ==> v1beta1/ClusterRole
    NAME                             AGE
    ibmcloud-block-storage-attacher  1s
    NOTES:
    Thank you for installing: ibmcloud-block-storage-attacher.   Your release is named: block-volume-attacher
    Please refer Chart README.md file for attaching a block storage
    Please refer Chart RELEASE.md to see the release details/fixes
    
  4. IBM Cloud Block Volume Attacher デーモン・セットが正常にインストールされていることを確認します。

    oc get pod -n kube-system -o wide | grep attacher
    

    出力例

    ibmcloud-block-storage-attacher-z7cv6           1/1       Running            0          19m
    

    正常にインストールされている場合は、1 つ以上の ibmcloud-block-storage-attacher ポッドが表示されます。 ポッドの数は、クラスター内のワーカー・ノードの数と等しくなります。 すべてのポッドが Running 状態である必要があります。

  5. IBM Cloud Block Volume Attacher のストレージ・クラスが正常に作成されていることを確認します。

    oc get sc | grep attacher
    

    出力例

    ibmc-block-attacher       ibm.io/ibmc-blockattacher   11m
    

IBM Cloud Block Storage Attacher プラグインの更新

既存の IBM Cloud Block Storage Attacher プラグインを最新バージョンにアップグレードできます。

  1. Helm リポジトリーを更新して、このリポジトリーにあるすべての Helm チャートの最新バージョンを取得します。

    helm repo update
    
  2. オプション: 最新の Helm チャートをローカル・マシンにダウンロードします。 そして、パッケージを解凍し、release.md ファイルを参照して最新リリース情報を確認します。

    helm pull iks-charts/ibmcloud-block-storage-plugin
    
  3. IBM Cloud Block Storage Attacher プラグインの Helm チャートの名前を確認します。

    helm ls -A
    

    出力例

    <helm_chart_name>    1           Wed Aug  1 14:55:15 2022    DEPLOYED    ibm-block-storage-attacher-1.0.0    default
    
  4. IBM Cloud Block Storage Attacher を最新バージョンにアップグレードします。

    helm upgrade --force --recreate-pods <helm_chart_name> ibm-block-storage-attacher
    

IBM Cloud Block Volume Attacher プラグインの削除

クラスター内で IBM Cloud Block Storage Attacher プラグインをプロビジョンも使用もしない場合は、Helm チャートをアンインストールできます。

  1. IBM Cloud Block Storage Attacher プラグインの Helm チャートの名前を確認します。

    helm list | grep ibm-block-storage-attacher
    

    出力例

    <helm_chart_name>    1           Wed Aug  1 14:55:15 2022    DEPLOYED    ibm-block-storage-attacher-1.0.0    default
    
  2. Helm チャートを削除することで、IBM Cloud Block Storage Attacher プラグインを削除します。

    helm uninstall <helm_chart_name> -n <namespace>
    
  3. IBM Cloud Block Storage Attacher プラグインのポッドが削除されたことを確認します。

    oc get pod -n kube-system -o wide | grep attacher
    

    CLI 出力にポッドが表示されていなければ、ポッドは正常に削除されています。

  4. IBM Cloud Block Storage Attacher のストレージ・クラスが削除されたことを確認します。

    oc get sc | grep attacher
    

ストレージ・クラスが正常に削除された場合は、CLI 出力にストレージ・クラスが表示されません。

クラシック: 特定のワーカー・ノードへのブロック・ストレージの手動追加

このオプションを使用すると、さまざまなブロックストレージ構成を追加したり、一部のワーカーノードのみにブロックストレージを追加したり、プロビジョニングプロセスをより細かく制御したりすることができます。

  1. クラスタ内のワーカーノードを一覧表示し、ブロックストレージデバイスを追加する非SDSワーカーノードのプライベートIPアドレスとゾーンをメモしておいてください。

    ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
    
  2. ブロックストレージ構成の決定 」の手順 3 および 4 を確認し、非 SDS ワーカーノードに追加するブロックストレージデバイスの種類、サイズ、および IOPS 数を選択してください。

  3. 非 SDS ワーカー・ノードと同じゾーン内にブロック・ストレージ・デバイスを作成します。

    1 GBあたり 2 IOPS の耐久性ブロックストレージ 20 GB をプロビジョニングする例。

    ibmcloud sl block volume-order --storage-type endurance --size 20 --tier 2 --os-type LINUX --datacenter dal10
    

    100 IOPS の 20 GB パフォーマンス・ブロック・ストレージのプロビジョニング例。

    ibmcloud sl block volume-order --storage-type performance --size 20 --iops 100 --os-type LINUX --datacenter dal10
    
  4. ブロック・ストレージ・デバイスが作成されたことを確認して、ボリュームの id を書き留めます。 注: ブロックストレージデバイスがすぐに表示されない場合は、数分間お待ちください。 その後、このコマンドを再実行してください。

    ibmcloud sl block volume-list
    

    出力例

    id         username          datacenter   storage_type                capacity_gb   bytes_used   ip_addr         lunId   active_transactions   
    123456789  IBM02SL1234567-8  dal10        performance_block_storage   20            -            161.12.34.123   0       0   
    
  5. ボリュームの詳細を確認して、Target IPLUN Id を書き留めます。

    ibmcloud sl block volume-detail <volume_ID>
    

    出力例

    NAME                       Value   
    ID                         1234567890   
    User name                  IBM123A4567890-1   
    Type                       performance_block_storage   
    Capacity (GB)              20   
    LUN Id                     0   
    IOPS                       100   
    Datacenter                 dal10   
    Target IP                  161.12.34.123   
    # of Active Transactions   0   
    Replicant Count            0
    
  6. 非 SDS ワーカー・ノードがブロック・ストレージ・デバイスにアクセスすることを許可します。 <volume_ID> を、先ほど取得したブロックストレージデバイスのボリューム ID に置き換え、 <private_worker_IP> を、そのデバイスをアタッチする非 SDS ワーカーノードのプライベート IP アドレスに置き換えてください。

    ibmcloud sl block access-authorize <volume_ID> -p <private_worker_IP>
    

    出力例

    The IP address 123456789 was authorized to access <volume_ID>.
    
  7. 非 SDS ワーカー・ノードが正常にアクセスを許可されたことを確認して、host_iqnusername、および password を書き留めます。

    ibmcloud sl block access-list <volume_ID>
    

    出力例

    ID          name                 type   private_ip_address   source_subnet   host_iqn                                      username   password           allowed_host_id   
    123456789   <private_worker_IP>  IP     <private_worker_IP>  -               iqn.2018-09.com.ibm:ibm02su1543159-i106288771   IBM02SU1543159-I106288771   R6lqLBj9al6e2lbp   1146581   
    

    正常にアクセスが許可された場合は、host_iqnusername、および password が割り当てられています。

  8. ブロック・ストレージ・デバイスをワーカー・ノードに接続します

クラシック: 非 SDS ワーカー・ノードへのロー・ブロック・ストレージの接続

ブロック・ストレージ・デバイスを非 SDS ワーカー・ノードに接続するには、IBM Cloud Block Volume Attacher のストレージ・クラスとブロック・ストレージ・デバイスの詳細を使用して、永続ボリューム (PV) を作成する必要があります。

  1. PV の作成を準備します。

    • mkpvyaml コンテナーを使用した場合は、以下のコマンドを実行します。

      1. pv-<cluster_name>.yaml ファイルを開きます。

        nano pv-<cluster_name>.yaml
        
      2. PV の構成を確認します。

    • ブロックストレージを手動で追加した場合は:

      1. pv.yaml ファイルを作成します。 次のコマンドによって、nano エディターを使用してこのファイルが作成されます。

        nano pv.yaml
        
      2. ブロック・ストレージ・デバイスの詳細を PV に追加します。

        apiVersion: v1
        kind: PersistentVolume
        metadata:
          name: <pv_name>
          annotations:
            ibm.io/iqn: "<IQN_hostname>"
            ibm.io/username: "<username>"
            ibm.io/password: "<password>"
            ibm.io/targetip: "<targetIP>"
            ibm.io/lunid: "<lunID>"
            ibm.io/nodeip: "<private_worker_IP>"
            ibm.io/volID: "<volume_ID>"
        spec:
          capacity:
            storage: <size>
          accessModes:
            - ReadWriteOnce
          hostPath:
              path: /
          storageClassName: ibmc-block-attacher
        
    metadata.name
    PV の名前を入力します。
    ibm.io/iqn
    前に取得した IQN ホスト名を入力します。
    ibm.io/username
    既に取得した IBM Cloud インフラストラクチャーのユーザー名を入力します。
    ibm.io/password
    既に取得した IBM Cloud インフラストラクチャーのパスワードを入力します。
    ibm.io/targetip
    既に取得したターゲット IP を入力します。
    ibm.io/lunid
    既に取得したブロック・ストレージ・デバイスの LUN ID を入力します。
    ibm.io/nodeip
    ブロックストレージデバイスを接続し、かつ、以前にそのブロックストレージデバイスへのアクセスを許可したワーカーノードのプライベートIPアドレスを入力してください。
    ibm.io/volID
    既に取得したブロック・ストレージ・ボリュームの ID を入力します。
    storage
    既に作成したブロック・ストレージ・デバイスのサイズを入力します。 例えば、ブロック・ストレージ・デバイスが 20 ギガバイトの場合は、20Gi と入力します。
  2. ブロック・ストレージ・デバイスを非 SDS ワーカー・ノードに接続するための PV を作成します。

    • mkpvyaml コンテナーを使用した場合は、以下のコマンドを実行します。
        oc apply -f pv-<cluster_name>.yaml
        ```
    - ブロック・ストレージを手動で追加した場合は、以下のコマンドを実行します。
    
    ```sh {: pre}
        oc apply -f pv.yaml
        ```
    
  3. ブロック・ストレージがワーカー・ノードに正常に接続されたことを確認します。

    oc describe pv <pv_name>
    

    出力例

    NAME:            kube-wdc07-cr398f790bc285496dbeb8e9137bc6409a-w1-pv1
    Labels:          <none>
    Annotations:     ibm.io/attachstatus=attached
                    ibm.io/dm=/dev/dm-1
                    ibm.io/iqn=iqn.2018-09.com.ibm:ibm02su1543159-i106288771
                    ibm.io/lunid=0
                    ibm.io/mpath=3600a09803830445455244c4a38754c66
                    ibm.io/nodeip=10.176.48.67
                    ibm.io/password=R6lqLBj9al6e2lbp
                    ibm.io/targetip=161.26.98.114
                    ibm.io/username=IBM02SU1543159-I106288771
                    kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{"ibm.io/iqn":"iqn.2018-09.com.ibm:ibm02su1543159-i106288771","ibm.io/lunid":"0"...
    Finalizers:      []
    StorageClass:    ibmc-block-attacher
    Status:          Available
    Claim:           
    Reclaim Policy:  Retain
    Access Modes:    RWO
    Capacity:        20Gi
    Node Affinity:   <none>
    Message:         
    Source:
        Type:          HostPath (bare host directory volume)
        Path:          /
        HostPathType:  
    Events:            <none>
    

    ブロック・ストレージ・デバイスが正常に接続された場合は、ibm.io/dm がデバイス ID (/dev/dm/1 など) に設定され、CLI 出力の Annotations セクションに ibm.io/attachstatus=attached と表示されます。

ボリュームを切り離す場合は、PV を削除します。 切り離されたボリュームは、特定のワーカー・ノードによるアクセスが引き続き許可されて、異なるボリュームを同じワーカー・ノードに接続するために IBM Cloud Block Volume Attacher のストレージ・クラスを使用して新しい PV を作成したときに再接続されます。 元の切り離されたボリュームが再接続されることを回避するには、ibmcloud sl block access-revoke コマンドを使用して、ワーカー・ノードが切り離されたボリュームにアクセスすることを禁止してください。 ボリュームを切り離しても、そのボリュームは IBM Cloud インフラストラクチャー・アカウントから削除されません。 ボリュームの課金をキャンセルするには、該当ストレージを IBM Cloud インフラストラクチャー・アカウントから手動で削除する必要があります

VPC: API を使用した VPC ワーカー・ノードへのロー・Block Storage for VPCの追加

Kubernetes Service API を使用すると、VPC クラスタ内のワーカーノードに、フォーマットされていない生の Block Storage for Classic をVPCクラスタ内のワーカーノードに接続・切断できます。

1 つのボリュームは 1 台のワーカー・ノードにのみ接続できます。 アタッチメントを成功させるには、ボリュームがワーカーノードと同じゾーンにあることを確認してください。

CLI を使用して、ワーカー・ノードのボリューム接続の接続、切り離し、リストを行うこともできます。 詳しくは、ストレージ CLI リファレンスを参照してください。

始める前に

Red Hat OpenShift クラスターにアクセスします

  1. VPC ワーカー・ノードが存在するリージョンとゾーンを確認します。

    ibmcloud oc worker ls -c CLUSTER_NAME
    
  2. 容量とパフォーマンスの要件に最も適した Block Storage for Classic のプロファイルを決定します。

  3. Block Storage for Classic ボリュームをプロビジョンします。 プロビジョンするボリュームは、ワーカー・ノードと同じリソース・グループ、リージョン、およびゾーン内になければなりません。

  4. IAM トークンを取得します。

    ibmcloud iam oauth-tokens
    
  5. Block Storage for Classic インスタンスにアタッチするワーカーノードの ID を取得する。 Block Storage for Classic ボリュームと同じゾーンにあるワーカーノードを必ず選択してください。

    ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
    
  6. POST 要求を使用して、Block Storage for Classic ボリュームをワーカー・ノードに接続します。

    要求の例

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/createAttachment" -H  "accept: application/json" -H  "Authorization: <IAM_token>" -H  "X-Auth-Resource-Group-ID: <resource_group>" -H  "Content-Type: application/json" -d "{  \"cluster\": \"<cluster_name_or_ID>\",  \"volumeID\": \"<volume_ID>\",  \"worker\": \"<worker_ID>\"}"
    
    IAM_token
    現行セッションの IAM OAuth トークン。 この値は、ibmcloud iam oauth-tokens を実行して取得できます。
    cluster_name_or_ID
    クラスターに割り当てられている固有 ID または名前。 この ID は、ibmcloud oc cluster ls を実行することによって取得できます。
    worker_ID
    ボリュームをアタッチするワーカーノードに割り当てられる一意のIDです。 この値は、ibmcloud oc worker ls -c CLUSTER_NAME を実行して取得できます。
    volume_ID
    Block Storage for Classic ボリュームに割り当てられている固有 ID。 ibmcloud is volumes を実行して、Block Storage for Classic ボリュームのリストを取得できます。

    応答例。

    {
        "id": "0111-1aaa11a1-aa1a-111a-111b-1111a1dad1bc",
    "volume": {
        "name": "my-vol",
        "id": "r001-11aa0d59-a1aa-1a11-11ca-ba2bc11e01aa"
    },
    "device": {
        "id": ""
    },
    "name": "volume-attachment",
    "status": "attaching",
    "type": "data"
    }
    
  7. VPC ワーカー・ノードの既存のボリューム接続を確認して、接続を検証します。

API を使用した VPC クラスター内のワーカー・ノードからの未フォーマットのロー Block Storage for Classic の切り離し

DELETE 要求を使用して、VPC ワーカー・ノードからストレージを切断できます。

VPC クラスターからストレージを切断しても、Block Storage for Classic ボリュームやそのボリュームに保管されているデータは削除されません。 ボリュームを手動で削除するまで、料金がかかります。

  1. 削除するストレージボリュームを特定し、そのボリュームIDをメモしておきます。

    ibmcloud is volumes
    
  2. ボリュームについての詳細を取得します。 このコマンドは、ワーカー・ノード ID および接続 ID を戻します。 ワーカー・ノード ID をメモしてください。 次のコマンドで、この ID は「インスタンス名」として返されます。

    ibmcloud is volume <volume_ID>
    
  3. PV のリストを取得します。 このコマンドは、削除するボリュームを使用しているPVCを特定するために利用できる、PVのリストを返します。

    oc get pv
    
  4. ボリュームを使用している PV の詳細を表示します。 どのPVのボリュームを削除すべきかわからない場合は、クラスタ内の各PVに対して describe pv コマンドを実行してください。 PV を使用している PVC をメモします。

    oc describe pv <pv_name>
    
  5. ストレージ・ボリュームがポッドで使用されているかどうかを確認します。 次のコマンドは、ボリュームをマウントするポッド、および関連付けられている PVC を表示します。 ポッドが返されない場合、ストレージは使用されていません。

    oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
    
  6. ボリュームを使用しているポッドがデプロイメントに含まれている場合は、そのデプロイメントを削除します。 ポッドがデプロイメントに含まれていない場合は、ポッドを削除します。

    oc delete deployment <deployment_name>
    
    oc delete pod <pod_name>
    
  7. PVC および PV を削除します。

    oc delete pvc <pvc_name>
    
    oc delete pv <pv_name>
    
  8. IAM トークンを取得します。

    ibmcloud iam oauth-tokens
    
  9. POST 要求を使用して、ストレージを切り離します。

    要求の例

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/deleteAttachment" -H  "accept: application/json" -H  "Authorization: <IAM_token>" -H  "X-Auth-Resource-Group-ID: <resource_group>" -H  "Content-Type: application/json" -d "{  \"cluster\": \"<cluster_name_or_ID\",  \"volumeAttachmentID\": \"<volume_attachment_ID>\",  \"volumeID\": \"<volume_ID>\",  \"worker\": \"<worker_ID>\"}"
    
    IAM_token
    現行セッションの IAM OAuth トークン。 この値は、ibmcloud iam oauth-tokens を実行して取得できます。
    cluster_name_or_ID
    クラスターに割り当てられている固有 ID または名前。 この ID は、ibmcloud oc cluster ls を実行することによって取得できます。
    worker_ID
    ボリュームを接続するワーカー・ノードに割り当てられている固有 ID。 この値は、ibmcloud oc worker ls -c CLUSTER_NAME を実行して取得できます。
    volume_ID
    Block Storage for Classic ボリュームに割り当てられている固有 ID。 ibmcloud is volumes を実行して、Block Storage for Classic ボリュームのリストを取得できます。
    volume_attachment_ID
    ボリューム接続に割り当てられている固有 ID。 この ID は、ibmcloud is volume <volume_ID> を実行することによって取得できます。

API を使用した VPC ワーカー・ノードのボリューム接続の詳細の確認

GET 要求を使用して、VPC ワーカー・ノードのボリューム接続の詳細を取得できます。

  1. IAM トークンを取得します。

    ibmcloud iam oauth-tokens
    
  2. クラスターがデプロイされているリソース・グループの ID を取得します。

    ibmcloud oc cluster get CLUSTER_NAME_OR_ID | grep "Resource Group ID"
    
  3. ボリューム接続の詳細を表示するワーカー・ノードの ID を取得します。 Block Storage for Classic インスタンスと同じゾーンにあるワーカーノードを必ず選択してください。

    ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
    
  4. ワーカー・ノードの既存のボリューム接続のリストを確認します。

    curl -X GET "https://containers.cloud.ibm.com/v2/storage/getAttachments?cluster=<cluster_ID>&worker=<worker_ID>" --header "X-Auth-Resource-Group-ID: <resource_group_ID>" --header "Authorization: <IAM_token>"
    
  5. 特定の接続の詳細を取得します。

    curl -X GET "https://containers.cloud.ibm.com/v2/storage/getAttachment?cluster=<cluster_ID>&worker=<worker_ID>&volumeAttachmentID=<volume_attachment_ID>" --header "X-Auth-Resource-Group-ID: <resource_group_ID>" --header "Authorization: <IAM_token>"
    
    IAM_token
    現行セッションの IAM OAuth トークン。 この値は、ibmcloud iam oauth-tokens を実行して取得できます。
    cluster_ID
    クラスターに割り当てられている固有 ID。 この ID は、ibmcloud oc cluster ls を実行することによって取得できます。
    worker_ID
    ボリュームを接続するワーカー・ノードに割り当てられている固有 ID。 この値は、ibmcloud oc worker ls -c CLUSTER_NAME を実行して取得できます。
    volume_ID
    Block Storage for Classic ボリュームに割り当てられている固有 ID。 ibmcloud is volumes を実行して、Block Storage for Classic ボリュームのリストを取得できます。
    volume_attachment_ID
    ボリューム接続に割り当てられている固有 ID。 この ID は、ibmcloud is volume <volume_ID> を実行することによって取得できます。

VPC: CLI を使用した VPC ワーカー・ノードへのロー Block Storage for VPC の接続

Kubernetes Service CLI を使用して、VPC クラスター内のワーカー・ノードに対して未フォーマットのロー Block Storage for Classic を接続したり、切り離したりすることができます。

1 つのボリュームは 1 台のワーカー・ノードにのみ接続できます。 アタッチメントを成功させるには、ボリュームがワーカーノードと同じゾーンにあることを確認してください。

始める前に

Red Hat OpenShift クラスターにアクセスします

  1. 使用中のストレージボリュームの一覧を表示し、接続するボリュームのIDを確認してください。

    ibmcloud is vols
    
  2. クラスタ内のワーカーノードを一覧表示し、ボリュームをアタッチするワーカーノードのIDをメモしておいてください。

    ibmcloud oc worker ls -c CLUSTER_NAME_OR_ID
    
  3. Block Storage for Classic を VPC ワーカー・ノードに接続します。

    ibmcloud oc storage attachment create --cluster CLUSTER_NAME_OR_ID --volume VOLUME --worker WORKER_ID
    

CLI を使用した VPC ワーカー・ノードからのロー Block Storage for VPC の削除

ibmcloud oc storage attachment rm コマンドを使用して、ワーカー・ノードからストレージを取り外すことができます。

アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

  1. 使用中のストレージボリュームの一覧を表示し、削除するボリュームのIDを確認してください。

    ibmcloud is vols
    
  2. ボリュームを接続するボリュームの詳細 (worker-id など) を取得します。 worker-id が、コマンド出力の Volume Attachment Instance Reference セクションの Instance name としてリストされます。

    ibmcloud is vol <volume-ID>
    

    出力例

    Volume Attachment Instance Reference   Attachment type   Instance ID                                 Instance name                                        Auto delete   Attachment ID                               Attachment name      
                                        data              0727_e18c10d7-7f18-48aa-b5ef-5ed163e54198   kube-bsaucubd07dhl66e4tgg-cluster-default-00000a19   false         0727-3bfe90b0-dc2d-498a-946b-8837a5dad7bc   volume-attachment
    
  3. クラスター内のワーカー・ノード上のストレージ接続をリストし、削除する接続 ID をメモします。

    ibmcloud oc storage attachment ls -c CLUSTER --worker WORKER_ID
    

    出力例:

    Listing volume attachments...
    OK
    ID                                          Name                Status     Type   Volume ID                                   Volume Name                          Worker ID   
    0111-1a111aaa-1111-1111-111a-aaa1a1a11a11   volume-attachment   attached   boot   a001-f11ed1e1-1aa1-11dc-b11d-a0dc111b1111  dissuade-anointer-errand-handbrake   kube-aa1111aa11aaaaa11aa1-cluster-name-default-00000110
    
  4. ストレージ接続を削除します。

    ibmcloud oc storage attachment rm --attachment ATTACHMENT_ID -c CLUSTER --worker WORKER_ID
    
  5. ストレージがワーカー・ノードから削除されたことを確認します。

    ibmcloud oc storage attachment ls -c CLUSTER_ID --worker WORKER_ID
    

ファイル・ストレージおよびブロック・ストレージの PVC データのバックアップとリストア

CoreOS ワーカーを使用する Satellite バージョン 4.13 クラスタでは、バックアップおよびリストア Helm チャートはサポートされません。

IBM Cloud Backup Restore Helm チャートを使用して、ファイル・ストレージまたはブロック・ストレージの永続ボリューム請求 (PVC) の保管データの 1 回限りのバックアップまたはスケジュールによるバックアップを作成できます。 データは、お客様が作成して所有している IBM Cloud Object Storage サービス・インスタンスに保管されます。 IBM Cloud Object Storage サービス・インスタンスにある既存のバックアップを使用して、クラスターの PVC にデータをリストアできます。

「 Helm 」チャートをインストールすると、どうなりますか?
この Helm チャートをインストールすると、PVC データの 1 回限りのバックアップまたは定期的なバックアップを実行したり、IBM Cloud Object Storage にあるデータを PVC にリストアしたりする Kubernetes ポッドがクラスター内に作成されます。 バックアップまたは復元の設定は、 Helm チャートに付属する values.yaml ファイルで行うか、 helm install コマンドでオプションを設定して行います。
どのような制限に注意すべきですか?
ブロックストレージのPVCのデータをバックアップまたは復元するには、そのPVCがアプリにマウントされていない必要があります。 ブロック・ストレージは、RWO アクセス・モードでマウントされます。 このアクセスでは、一度に 1 つのポッドしかブロック・ストレージにマウントできません。 データをバックアップまたはリストアするには、ストレージを使用するポッドを削除して、PVC をアンマウントする必要があります。 データのバックアップまたはリストアが終了したら、ポッドを再作成して、バックアップまたはリストアされた PVC をマウントできます。
始める前に、何が必要ですか?
IBM Cloud Object Storage を使用してデータをバックアップまたはリストアするには、IBM Cloud Object Storage サービス・インスタンスをセットアップし、そのサービスにアクセスするためのサービス資格情報を作成し、データを保持できるバケットを作成する必要があります。

IBM Cloud Object Storage サービス・インスタンスのセットアップ

バックアップ対象データの保存先となる IBM Cloud Object Storage サービスインスタンスを作成し、設定を行います。

  1. HMAC 資格情報を使用する IBM Cloud Object Storage サービス・インスタンスを作成します。
  2. IBM Cloud Object Storage 資格情報を Kubernetes シークレットに保管します
  3. 最初の IBM Cloud Object Storage バケットを作成します。
    1. サービス詳細ページのナビゲーションで、**「バケット」**をクリックします。
    2. 「バケットの作成」 をクリックします。 ダイアログ・ボックスが表示されます。
    3. バケットに対する固有の名前を入力します。 この名前は、IBM Cloud Object Storage 内で、すべてのリージョンおよびすべての IBM Cloud アカウントにわたって固有でなければなりません。
    4. Resiliency 」リストから、データの可用性レベルを選択してください。 詳しくは、IBM Cloud Object Storage のリージョンとエンドポイントを参照してください。 VPC クラスターの場合は、直接エンドポイントをメモします。 例えば、s3.direct.us.cloud-object-storage.appdomain.cloud などです。
    5. データを保存している地域に場所を変更してください。 法律上の理由により、データをすべてのリージョンで保管できるとは限らないことに注意してください。
    6. 「作成」 をクリックします。
  4. バケットの IBM Cloud Object Storage ホスト名を取得します。
    1. 前の手順で作成したバケット名をクリックしてください。
    2. サービス詳細ページのナビゲーションで、「 バケット 」>「 構成 」をクリックします。
    3. バケットのデータにアクセスするためのパブリック URL をメモします。

サービス・インスタンスの構成について詳しくは、IBM Cloud Object Storage 資料を参照してください。

IBM Cloud Object Storage を使用した PVC データのバックアップおよびリストア

IBM Cloud Backup Restore Helm チャートを使用して、ファイル・ストレージまたはブロック・ストレージの PVC のデータを IBM Cloud Object Storage にバックアップしたり、IBM Cloud Object Storage にあるデータをクラスター内の PVC にリストアしたりできます。

始める前に

Helm チャートの ibm-storage-backup ファイルを編集して適用するか、CLI から ibm-storage-restore コマンドを実行して、 values.yaml ポッドまたは helm install ポッドをデプロイできます。

values.yaml ファイルを編集して PVC をバックアップまたはリストアするには、以下のようにします。

  1. 最新のバージョンの Helm チャートをローカル・マシンにダウンロードします。

    helm fetch --untar iks-charts/ibmcloud-backup-restore
    
  2. nano のコマンドラインエディタで、 values.yaml ファイルを開きます。

    nano ibmcloud-backup-restore/values.yaml
    
  3. PVC データをバックアップまたはリストアするように、Helm チャートを構成します。 複数の PVC のバックアップを構成できます。

    values.yaml ファイルを構成してバックアップ・ポッドを作成する例:

    image:
        repository: icr.io/iks-charts/ibmcloud-backup-restore
    pullPolicy: Always
    tag: latest
    ACCESS_KEY_ID: # Example: 10110abab1111bbb111aa1aaa111b1a1
    SECRET_ACCESS_KEY: # Example: a1aba11aaa11b11b11aa1111a1111ba111111111a0b1b11a
    ENDPOINT: # Example: s3.us-east.cloud-object-storage.appdomain.cloud
    BUCKET_NAME: # Example: my-bucket
    BACKUP_NAME: # Example: my_backup
    PVC_NAMES:
        - # Example: my_pvc
    - # Optional example: my_pvc2
    CHART_TYPE: # Example: backup or restore
    BACKUP_TYPE: # Example: incremental
    SCHEDULE_TYPE: # Example: periodic
    SCHEDULE_INFO: # Example: weekly
    
    ACCESS_KEY_ID
    先ほど取得した IBM Cloud Object Storage サービス資格情報のアクセス・キー ID を入力します。
    SECRET_ACCESS_KEY
    先ほど取得した IBM Cloud Object Storage サービス資格情報のシークレットのアクセス・キーを入力します。
    ENDPOINT
    先ほど取得したバケットのパブリック IBM Cloud Object Storage s3 API エンドポイントを入力します。
    BUCKET_NAME
    バックアップ: 先ほど作成した IBM Cloud Object Storage バケットの名前を入力します。 このバケットが、バックアップの実行時に PVC データを保管するために使用されます。 リストア: バックアップが保管されている IBM Cloud Object Storage バケットの名前を入力します。
    BACKUP_NAME
    バックアップ: IBM Cloud Object Storage に作成するバックアップの名前を入力します。 リストア: IBM Cloud Backup Restore Helm チャートを使用して IBM Cloud Object Storage に作成したバックアップの名前を入力します。 IBM Cloud Object Storage サービス・インスタンスに複数のフルバックアップが存在する場合は、PVC は最後のフルバックアップのデータを使用して復元されます。 増分バックアップが存在する場合は、PVC は、復元を開始した日までのすべての増分バックアップを含む、最後のフルバックアップのデータを使用して復元されます。
    PVC_NAMES
    バックアップ :バックアップするPVCの名前を入力してください。 複数のPVCをバックアップするには、各PVCをPVCのリストに追加してください。 クラスター内に存在するバックアップ可能な PVC をリストするには、oc get pvc を実行します。 復元 : IBM Cloud Object Storage からデータを復元するPVCの名前を入力してください。 一度に 1 つの PVC だけにデータをリストアできます。 クラスター内に存在する、データをリストア可能な PVC をリストするには、oc get pvc を実行します。
    CHART_TYPE
    展開するグラフの種類を入力してください。 バックアップ・チャートをデプロイするには、backup と入力します。 リストア・チャートをデプロイするには、restore と入力します。
    BACKUP_TYPE
    バックアップの場合にのみ必要です。 full と入力して完全バックアップを作成するか、 incremental と入力して新規または変更されたファイルのみをバックアップします。 incremental を選択した場合は、SCHEDULING_INFO および SCHEDULING_TYPE オプションを指定する必要があります。 BACKUP_TYPE オプションを指定しない場合、デフォルトでフルバックアップが作成されます。
    SCHEDULE_TYPE
    バックアップの場合にのみ必要です。 スケジュールされたバックアップを作成するには、periodic を入力します。1 回限りのバックアップを作成するには、このオプションを空のままにします。 定期的なバックアップを作成するには、「 SCHEDULE_INFO 」オプションでバックアップ間隔を指定する必要があります。
    SCHEDULE_INFO
    バックアップの場合にのみ必要です。 定期的なバックアップを作成するには、バックアップのスケジュールを決定する必要があります。 hourlydaily、または weekly のいずれかを選択します。 このオプションを設定する場合は、SCHEDULE_TYPEperiodic に設定する必要があります。
  4. values.yaml ファイルを保存して閉じます。

  5. values.yaml ファイルのカスタム設定を使用して、Helm チャートをインストールします。 Helm チャートをインストールしてバックアップまたはリストアを構成すると、ibm-storage-backup ポッドまたは ibm-storage-restore ポッドがクラスターにデプロイされます。 バックアップ・ポッドは PVC のデータを IBM Cloud Object Storage にバックアップし、リストア・ポッドはデータを PVC にリストアします。 <release_name> を Helm チャートの名前に置き換えます。 バックアップ・ポッドとリストア・ポッドは、バックアップまたはリストアを実行する PVC と同じゾーンにインストールしてください。

    • helm install コマンドを使用して Helm チャートをインストールします。
        helm install <release_name> ./ibmcloud-backup-restore -n <namespace>
        ```
        バックアップの出力例:
    
        ```sh {: screen}
        NAME: <release_name>
        LAST DEPLOYED: Mon Jan 20 09:17:02 2020
        NAMESPACE: default
        STATUS: deployed
        REVISION: 1
        TEST SUITE: None
        NOTES:
        Thank you for installing: ibmcloud-backup-restore.   Your release is named: <release_name>
        Please refer Chart README.md file for creating a sample PVC
        Please refer Chart RELEASE.md to see the release details/fixes
        ```
    * オプション: `helm install` コマンドでオプションを設定し、 Helm チャートをインストールします。 `--name` パラメーターを指定してリリースに名前を付けることができます。
    ```sh {: pre}
        helm install <release_name> --set ACCESS_KEY_ID=<access_key_ID> --set SECRET_ACCESS_KEY=<secret_access_key> --set ENDPOINT=<public_bucket_endpoint> --set BUCKET_NAME=<bucket_name> --set BACKUP_NAME=<backup_name> --set PVC_NAMES[0]=<pvc_name1> --set PVC_NAMES[1]=<pvc_name2> --set CHART_TYPE=backup --set BACKUP_TYPE=<backup_type> --set SCHEDULE_TYPE=<schedule_type> --set SCHEDULE_INFO=<schedule_info> ./ibmcloud-backup-restore
        ```
    
  6. データのバックアップまたはリストアが正常に完了したことを確認します。

バックアップ: 1. ibm-storage-backup ポッドの状況が Running になっていることを確認します。 sh {: pre} oc get pods -A | grep backup 出力例

    ```sh {: screen}
    ibm-storage-backup                        1/1     Running             0          64m
    ```
2. `ibm-storage-backup` ポッドのログを参照して、バックアップが成功したことを確認します。 ログに「 `... backup completed` 」というメッセージが表示されたら、バックアップは正常に完了しています。

```sh {: pre}
    oc logs ibm-storage-backup
    ```
    日次バックアップの出力例。

    ```sh {: screen}
    [2019-04-18 16:01:51,157] [utilities : 151] [INFO] *****************Start logging to ./Backup.log
    [2019-04-18 16:01:51,158] [backup : 48] [INFO] Starting backup:
    [2019-04-18 16:01:51,158] [configureOS : 66] [INFO] Configuring duplicity with IBM CloudObjectStorage i.e s3.
    [2019-04-18 16:01:51,158] [backup : 62] [INFO] Configuration done!!!
    [2019-04-18 16:01:51,158] [backup : 78] [INFO] Got all required input from config file!!
    [2019-04-18 16:01:52,366] [backup : 119] [WARNING] Incremental backup was not created
    [2019-04-18 16:01:52,366] [backup : 120] [INFO] duplicity  --no-encryption incremental /myvol s3://s3.us-south.cloud-object-storage.appdomain.cloud/mybucket/helm-backup command failed due to Fatal Error: Unable to start incremental backup.  Old signatures not found and incremental specified
    [2019-04-18 16:01:52,367] [backup : 121] [INFO] A full backup is required before incremental backups can begin. Creating a one-time full backup and will run incremental backups for scheduled backups.
    [2019-04-18 16:01:54,357] [backup : 129] [INFO] Full backup completed
    [2019-04-18 16:01:54,357] [backup : 130] [INFO] Local and Remote metadata are synchronized, no sync needed.
    Last full backup date: none
    --------------[ Backup Statistics ]--------------
    StartTime 1555603313.31 (Thu Apr 18 16:01:53 2019)
    EndTime 1555603313.32 (Thu Apr 18 16:01:53 2019)
    ElapsedTime 0.01 (0.01 seconds)
    SourceFiles 3
    SourceFileSize 20495 (20.0 KB)
    NewFiles 3
    NewFileSize 20495 (20.0 KB)
    DeletedFiles 0
    ChangedFiles 0
    ChangedFileSize 0 (0 bytes)
    ChangedDeltaSize 0 (0 bytes)
    DeltaEntries 3
    RawDeltaSize 15 (15 bytes)
    TotalDestinationSizeChange 183 (183 bytes)
    Errors 0
    -------------------------------------------------
    [2019-04-18 16:01:54,357] [backup : 162] [INFO] Scheduling backup as per configurations, please don't stop this program or run this in background !!!
    [2019-04-18 16:01:54,358] [backup : 166] [INFO] Schedule info is: ['daily']
    [2019-04-18 16:01:54,358] [backup : 172] [INFO] Scheduled for daily!!!
    ```
  1. データが正常にバックアップまたはリストアされたことを確認します。
    • バックアップ:

      1. IBM Cloud Object Storage のリソース・リストで IBM Cloud サービス・インスタンスを見つけます。
      2. ナビゲーションから「 バケット 」を選択し、バックアップ設定で使用したバケットをクリックします。 バックアップが、バケット内のオブジェクトとして表示されます。
      3. 圧縮ファイルを確認します。 *.gz ファイルをダウンロードし、ファイルを解凍して、バックアップ・データを検証できます。
    • リストア:

      1. リストアされたデータが含まれている PVC をマウントするポッドの deployment.yaml ファイルを作成します。 以下の例では、PVC を nginx マウント・ディレクトリーにマウントする /test ポッドをデプロイします。

          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: restore
            labels:
            app: nginx
          spec:
            selector:
              matchLabels:
                app: nginx
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                containers:
                  - image: nginx
                    name: nginx
                    volumeMounts:
                    - name: my-volume # Example: my_volume
                      mountPath: /test # Example: /test
                volumes:
                - name: my-volume # Example: my_volume
                  persistentVolumeClaim:
                    claimName: my-actual-pvc-name # Example: my_pvc
        
        spec.containers.image
        使用するイメージの名前。 IBM Cloud Container Registry アカウント内の使用可能なイメージをリストするには、ibmcloud cr image-list を実行します。
        spec.containers.name
        クラスターにデプロイするコンテナーの名前。
        spec.containers.volumeMounts.mountPath
        コンテナー内でボリュームがマウントされるディレクトリーの絶対パス。 マウント・パスに書き込まれるデータは、物理ブロック・ストレージ・インスタンスのルート・ディレクトリーに保管されます。 異なるアプリ間でボリュームを共有するには、各アプリごとに ボリュームのサブパスを指定することができます。
        spec.containers.volumeMounts.name
        ポッドにマウントするボリュームの名前。
        volumes.name
        ポッドにマウントするボリュームの名前。 通常、この名前は volumeMounts/name と同じです。
        volumes.persistentVolumeClaim.claimName
        使用するPVを結合するPVCの名前。
      2. デプロイメントを作成します。

        oc apply -f deployment.yaml
        
      3. ポッドの状況が「Running」であることを確認します。

        ibm-storage-restore ポッドの状況が「Completed」や「CrashLoopBackOff」に達しない場合、データのリストアに失敗した可能性があります。 oc logs ibm-storage-restore を実行して、失敗の根本原因を見つけてください。

        oc get pods | grep restore
        

        出力例

        restore-7dfc6f4c78-wkcqp                  1/1     Running             0          3m54s
        
      4. ポッドにログインします。

        oc exec <pod_name> -it bash
        
      5. デプロイメント YAML で指定したマウント・ディレクトリーにナビゲートします。

        cd <mount_directory>
        
      6. マウント・ディレクトリー内のファイルをリストして、すべてのデータがマウント・ディレクトリーにリストアされたことを確認します。

        ls
        
      7. クラスターから Helm チャートのインストールを削除します。 この手順は、ブロック・ストレージの PVC にデータをリストアした場合に必要です。 ブロック・ストレージは、RWO アクセス・モードでマウントされます。 このアクセスでは、一度に 1 つのポッドしかブロック・ストレージにマウントできません。 ibm-storage-restore ポッドが既に PVC をマウントしているので、このポッドを削除して PVC を解放して、PVC をクラスター内の別のポッドにマウントできるようにする必要があります。

        helm uninstall <release_name> -n <namespace>
        
      8. バックアップが正常にリストアされました。 これで、PV をバインドする PVC をクラスター内の他の任意のポッドにマウントして、リストアされたファイルにアクセスすることができます。 バックアップされていたコンテナー・データに非 root ユーザーが含まれていた場合は、新規コンテナーに非 root の権限を追加する必要があります。 詳しくは、非 root ユーザーのボリューム・アクセス権限の追加を参照してください。

ストレージ・ボリューム用の IBM Cloud Monitoring のセットアップ

ストレージ・ボリュームを使用しているワークロードに関するアラートを IBM Cloud Monitoring にセットアップします。 詳しくは、アラートを参照してください。

ストレージ・ボリュームがダウンすると、ストレージを使用しているアプリ・ポッドのファイル・システム I/O が低下したり、ネットワーク・エラーが発生したり、レプリカの数の減少につながるクラッシュが発生したりします。 IBM Cloud Monitoring では、アプリのファイルシステム操作が特定の閾値を下回った場合、ネットワークエラーが発生した場合、またはアプリのポッドが「 Ready 」状態に達しなかった場合に通知を受け取れるよう、アラートを設定できます。

  1. コンソールから、ストレージボリュームのアラートを設定したクラスターを選択してください。

  2. **「モニタリング」セクションで、「接続」をクリックして、既存の IBM Cloud Monitoring インスタンスをクラスターに接続します。 インスタンスがない場合は、「インスタンスの作成 (Create an instance)」**をクリックして作成します。 IBM Cloud Monitoring インスタンスのセットアップ方法について詳しくは、インスタンスのプロビジョニングを参照してください。

  3. **「起動」**ボタンをクリックし、IBM Cloud Monitoring ダッシュボードを開きます。

  4. クラスター内で実行されているアプリのファイル・システム使用率アラートを作成します。

    1. IBM Cloud Monitoring コンソールで、 [概要] > [ワークロード ] をクリックします。
    2. アプリがデプロイされている名前空間を選択します。 アプリを見つけて、アプリ上の矢印アイコンをクリックし、**「Kubernetes Pod の概要 (Kubernetes Pod overview)」**を選択します。
    3. **「ファイル・システムの使用率 (File System Utilization)」セクションで、「ポッド別のファイル I/O 処理能力 (File I/O Bandwidth by Pod)」**タイルを確認します。
    4. 過去 1 日または 1 週間の時間枠のファイル I/O の処理能力を確認して、平均処理能力を判別します。 平均帯域幅を閾値として設定し、ファイルI/Oの帯域幅が一定時間、その平均値を下回った場合にアラートを発動させることができます。 たとえば、アプリの平均ファイル I/O 帯域幅が 300B/s の場合、ネットワーク使用率が 300B/s を下回った状態が一定時間続いたときに通知が送信されるようアラートを作成できます。
    5. **「ポッド別のファイル I/O の処理能力 (File I/O Bandwidth by Pod)タイルで、「オプション」メニューをクリックしてから「アラートの作成 (Create alert)」**をクリックしてアラートを作成します。
    6. アラート・メニューの**「通知」**セクションを開き、アラート通知チャネルを作成または選択します。
    7. アラートを保存します。
    8. クラスターにデプロイされているすべてのアプリについて、これらのステップを繰り返します。
    9. 構成したしきい値を編集して手動でアラートをトリガーすることで、作成したアラートをテストします。 例えば、使用率が 300 バイト/秒を下回っている状態が 5 分間続くとトリガーされるようにファイル・システム使用率のアラートを設定した場合、しきい値をアプリの現在の 5 分間の使用率の値より大きくし、at least once オプションを選択します。
    10. アラートが 5 分経過後にトリガーされることを確認します。 アラートを確認したら、値を最初に設定した値に戻します。
  5. クラスター内で実行されているアプリのネットワーク使用率アラートを作成します。

    1. IBM Cloud Monitoring コンソールで、 [概要] > [ワークロード ] をクリックします。
    2. アプリがデプロイされている名前空間を選択します。 アプリを見つけて、アプリ上の矢印アイコンをクリックし、**「Kubernetes Pod の概要 (Kubernetes Pod overview)」**を選択します。
    3. **「ネットワーク使用率 (Network Utilization)」セクションで、「ポッド別のネットワーク要求カウント (Network Request Count by Pod)」**タイルを確認します。
    4. 過去 1 日または 1 週間の時間枠のポッドごとの平均ネットワーク要求カウントを確認して、しきい値を判別します。
    5. **「ポッド別のネットワーク要求カウント (Network Request Count by Pod)タイルで、「オプション」メニューをクリックしてから「アラートの作成 (Create alert)」**をクリックしてアラートを作成します。 アラートのパラメーターを、先ほど確認したしきい値に基づいて設定します。 たとえば、ネットワークの利用率が一定時間、しきい値を下回ったままの場合、アラートが発動します。
    6. アラート・メニューの**「通知」**セクションを開き、アラート通知チャネルを作成または選択します。
    7. アラートを保存します。
    8. クラスターにデプロイされているすべてのアプリについて、これらのステップを繰り返します。
    9. 構成したしきい値を編集して手動でアラートをトリガーすることで、作成したアラートをテストします。 例えば、ポッドごとのネットワーク要求の数が 1 秒あたり 3 つを下回っている状態が 5 分間続くとトリガーされるアラートを設定した場合、アラートのしきい値を編集して 5 分間で確認されたしきい値より少なくなるようにし、at least once オプションを選択します。
    10. アラートが 5 分経過後にトリガーされることを確認します。 アラートを確認したら、値を最初に設定した値に戻します。
  6. クラスター内で実行されているアプリの使用可能なポッドの数のアラートを作成します。

    1. IBM Cloud Monitoring コンソールで、 [概要] > [ワークロード ] をクリックします。
    2. アプリがデプロイされている名前空間を選択します。 アプリを見つけて、アプリ上の矢印アイコンをクリックし、**「Kubernetes Pod の概要 (Kubernetes Pod overview)」**を選択します。
    3. **「ポッドの正常性 (Pod Health)」セクションで、「使用可能なポッドの数 (Pod Availability)」**タイルを確認します。
    4. 過去 1 日または 1 週間の時間枠の使用可能なポッドの数の平均を確認して、しきい値を判別します。
    5. アプリの構成ファイルで、要求されたレプリカの数を確認します。 この数をしきい値として使用して、使用可能なポッドの数が、アプリに対して要求したレプリカの数より少ないときに、アラートを送信するように設定できます。 アプリに対してレプリカを 3 つ要求した場合、使用可能なポッドの数が、要求されたレプリカの数を下回っている状態が一定期間 (例えば 30 分間) 続くとトリガーされる、アラートを設定できます。 この例では、使用可能なポッドの数が、要求されたレプリカの数である 3 つよりも少ないままであるときに、アラートがトリガーされます。
    6. **「使用可能なポッドの数 (Pod Availability)」タイルで、「オプション」メニューをクリックしてから「アラートの作成 (Create alert)」**をクリックしてアラートを作成します。 アラートのパラメーターを、先ほど確認したしきい値と、要求したアプリ・レプリカに基づいて設定します。
    7. アラート・メニューの**「通知」**セクションを開き、アラート通知チャネルを作成または選択します。
    8. アラートを保存します。
    9. クラスターにデプロイされているすべてのアプリについて、これらのステップを繰り返します。
    10. 構成したしきい値を編集して手動でアラートをトリガーすることで、作成したアラートをテストします。 例えば、使用可能なポッドの数が 3 つを下回っている状態が 5 分間続くとトリガーされるように、使用可能なポッドの数のアラートを設定した場合は、そのしきい値を変更して、4 つを下回っている状態が 5 分間続くとアラートがトリガーされるようにし、at least once オプションを選択します。
    11. アラートが 5 分経過後にトリガーされることを確認します。 アラートを確認したら、値を最初に設定した値に戻します。

IBM Cloud Monitoring アラートがトリガーされた場合の永続ストレージのトラブルシューティング

アラートがトリガーされたら、IBM Cloud Monitoring でアラートの詳細を確認し、永続ストレージ、アプリ、ワーカー・ノード、およびクラスターのトラブルシューティング・ガイドを確認してアラートの根本原因を見つけます。 セットアップしたアラートは、ストレージ・ボリュームの問題に関連しているのではなく、アプリ、ワーカー・ノード、またはクラスター内で発生した問題に関連している可能性もあります。