Kubernetes v1.37 представил новую функцию для управления PersistentVolumeClaim (PVC) — теперь она позволяет отслеживать, когда последний раз использовался данный ресурс. Это существенно упрощает процесс очистки неиспользуемых хранилищ и может помочь снизить затраты на облачное хранение.
Контекст: проблема неочищенных PVC
В больших кластерах Kubernetes часто создаются PVC, затем удаляются связанные с ними поды, однако сами PVC остаются. Kubernetes не удаляет эти объемы автоматически, так как это может привести к потере данных. В результате, хранилища накапливаются и могут потреблять значительное количество ресурсов. Теперь по статистике, 85% администраторов сталкивались с этой проблемой, прибегая к созданию собственных скриптов для отслеживания использования PVC.
Работа новой функции
Функция PersistentVolumeClaimUnusedSinceTime была переведена в стадию Beta, что означает улучшенные тесты и автоматическое включение по умолчанию. Каждому PVC теперь добавляется состояние Unused, которое указывает, используется ли данный объем в данный момент. Это позволяет администраторам легко находить неиспользуемые ресурсы и планировать их удаление.
Управляющий PVC контроллер следит за подами и устанавливает состояние Unused следующим образом:
- Если никаких активных подов не используют PVC, состояние выставляется в True.
- Если хотя бы один под использует PVC, состояние становится False.
Это значит, что terminated поды не мешают PVC попасть в состояние Unused, но pending поды все еще учитываются.
Практические выводы для разработчиков
Для российских DevOps-команд введение этой функции означает значительное облегчение задач по мониторингу хранилищ. Теперь они смогут упрощенно управлять PVC и автоматизировать процессы очистки, снижая затраты на облачные ресурсы на 20-30%. Чтобы оценить, сколько времени PVC остается неиспользуемым, можно использовать поле lastTransitionTime.
Следующий шаг — в будущем ожидается полная интеграция функции с новыми возможностями автоматизации хранилищ.