Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 260новых вакансий за сутки·70 005вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании6 270
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 400 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python14 550
  • Облачные технологии10 965
  • QA вакансии3 255
  • Android1 702
  • Инженер данных1 270
  • Продакт-менеджер586

Разработка

  • Backend вакансии1 657
  • iOS1 575
  • AI вакансии798
  • Fullstack вакансии672
  • Frontend вакансии578
  • Mobile вакансии30

По стеку

  • Go7 978
  • Java5 162
  • Node.js1 622
  • Kotlin1 384
  • Rust1 326
  • .NET1 258
  • PHP538
  • C++386
  • C#356

DevOps и инфраструктура

  • Kubernetes6 272
  • Linux-инфраструктура4 763
  • DevOps вакансии4 488
  • Terraform / IaC3 459
  • Мониторинг и Observability1 587
  • CI/CD1 482
  • SRE458
  • Кибербезопасность127

Аналитика и данные

  • Аналитик данных683
  • Бизнес-аналитик638
  • Data Scientist622
  • Системный аналитик92

Другие направления

  • Проджект-менеджер202
  • UI/UX дизайн93
  • Ручное тестирование14

По регионам

  • Вакансии в США34 823
  • Вакансии в Европе15 244
  • Работа в России3 882
  • Вакансии в Канаде3 408

По формату

  • Удалённые вакансии54 624
  • Релокация в США34 823
  • Гибридная работа9 286
  • Офисная работа6 546

По уровню

  • Senior вакансии31 197
  • Middle вакансии14 037
  • Junior вакансии5 059

Сейчас нанимают

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме KubernetesВсе вопросы
KubernetesMiddleТеория

Под в Pending. По какому алгоритму ты ищешь причину?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Алгоритм: kubectl describe pod (читаем Events) -> нехватка CPU/RAM на нодах -> taints без tolerations -> nodeSelector/affinity без подходящей ноды -> PVC в Pending -> ResourceQuota исчерпан -> логи kube-scheduler.

Шаг 1: описание пода — первый источник правды

# Самая важная команда
kubectl describe pod <pod-name> -n <namespace>

# Смотрим секцию Events в конце вывода:
# "0/5 nodes are available: 3 Insufficient cpu, 2 node(s) had taint"
# "0/5 nodes are available: 5 Insufficient memory"
# "persistentvolumeclaim not found"
# "didn't match pod anti-affinity rules"
# "no nodes available to schedule pods"

Алгоритм диагностики пода в состоянии Pending

Под остаётся в Pending, когда scheduler не может или не успел назначить его на ноду. Причин несколько: нехватка ресурсов, ограничения affinity/taints, отсутствующий PVC, лимиты namespace. Нужно последовательно исключать каждую.

Шаг 2: нехватка ресурсов

# Проверяем доступные ресурсы на нодах
kubectl describe nodes | grep -A 5 "Allocated resources"

# Или через top (если metrics-server установлен)
kubectl top nodes

# Смотрим requests/limits нашего пода
kubectl get pod <pod-name> -o yaml | grep -A 10 resources

# Итоговые requests по всем подам в namespace
kubectl get pods -n production -o json | \
  jq '.items[].spec.containers[].resources.requests'

Если pod запрашивает 4 CPU, а на всех нодах свободно по 2 — scheduler не найдёт подходящую ноду. Решение: уменьшить requests, добавить ноду или использовать Cluster Autoscaler.

Шаг 3: taints и tolerations

# Смотрим taints на нодах
kubectl describe nodes | grep -i taint
# или
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints

# Типичные taints:
# node.kubernetes.io/not-ready:NoSchedule  — нода NotReady
# node-role.kubernetes.io/control-plane:NoSchedule  — master-нода
# spot=true:NoSchedule  — spot instance
# Если тест показал taint, добавляем toleration в спецификацию пода
spec:
  tolerations:
    - key: "spot"
      operator: "Equal"
      value: "true"
      effect: "NoSchedule"

Шаг 4: affinity и node selector

# Проверяем метки нод
kubectl get nodes --show-labels

# Если в поде есть nodeSelector — проверяем, есть ли нода с такой меткой
kubectl get nodes -l disktype=ssd

