Минимизация перезапуска в Kubernetes через emptyDir

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

kubernetesemptydirкеширование

ℹ️ У тебя есть под, который выполняет тяжёлые операции (например, сборку или загрузку большого количества данных), и при каждом перезапуске он теряет прогресс. Это увеличивает время развертывания и создаёт нагрузку на систему.

✔️ Используй временное хранилище с типом emptyDir для кеширования промежуточных данных между перезапусками контейнеров внутри одного пода.

ℹ️ emptyDir — это временная директория, которая создаётся на ноде при запуске пода и сохраняется на протяжении всего времени жизни пода. Пока под не перезапущен (удалён и пересоздан), данные в emptyDir остаются доступными для всех контейнеров в поде.

📑 Пример манифеста:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: app-container
      image: my-app:latest
      volumeMounts:
        - mountPath: /cache
          name: cache-volume
    - name: sidecar-container
      image: helper-image:latest
      volumeMounts:
        - mountPath: /cache
          name: cache-volume
  volumes:
    - name: cache-volume
      emptyDir: {}

Почему это полезно?

  1. 1. Снижение времени перезапуска: данные, которые тяжело пересоздавать, остаются доступными между перезапусками контейнеров.

  2. 2. Кеширование между контейнерами: несколько контейнеров в одном поде могут совместно использовать одну директорию для промежуточных данных.

  3. 3. Экономия ресурсов: уменьшается количество операций ввода-вывода и сетевой нагрузки при скачивании данных или сборке артефактов.

🔥 Использование emptyDir с типом Memory

Для ещё большего ускорения операций можно использовать emptyDir с типом memory, что создаст кеш в оперативной памяти:

volumes:
  - name: cache-volume
    emptyDir:
      medium: "Memory"

ℹ️ Все операции с кешем будут происходить в памяти, что резко увеличит скорость чтения и записи.

tags: #полезно #k8s

🧭 @recura_tech

Скриншот терминала с примером манифеста Pod для Kubernetes на тёмном фоне и зелёным градиентом, демонстрация emptyDir и mountPath /cache.
Пример манифеста Pod с volume emptyDir для кеширования между контейнерами.

Читайте так же