Можно ли изменить размер диска пула узлов в GKE с помощью Terraform без повторного создания (сначала удалить, а затем снова создать с новыми настройками) кластера?
Я хочу автоматизировать миграцию пула узлов с рабочими нагрузками без повторного создания кластера и без простоев.
Это вывод, который я получил, когда увеличил кластер, он убивает и воссоздает весь пул узлов, и я этого не хочу.
Вы не можете уменьшить размер диска, но можете создать новый диск меньшего размера и добавить их к новым узлам.
Ссылка:
Вы можете только увеличить, а не уменьшить размер диска. Чтобы уменьшить размер диска, необходимо создать новый диск меньшего размера. Пока вы не удалите исходный диск большего размера, плата взимается за оба диска.
Https://cloud.google.com/compute/docs/disks/resize-persistent-disk
Как сказал Энрике, вы можете увеличить размер, но не можете уменьшить его.
resource "google_compute_disk" "test-np5-data1" {
project = <project_id>
name = "disk"
type = "pd-standard"
zone = "us-central1-a"
size = 30
}
Так что, если вы хотите увеличить размер диска, вы определенно можете сделать это с помощью terraform.
После увеличения размера диска вам может понадобиться увеличить файловую систему для узлов.
Ссылка: https://cloud.google.com/compute/docs/disks/resize-persistent-disk#resize_partitions
Таким образом, вы можете использовать exec или remote-exec в terraform и SSH для узлов GKE и увеличивать разделы диска.
Обновлять :
На основе вашего обновления вы также обновляете размер диска и тип машины, поэтому я бы рекомендовал использовать lifecycle для создания в первую очередь и перед удалением.
lifecycle {
create_before_destroy = true
}
Не забудьте оцепить и слить узел во время миграции, если запущено несколько реплик и правильно распределено, все будет в порядке.
Это результат, который я получил, когда увеличил кластер, он убивает и воссоздает весь пул узлов, и я этого не хочу. postimg.cc/1g52LsD1
Вы можете использовать обновленный ответ жизненного цикла { create_before_destroy = true } с проверкой деталей.
У меня это не работает с жизненным циклом создания перед удалением, потому что я должен изменить диапазон адресов плоскости управления, иначе возникнет конфликт между двумя кластерами. Я предполагаю, что это можно сделать автоматически (для генерации IP-адреса или чего-то подобного), но я не думаю, что это масштабируемое и безопасное решение. Также в конце процесса, насколько я понимаю, мне нужно вручную перенести все рабочие нагрузки (микросервисы) из старого кластера (или пула узлов) в новый.
Это не похоже на тот способ переноса рабочей нагрузки, который вы можете оцепить и слить узел с помощью terraform также после того, как новые узлы будут запущены и запущены автоматически.
Таким образом, чтобы безопасно изменить спецификации пула узлов, необходимо создать второй пул узлов и переместить туда все рабочие нагрузки, после чего удалить старый. Вы можете сделать это так, как сказал @Enrique Tejada. См.: https://cloud.google.com/kubernetes-engine/docs/tutorials/migrating-node-pool#step_4_migrate_the_workloads Речь идет о типе_машины, но похоже, что и для размера диска то же самое. В настоящее время я борюсь с этим, используя terraform - у меня есть задача дать начальству возможность изменять disk_size и machine_type, изменяя значения в исходном коде, без повторного создания кластера. Кажется, что это невозможно.
Вот похожий вопрос Уменьшить размер загрузочного диска кластера GKE
Это результат, который я получил, когда увеличил кластер, он убивает и воссоздает весь пул узлов, и я этого не хочу. postimg.cc/1g52LsD1