Одной из распространенных проблем в Kubernetes является длительный запуск подов, особенно если в кластере много сервисов. Давайте разберёмся, как можно ускорить этот процесс.
🚀 1. Используйте лёгкие образы
Выбирайте образы с минимальным количеством зависимостей. Вместо
ubuntu:latest лучше взять alpine или distroless. ⚡ 2. Настройте
readinessProbe и livenessProbe Некорректные пробки могут заставить Kubernetes перезапускать поды или считать их неготовыми дольше, чем нужно. Используйте их осознанно.
🎯 3. Предзагружайте образы (Image Pull Policy)
Если ваши поды используют публичные образы, включите ImagePullPolicy:
IfNotPresent или Never, чтобы не скачивать образ при каждом старте.
containers:
- name: app
image: my-registry/app:latest
imagePullPolicy: IfNotPresent
💾 4. Используйте
InitContainers для подготовки окружения Если поду требуется что-то до старта (например, миграции БД), лучше использовать
InitContainers, чтобы основное приложение стартовало быстрее. 📦 5. Настройте ресурсы
Ограничения CPU и памяти (
requests и limits) могут повлиять на скорость старта пода. Если ресурсов мало, контейнеру придётся ждать, пока Kubernetes выделит ему место.
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
🏎 6. Используйте
preStopHook для graceful shutdown Чтобы уменьшить задержки при перезапуске подов, обрабатывайте завершение работы приложения через
preStopHook.
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 5"]
🔄 7. Включите
startupProbe для долгозапускающихся сервисов Если приложение стартует долго, лучше использовать
startupProbe, чтобы Kubernetes не убивал его раньше времени.
startupProbe:
httpGet:
path: /healthz
port: 8080
failureThreshold: 30
periodSeconds: 5
📲 Мы в MAX
Подпишись 👉@devopslib