Workloads
Тема дорожной карты · Kubernetes
Нагрузки Kubernetes (Workloads) — объекты API более высокого уровня, управляющие жизненным циклом, масштабированием и размещением Pod'ов от имени приложений, абстрагируясь от сложности непосредственного управления отдельными Pod'ами. Основные типы нагрузок: Deployment для stateless-приложений с rolling-обновлениями и откатом через kubectl rollout; StatefulSet для stateful-приложений, требующих стабильных идентичностей и PersistentVolumeClaim; DaemonSet для запуска Pod'а на каждом узле (или подмножестве узлов) — используется для агентов логирования, CNI-плагинов и node exporter'ов; Job для разовых пакетных задач, выполняемых до завершения; и CronJob для запланированных Job'ов с использованием стандартного синтаксиса cron в spec.schedule. Все нагрузки Kubernetes согласуются контроллерами в kube-controller-manager, непрерывно сравнивающими желаемое состояние, объявленное в спецификации ресурса, с наблюдаемым состоянием Pod'ов и создающими, обновляющими или удаляющими Pod'ы соответственно. HPA (Horizontal Pod Autoscaler) масштабирует реплики Deployment и StatefulSet на основе CPU, памяти или пользовательских метрик Prometheus, тогда как VPA автоматически регулирует resources.requests и resources.limits контейнеров. Нагрузки Kubernetes развёртываются через kubectl apply -f, управляются Helm-чартами или оверлеями Kustomize и синхронизируются из Git-репозиториев Argo CD и Flux в GitOps-рабочих процессах.
Как это работает
Workloads — один из workload-примитивов Kubernetes. Определяет желаемое состояние набора pods — число реплик, pod template, стратегия обновления — а контроллер непрерывно сводит реальное состояние к желаемому. При падении pod или ноды контроллер планирует замену. При обновлении pod template контроллер оркестрирует rolling update с health-проверками между батчами.
Когда применять
Выбирайте Workloads по характеристикам нагрузки: Deployment для stateless-сервисов (HTTP API, воркеры), StatefulSet для stateful с stable network identity (БД, очереди), DaemonSet для one-pod-per-node инфраструктуры (log-коллекторы, CNI), Job для batch-задач, CronJob для запланированных batch. Смешивание типов без нужды создаёт операционную сложность; выбирайте простейший подходящий примитив.
Типичные ошибки
Workload-ловушки: слишком низкие resource requests (pods scheduled, но выселяются под нагрузкой) или слишком высокие (кластер выглядит полным при малом реальном использовании); отсутствие liveness/readiness-проб (load balancer шлёт трафик на полу-стартанутые pods); использование Deployment для stateful-нагрузок, которым нужна StatefulSet-упорядоченность. Всегда измеряйте реальное использование ресурсов до sizing.