GKE k8sクラスタのノードのディスクサイズを縮小する方法を説明します。
はじめに
GCEインスタンスのディスクサイズをオンラインで拡張する機能は公式でサポートされていますが、縮小はサポートされていません。
https://cloud.google.com/compute/docs/disks/add-persistent-disk?hl=ja#resize_pd
これについていくつかのワークアラウンドがあることがすでに知られています([1], [2])が、
GKEのノードに使っているGCEインスタンスのディスク縮小の場合はもっと簡単なやり方で実現できます。
ですが Qiita に記事が見つからなかったので書いておきます。
(当たり前過ぎて誰も問題にしないだけかもしれません…)
方法
新しいノードプールを作成して元のノードプールから各Podを移行させてください。
ノードプールというのはGKEのワーカーノードのサブセットです。
新しいノードプールを作成する際に、マシンのブートディスクサイズを所望のサイズまで減らしてください。
ノードプールを作成したあと古いノードプールの各ノードに対して kubectl cordon
を実行して、
さらにその後 kubectl drain
を実行してください。
詳しいやり方は公式ドキュメントを読んでください。
https://cloud.google.com/kubernetes-engine/docs/tutorials/migrating-node-pool