# Если пусто — нода с нужной меткой не существует или метка другая
# Пример проблемного nodeSelector
spec:
  nodeSelector:
    disktype: ssd      # нода с такой меткой должна существовать

# Добавить метку ноде
# kubectl label node <node-name> disktype=ssd

Шаг 5: PersistentVolumeClaim

# Если в поде есть volumes с PVC
kubectl get pvc -n <namespace>
# STATUS: Pending — PVC не может получить PV

kubectl describe pvc <pvc-name> -n <namespace>
# Events: "no persistent volumes available for this claim"
# или: "storageclass not found"

# Доступные StorageClass
kubectl get storageclass

# Если PVC ждёт WaitForFirstConsumer — это нормально,
# PV создастся только когда под назначен на ноду

Шаг 6: ResourceQuota в namespace

# Проверяем квоты
kubectl describe resourcequota -n <namespace>

# Если Used >= Hard — новые поды не запустятся
# Решение: увеличить квоту или освободить ресурсы

Шаг 7: логи scheduler

# Если describe pod не даёт ответа — смотрим scheduler
kubectl logs -n kube-system -l component=kube-scheduler --tail=100

# Или события кластера
kubectl get events -n <namespace> --field-selector reason=FailedScheduling
kubectl get events -A --sort-by=.lastTimestamp | tail -30

Шаг 8: проверка ImagePullBackOff как ложный Pending

# Иногда под переходит из Pending в Init или ContainerCreating и зависает
# Проверяем статус init-контейнеров
kubectl get pod <pod-name> -o jsonpath='{.status.initContainerStatuses}'

# Проблемы с образом
kubectl describe pod <pod-name> | grep -A 10 "Events"

Подводные камни

  • Requests != Limits путаница — scheduler смотрит только на requests, не на limits; под с requests: 0 всегда будет запланирован, даже если потом убьёт ноду.
  • Pod anti-affinity блокирует себя — requiredDuringSchedulingIgnoredDuringExecution anti-affinity с одинаковыми метками и топологией ноды сделает запуск более одного пода невозможным.
  • Cluster Autoscaler не масштабирует при taint — если все ноды в ASG имеют taint, а новый под не имеет toleration, autoscaler добавит ноду, но под всё равно не запустится.
  • PVC с ReadWriteOnce на двух нодах — если PV уже смонтирован на node-A, второй под с тем же PVC никогда не запустится на node-B; нужен ReadWriteMany или отдельные PVC.
  • Namespace ResourceQuota без LimitRange — если в namespace есть ResourceQuota, но нет LimitRange, поды без явных requests отклоняются admission webhook.
  • Scheduler extender недоступен — кастомный scheduler extender (например, от GPU оператора) при недоступности блокирует scheduling всех подов с соответствующими ресурсами.

Типичные ошибки

  • Начинать с kubectl logs
  • Не читать Events
  • Путать Pending и CrashLoopBackOff

Что проверяет интервьюер

  • Имеет пошаговый алгоритм
  • Понимает FailedScheduling
  • Проверяет storage и quota

Как вы знаете этот вопрос?

Проверить себя по теме Kubernetes →

Источники

  • https://kubernetes.io/docs/tasks/debug/debug-application/debug-pods/
  • https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
  • https://kubernetes.io/docs/concepts/storage/persistent-volumes/
←Предыдущий вопросЧто такое PersistentVolume, PersistentVolumeClaim и StorageClass? Кто что создаёт?Следующий вопрос→На ноде статус NotReady. Какие шаги предпримешь?

Связанные темы

KubernetesDebuggingkubectlscheduling

Частые вопросы на собеседовании

  • Зачем нужны requests и limits для CPU и памяти? Что будет, если их не задать или задать только limits?
  • Что такое ServiceAccount, Role, ClusterRole, RoleBinding и ClusterRoleBinding? Как они связаны?
  • Сервис не доступен, хотя поды Running и Ready. Как найдёшь, где разрыв?
  • Что такое securityContext? Зачем нужны runAsNonRoot, readOnlyRootFilesystem и drop capabilities?