Kubernetes: в чем разница между Volumes и Persistent Volumes?
Добрый день.
Пытаюсь понять разницу между Volumes и Persistent Volumes в Kubernetes.
Жизненный цикл Volume зависит от пода: уничтожился под, уничтожился и Volume. Но если я правильно понял, «смерть» Volume не всегда означает смерть данных. Например, если использовать AWS volume или NFS, то данные сохранятся даже после уничтожения Volume.
Вопросы:
1. В чем тогда разница между Volume и PV именно с точки зрения хранения данных? Я понимаю, что PV абстрагирован от подов. Но интересует именно данные: получается, что постоянные данные можно хранить и там и там?
2. Есть ли разница в их настройке и поддержки с точки зрения сложности, времени и т.п.? Например, Volumes настраиваются быстро и просто поддерживаются, а PV — сложнее.
3. Умеют ли Volume или PV «переподключаться» к подам после того, как поды восстановятся после своей смерти?
Persistent Volume используется для хранения данных, которые должны переживать падение пода, а-ля базы данных MySQL или Postgres. Volume который обычный используется для хранения временных данных, скажем, реплики какой-нибудь Cassandra (и то я бы persistent volume для этого использовал) или скажем места для upload файлов в nginx, которые потом будут куда-то переданы. Т.е. если то, что вы хотите хранить в volume, должно оставаться доступным новому поду, если старый упал, используйте persistent.
3. volume может прекратить существование, persistent volume умеет.
Это абстракции Kubernetes, поэтому не стоит вспоминать о AWS volume или NFS.
И поскольку у PV свой lifecycle, они подходят для данных, которые должны "пережить" уничтожение подов.
2. нет
Если мы подключаем Volume типа nfs, разве данные не сохранятся после смерти пода?
Точно не знаю, не пробовал.
Но в целом я повторяю свой совет - как и в других случаях, не использовать недокументированные вещи.
Вполне может быть что в облаке ХХХ NFS сохранится, а на платформе YYY не сохранится.