2020/08/05

GKEで使っているPersistent Diskのデータ容量を増やす

gkegcp

概要

とあるサービスをGKE上で動かしています。
そのサービスはデータ保存領域をGCEのComput DiskをPersistent Diskとして登録して利用しています。

このDisk容量は、Stackdriver monitoringでモニタリングしているのですが…
利用率が90%を超えた旨のアラートが飛ぶようになったので、対応しました。

単純にDiskをリサイズしてもダメで、パーティションの設定などを行う必要があるのが大変でした。

実施事項

以下の手順でデータ容量を増やして、サービスを再開させました。

サービスを停止

kubectl コマンドを使って、対象のサービスを停止して、Diskをフリーな状態にしました。

  • Deployment
  • PersistentVolumeClaim
  • PersistentVolume

Compute Diskのバックアップ

snapshotを作成しました。

% gcloud beta compute disks snapshot ${DISK_NAME} \
  --project=${PROJECT_ID} \
  --zone=${GCLOUD_ZONE} \
  --snapshot-names=${SNAPSHOT_NAME} \
  --description="${SNAPSHOT_DESC}"

Compute Diskのリサイズ

diskのリサイズを実行しました。

% gcloud beta compute disks resize ${DISK_NAME} \
  --project=${PROJECT_ID} \
  --zone=${GCLOUD_ZONE} \
  --size=${DISK_SIZE}

VMインスタンスを立ち上げ

リサイズしたデータを追加したVMインスタンスを起動します。

  • SSHできるようにFirewallの設定などをしておきます。

SSHで接続したら、以下のコマンドを使って、リサイズした領域が全て使えるように設定変更を行いました。

# mountポイントの作成
$ sudo mkdir -p /mnt/disks/extend
# mount
$ sudo mount -o defaults /dev/disk/by-id/google-my-disk-name-here /mnt/disks/extend
# 使用量を確認
$ sudo df -h
# おまじない
$ sudo e2fsck -f /dev/sdb
# Disk容量の拡張
$ sudo resize2fs /dev/sdb
# 使用量を確認(ちゃんと拡張されたか確認)
$ sudo df -h

VMインスタンスの片付け

  • 上記で作成したVMインスタンスを停止後削除します。
  • Firewallの設定も忘れず削除しました。

サービスを再起動

以下の設定で、Disk容量の部分を変更後

  • PersistentVolumeClaim
  • PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-persistent-volume-here
spec:
  storageClassName: my-storage-class-name-here
  capacity:
    storage: 200Gi
  accessModes:
  - ReadWriteOnce
  gcePersistentDisk:
    pdName: my-disk-name-here
    fsType: ext4

kubectl コマンドを使って、対象のサービスを再起動しました。

  • Deployment
  • PersistentVolumeClaim
  • PersistentVolume

pod起動後、kubectl exec -it podname -n namespace -- bash を使ってログインして df コマンドから容量を確認すると良いかもしれないですね。

以上になります。