ご利用のクラスターが Kubernetes 1.16 より前のバージョンを実行している場合、または基本ディスクを使用している場合、永続ボリューム要求 (PVC) を更新してディスクボリュームを拡張することはできません。代わりに、基盤となるディスクとそのファイルシステムを直接拡張する必要があります。
適用範囲
このトピックでは、PVC を変更せずに基盤となるディスクを手動で拡張することで、ディスクボリュームを拡張する方法について説明します。ご利用のクラスターが Kubernetes 1.16 より前のバージョンを実行している場合、またはディスクボリュームのオンライン拡張の要件を満たしていない場合に、この方法を使用できます。
この方法では、ECS コンソールでディスクを拡張します。これはクラスター内のリソースには影響しないため、永続ボリューム要求 (PVC) および永続ボリューム (PV) オブジェクトの容量は変更されません。クラスターに表示される PV と PVC の容量を実際の容量と一致させるためには、ディスクボリュームのオンライン拡張を使用することを推奨します。
ビジネスニーズに基づいて方法を選択してください。
-
オンライン拡張: アプリケーションは実行を継続します。ただし、ファイルシステムの拡張中に I/O トラフィックが高い場合、I/O エラーが発生する可能性があります。
-
オフライン拡張: このプロセスでは、アプリケーションとそのディスク I/O が一時停止します。その結果、ファイルシステムの拡張はデータにとってより安全ですが、アプリケーションは一定期間停止します。
基本ディスクはオンライン拡張をサポートしていません。オフライン拡張を使用する必要があります。
以下のセクションでは、静的にプロビジョニングされたディスクボリュームを持つサンプルアプリケーションを使用して、ディスクボリュームの拡張方法を説明します。
オンライン拡張
アプリケーションを実行したまま、ECS コンソールでディスクを拡張します。
ステップ 1: ディスク情報の表示
-
クラスターに接続します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」または「Workbench または CloudShell から kubectl を使用して Kubernetes クラスターに接続する」をご参照ください。
-
ディスクをマウントする Pod を表示し、Pod が実行中状態であることを確認します。
kubectl get pod出力例:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
PVC を表示してディスク 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 でディスクを検索し、ディスクを選択してから、ページ下部の スケールアウト をクリックします。
詳細については、「ディスクの拡張 (Linux)」をご参照ください。
-
表示されたウィザードで、画面の指示に従って拡張を完了します。
-
ターゲットディスクと注意事項を確認する ページで、ディスク情報を確認し、注意事項を読み、次に [リスクを理解し、データをバックアップしました。続行] をクリックします。
-
変更方法とサイズを設定する ページで、拡張用のパラメーターを設定し、スケールアウト をクリックします。
パラメーター
説明
例
新しいディスクサイズ
ディスクを拡張する容量を指定します。新しい容量は現在の容量より小さくすることはできません。
30 GiB
サイズ変更方法
オンライン容量拡張 を選択します。新しい容量は、再起動することなく直ちに有効になります。
オンラインサイズ変更
-
[サイズ変更結果の確認] ページで、ディスクが拡張されていることを確認し、パーティションとファイルシステムの拡張へ をクリックします。
説明ディスクを拡張した後、そのファイルシステムも拡張する必要があります。そうしないと、コンテナ内のストレージ領域は元のサイズのままになります。
-
パーティションとファイルシステムのスケールアウト ページで、クラウドアシスタントで操作 を選択し、クラウドアシスタントに今回の操作権限を付与する を選択して、承認 をクリックします。
操作が完了したら、ディスクとそのファイルシステムの両方が拡張されたことを確認します。
拡張が成功すると、ディスクチェックページに緑色のチェックマークと「ディスクチェックが完了しました。ディスクは使用準備ができています。」というメッセージが表示されます。[オペレーティングシステム内のディスク情報] セクションで、[ディスク容量 (OS)] の値が [容量] の値と一致することを確認します。パーティションの詳細で、パーティション (例:
/dev/vdb) のサイズがディスクの総容量と等しいことを確認します。これにより、パーティションとファイルシステムの両方が正常に拡張されたことが確認できます。
-
オフライン拡張
レプリカ数を 0 に設定してアプリケーションを一時停止し、ディスクを拡張してから、アプリケーションを再起動します。
ステップ 1: ディスク情報の表示とアプリケーションの一時停止
-
クラスターに接続します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」または「Workbench または CloudShell から kubectl を使用して Kubernetes クラスターに接続する」をご参照ください。
-
ディスクをマウントする Pod を表示し、Pod が実行中状態であることを確認します。
kubectl get pod出力例:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
PVC を表示してディスク 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 でディスクを検索し、ディスクを選択してから、ページ下部の スケールアウト をクリックします。
-
表示されたウィザードで、画面の指示に従って拡張を完了します。
-
ターゲットディスクと注意事項を確認する ページで、ディスク情報を確認し、注意事項を読んだ後、[リスクを理解し、データをバックアップしました。次に進む] をクリックします。
-
変更方法とサイズを設定する ページで、拡張用のパラメーターを設定し、スケールアウト をクリックします。
パラメーター
説明
例
新しいディスクサイズ
ディスクを拡張する容量を指定します。新しい容量は現在の容量より小さくすることはできません。
30 GiB
サイズ変更方法
アプリケーションを一時停止すると、ディスクは [未アタッチ] 状態になります。この状態では、オフライン容量拡張 のみが利用可能なオプションです。
オフラインサイズ変更
-
[サイズ変更結果の確認] ページで、ディスクが拡張されたことを確認し、[次のステップ: パーティションとファイルシステムの拡張] をクリックします。
-
パーティションとファイルシステムのスケールアウト ページで、ドキュメントで手動操作 を選択し、パーティションとファイルシステムのスケールアウト (Linux) セクションのドキュメントを表示します。
説明-
ディスクを拡張した後、そのファイルシステムも拡張する必要があります。そうしないと、コンテナ内のストレージ領域は元のサイズのままになります。
-
ディスクが[未アタッチ]状態のため、クラウドアシスタントを使用できません。手動でファイルシステムを拡張する必要があります。
-
-
ステップ 3: ファイルシステムの拡張
以下の手順は、パーティション分割されていないディスクに適用されます。
Kubernetes ではパーティション分割されたディスクを使用しないことを推奨します。
-
PV がパーティション分割されていないディスクを使用している場合、手動でパーティション分割しないでください。ファイルシステムが破損し、データが失われる可能性があります。
-
PV がパーティション分割されたディスクを使用している場合、ファイルシステムを拡張する前にパーティションデバイスを拡張する必要があります。詳細については、「Linux インスタンス上のディスクのパーティションとファイルシステムの拡張」または「Windows インスタンス上のディスクのパーティションとファイルシステムの拡張」をご参照ください。
-
ディスクを ECS インスタンスにアタッチします。
-
ECS コンソールのブロックストレージ ページで、目的のディスクを見つけ、[操作] 列のアタッチ をクリックします。
-
インスタンスにアタッチ ウィザードで、対象の ECS インスタンスを選択し、次へ をクリックします。
重要ディスクを自動的にリリースするオプションは選択しないでください。
-
パーティショニングとファイルシステムのマウント ウィザードで、「初期化方法」セクションの 後で設定 をクリックします。
-
ディスクのステータスが使用中に変更されることを確認します。
-
-
ECS インスタンスに接続します。詳細については、「接続方法」をご参照ください。
-
ディスクのデバイス名を取得します。
<serial>をディスクのシリアル番号に置き換えてください。ディスクのシリアル番号はディスク ID の一部で、d-{ディスクのシリアル番号} という形式です。詳細については、「ブロックストレージデバイスのシリアル番号の表示」をご参照ください。
重要2020年6月10日より前に作成されたディスクにはシリアル番号がありません。これらのディスクでは、`realpath` コマンドを使用してデバイス名を見つけることはできません。代わりに、ディスクをアタッチする前と後に
ls /dev/vd*コマンドを実行し、出力を比較して新しいデバイス名を特定します。realpath /dev/disk/by-id/virtio-<serial>次のサンプル出力は、ディスクのデバイス名が
/dev/vdbであることを示しています。/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 -
Pod が復元されたことを確認します。
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