クラスタの Kubernetes バージョンが 1.16 より前である場合、またはディスクが基本ディスクである場合、ディスクボリュームのマウントに使用される永続ボリューム要求 ( PVC ) を更新することによって、オンラインディスクボリューム拡張を実行することはできません。この場合、ディスクを手動でサイズ変更し、ファイルシステムを拡張する必要があります。
適用範囲
このトピックでは、PVC を変更せずにディスクのサイズを手動で変更する方法について説明します。クラスタの Kubernetes バージョンが 1.16 より前である場合、またはオンラインディスクボリューム拡張を実行できない場合は、この方法を使用できます。
このモードでは、Elastic Compute Service ( ECS ) 側でディスクのサイズを変更する必要があります。クラスタ内のリソースは影響を受けず、クラスタ側の PVC と PV の容量は変更されません。 PV と PVC に表示されるディスク容量の値が実際のディスク容量と同じであることを確認するには、「サービス中断なしでディスクボリュームを拡張する」トピックの手順を実行することをお勧めします。
ビジネス要件に基づいて、オンラインサイズ変更またはオフラインサイズ変更を選択できます。
オンラインサイズ変更: ディスクのファイルシステムを拡張するときにディスクの I/O スループットが高い場合、ファイルシステムで I/O エラーが発生する可能性があります。この方法を選択した場合、アプリケーションを再起動する必要はありません。
オフラインサイズ変更: アプリケーションを一時停止すると、データのセキュリティを確保するためにディスク I/O が中断されます。ただし、アプリケーションは一定期間中断されます。
基本ディスクは、サービス中断なしでサイズ変更することはできません。
次の例では、動的にプロビジョニングされたディスクボリュームで作成されたアプリケーションを使用して、ディスクボリュームを拡張する方法について説明します。
オンラインサイズ変更
サービス中断なしでディスクのサイズを変更します
手順 1: ディスク情報を確認する
クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」または「Cloud Shell で kubectl を使用して Kubernetes クラスタを管理する」をご参照ください。
ディスクが接続されているポッドに関する情報を表示し、ポッドが Running 状態であることを確認します。
kubectl get pod期待される出力:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38sPVC を表示してディスク ID を取得します。
kubectl get pvc次のコマンド出力は、PVC にバインドされている PV が
d-uf628m33r5rsbi******(クラウドディスクの ID ) であり、容量が 20 GiB であることを示しています。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s
手順 2: ディスクとファイルシステムのサイズを変更する
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。

ディスク ID を使用してアプリケーションに接続されているディスクを見つけ、ディスクを選択し、ページの下部にある [サイズ変更] をクリックします。
表示されるウィザードページで、指示に従ってサイズ変更操作を完了します。
[ディスクの決定と注意事項の確認] ステップで、ディスク情報を確認し、注意事項を読み、[リスクを理解し、データをバックアップしました。続行します。] をクリックします。
[サイズ変更方法と新しいサイズの構成] ステップで、パラメータを構成し、[OK] をクリックします。
パラメータ
説明
例
[新しいディスクサイズ]
ディスクの容量を指定します。値は現在のディスクサイズより小さくすることはできません。
30 GiB
[サイズ変更方法]
[オンラインサイズ変更] をクリックします。インスタンスを再起動する必要なく、新しいディスクサイズがすぐに有効になります。
オンラインサイズ変更
[サイズ変更結果の確認] ステップで、ディスクのサイズが変更されたことを確認し、[次のステップ、パーティションとファイルシステムの拡張] をクリックします。
説明ディスクのサイズを変更した後、ファイルシステムを拡張してアプリケーションのストレージ容量を更新する必要があります。
[パーティションとファイルシステムの拡張] ステップで、[cloud Assistant を使用する] を選択し、[cloud Assistant にこの操作の実行を承認する] を選択して、[cloud Assistant を承認する] をクリックします。
操作を実行した後、ディスクとファイルシステムのサイズが変更されていることを確認します。

オフラインサイズ変更
アプリケーションを一時停止するには、レプリカの数を 0 に設定します。ディスクのサイズを変更した後、アプリケーションを再起動します。
手順 1: ディスク情報を確認し、アプリケーションを一時停止する
クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」または「Cloud Shell で kubectl を使用して Kubernetes クラスタを管理する」をご参照ください。
ディスクが接続されているポッドに関する情報を表示し、ポッドが Running 状態であることを確認します。
kubectl get pod期待される出力:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38sPVC を表示してディスク ID を取得します。
kubectl get pvc次のコマンド出力は、PVC にバインドされている PV が
d-uf628m33r5rsbi******(クラウドディスクの ID ) であり、容量が 20 GiB であることを示しています。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64sアプリケーションのレプリカを 0 にスケールインし、アプリケーションを一時停止します。
kubectl scale sts disk-test --replicas=0期待される出力:
statefulset.apps/disk-test scaled
手順 2: ディスクのサイズを変更する
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。

ディスク ID を使用してアプリケーションに接続されているディスクを見つけ、ディスクを選択し、ページの下部にある [サイズ変更] をクリックします。
表示されるウィザードページで、指示に従ってサイズ変更操作を完了します。
[ディスクの決定と注意事項の確認] ステップで、ディスク情報を確認し、注意事項を読み、[リスクを理解し、データをバックアップしました。続行します。] をクリックします。
[サイズ変更方法と新しいサイズの構成] ステップで、パラメータを構成し、[OK] をクリックします。
パラメータ
説明
例
[新しいディスクサイズ]
ディスクの容量を指定します。値は現在のディスクサイズより小さくすることはできません。
30 GiB
[サイズ変更方法]
アプリケーションが一時停止されると、ディスクは [保留中] 状態になります。この場合、[オフラインサイズ変更] のみを選択できます。
オフラインサイズ変更
[サイズ変更結果の確認] ステップで、ディスクのサイズが変更されたことを確認し、[次のステップ、パーティションとファイルシステムの拡張] をクリックします。
[パーティションとファイルシステムの拡張] ステップで、[ドキュメントを使用する] を選択し、[パーティションとファイルシステムの拡張 ( Linux )] セクションのファイルを表示します。
説明ディスクのサイズを変更した後、ファイルシステムを拡張してアプリケーションのストレージ容量を更新する必要があります。
ディスクが [保留中] 状態であるため、[ Cloud Assistant を使用する] オプションを選択できません。ファイルシステムを手動でサイズ変更できます。
手順 3: ファイルシステムを拡張する
次の操作は、パーティション化されていないディスクに対して実行されます。
Kubernetes ではパーティション化されたディスクを使用しないことをお勧めします。
パーティション化されていないディスクが PV としてマウントされている場合、ディスクのパーティションを手動で作成することはできません。ファイルシステムが破損し、データが失われる可能性があります。
パーティション化されたディスクが PV としてマウントされている場合は、パーティション化されたディスクを拡張した後にファイルシステムを拡張します。詳細については、「Linux インスタンス上のディスクのパーティションとファイルシステムを拡張する」または「Windows インスタンス上のディスクのパーティションとファイルシステムを拡張する」をご参照ください。
ECS インスタンスにディスクを接続します。
ECS コンソールの [ブロックストレージ] ページで、マウントするディスクを見つけ、[アクション] 列の [接続] をクリックします。
[クラウドディスクの接続] ページで、接続する ECS インスタンスを選択し、[次へ] をクリックします。
重要ディスク関連の解放動作は選択しないでください。
[ディスクのパーティション分割とファイルシステムの作成とマウント] ページで、[初期化方法] セクションの [後で構成する] をクリックします。
ディスクの状態が [使用中] に変わることを確認します。
ECS インスタンスに接続します。詳細については、「ECS インスタンスに接続する方法」をご参照ください。
ディスクのデバイス識別子を取得します。
次のサンプルコマンドが使用されます。
<serial>は、ディスクのシリアル番号を示します。ビジネス要件に基づいてシリアル番号を置き換えます。ディスク ID を使用して、ディスクのシリアル番号 (ディスク ID = d - {ディスクシリアル番号} ) をすばやく確認できます。詳細については、「ブロックストレージデバイスのシリアル番号を照会する」をご参照ください。
重要2020 年 6 月 10 日より前に作成されたディスクの場合、シリアル番号機能はサポートされていません。次のコマンドを実行してディスクのデバイス識別子を取得することはできません。ディスクを接続する前後に
ls /dev/vd*コマンドを実行して、ディスクリストを表示できます。次に、コマンド出力の差分を比較して、ターゲットディスクのデバイス識別子を確認します。realpath /dev/disk/by-id/virtio-<serial>次のサンプル出力が返されます。これは、デバイス識別子が
/dev/vdbであることを示しています。/dev/vdbファイルシステムのサイズを変更します。
次のサンプルコマンドが使用されます。値を実際のディスクデバイス識別子に置き換えます。
resize2fs /dev/vdb次のエラーメッセージが返された場合は、プロンプトに従って
e2fsck -f /dev/vdbコマンドを実行してから、resize2fs /dev/vdbコマンドを実行してファイルシステムのサイズを変更します。resize2fs 1.46.0 (29-Jan-2020) Please run 'e2fsck -f /dev/vdb' first.ファイルシステムのサイズを変更すると、次のコマンド出力が表示されます。
resize2fs 1.46.0 (29-Jan-2020) Resizing the filesystem on /dev/vdb to 7864320 (4k) blocks. The filesystem on /dev/vdb is now 7864320 (4k) blocks long.ファイルシステムのサイズが変更されていることを確認します。
次のコマンドを実行して、
/mnt/disk/という名前の一時フォルダを作成し、ディスクをフォルダにマウントします。mkdir /mnt/disk mount /dev/vdb /mnt/disk/ファイルシステムのサイズを確認します。
df /mnt/disk/コマンド出力は、
/dev/vdbの容量が 30 GiB に拡張されたことを示しています。Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /mnt/disk一時フォルダからディスクをアンマウントします。
umount /mnt/disk
ECS インスタンスからディスクをデタッチします。詳細については、「データディスクをデタッチする」をご参照ください。
手順 4: アプリケーションを再起動する
アプリケーションのサイズを 1 つのレプリカに変更し、アプリケーションを再起動します。
kubectl scale sts disk-test --replicas=1期待される出力:
statefulset.apps/disk-test scaledポッドが復元されているかどうかを確認します。
kubectl get pod期待される出力:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 5sファイルシステムのサイズを確認します。
kubectl exec -it disk-test-0 -- df /dataコマンド出力は、マウントパスに対応するファイルシステムのサイズが変更されたことを示しています。
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /data