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

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

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

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

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

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

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

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

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

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

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

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

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

Разработка

  • Android1 706
  • iOS1 579
  • AI вакансии822
  • Fullstack вакансии697
  • Frontend вакансии598
  • Mobile вакансии30

По стеку

  • Go8 025
  • Java5 176
  • Node.js1 637
  • Kotlin1 393
  • Rust1 331
  • .NET1 254
  • PHP541
  • C++384
  • C#352

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

  • Kubernetes6 272
  • Linux-инфраструктура4 763
  • DevOps вакансии4 564
  • Terraform / IaC3 459
  • Мониторинг и Observability1 587
  • CI/CD1 478
  • 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 269
  • Офисная работа6 545

По уровню

  • Senior вакансии33 244
  • Middle вакансии15 490
  • Junior вакансии5 355

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

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

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

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

Что такое taints и tolerations? Чем они отличаются от nodeSelector и nodeAffinity?

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

Taints/tolerations — механизм отталкивания: узел отталкивает поды (taint), под разрешает себя туда поставить (toleration). nodeSelector и nodeAffinity — механизм притяжения: под выбирает узлы по labels. Taints отталкивают всех, affinity притягивает конкретных.

Taints и Tolerations

Taint устанавливается на узел и говорит: «не размещай сюда поды, если они не имеют подходящего toleration».

# Добавить taint на узел
kubectl taint nodes gpu-node-1 gpu=true:NoSchedule

# Эффекты:
# NoSchedule — новые поды без toleration не будут сюда планироваться
# PreferNoSchedule — мягкий запрет (постарается не ставить, но может)
# NoExecute — выселяет существующие поды без toleration

# Удалить taint
kubectl taint nodes gpu-node-1 gpu=true:NoSchedule-

Toleration в поде разрешает его размещение на узлах с matching taint:

spec:
  tolerations:
    - key: "gpu"
      operator: "Equal"
      value: "true"
      effect: "NoSchedule"
  # Toleration не ПРИВЛЕКАЕТ под к узлу,
  # оно только РАЗРЕШАЕТ туда попасть

Типичные use cases taints:

  • Dedicated узлы для GPU-workloads: nvidia.com/gpu=present:NoSchedule.
  • Изоляция control-plane: node-role.kubernetes.io/control-plane:NoSchedule (дефолт в kubeadm).
  • Временное «maintenance» узла: maintenance=true:NoExecute с опциональным tolerationSeconds.

Taints, tolerations, nodeSelector и nodeAffinity

Kubernetes предоставляет несколько механизмов для управления тем, на каких узлах запускаются поды. Они работают в разных направлениях и с разной гибкостью.

nodeSelector

Простейший механизм: под планируется только на узлы с заданными labels.

spec:
  nodeSelector:
    disktype: ssd
    zone: us-east-1a

Ограничение: только равенство, AND-логика, нет гибкости. Если узел с такими labels недоступен — под зависнет в Pending.

nodeAffinity

Расширенная версия nodeSelector с операторами, OR-логикой и мягкими предпочтениями.

spec:
  affinity:
    nodeAffinity:
      # Жёсткое требование (=nodeSelector, но гибче)
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values: ["amd64"]
              - key: node.kubernetes.io/instance-type
                operator: NotIn
                values: ["t3.nano"]
      # Мягкое предпочтение
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 80
          preference:
            matchExpressions:
              - key: zone
                operator: In
                values: ["us-east-1a"]
        - weight: 20
          preference:
            matchExpressions:
              - key: zone
                operator: In
                values: ["us-east-1b"]

Операторы: In, NotIn, Exists, DoesNotExist, Gt, Lt.

Совместное использование

Типичный паттерн для выделенных GPU-узлов:

# На узле:
# kubectl taint nodes gpu-node-1 nvidia.com/gpu=present:NoSchedule
# kubectl label nodes gpu-node-1 hardware=gpu

spec:
  tolerations:
    - key: "nvidia.com/gpu"
      operator: "Exists"
      effect: "NoSchedule"
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: hardware
                operator: In
                values: ["gpu"]

Toleration позволяет поду попасть на GPU-узел. nodeAffinity гарантирует, что под пойдёт именно туда, а не на любой другой узел.

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

  • Toleration без affinity не гарантирует попадание на нужный узел. Под просто может попасть туда, если свободно. Для гарантии нужна пара taint + affinity.
  • NoExecute выселяет поды немедленно. При добавлении taint NoExecute существующие поды без toleration получают SIGTERM. Используйте tolerationSeconds для graceful period.
  • IgnoredDuringExecution. Affinity проверяется только при планировании. Если labels узла изменились после запуска пода — под не выселяется. Для этого нужен RequiredDuringExecution (beta в K8s 1.27).
  • Системные taints. При недоступности узла K8s автоматически добавляет node.kubernetes.io/unreachable:NoExecute и node.kubernetes.io/not-ready:NoExecute. Системные поды (CoreDNS) имеют toleration с большим tolerationSeconds.
  • podAffinity/podAntiAffinity — дорогая операция. При тысячах подов scheduler тратит значительное время на вычисление affinity. Используйте topologySpreadConstraints как более эффективную альтернативу.
  • Конфликт с Cluster Autoscaler. Если taint+affinity требует узел с конкретными labels, Autoscaler должен знать об этих labels в node group конфигурации — иначе не создаст нужный узел.

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

  • Путать taint и label
  • Считать toleration обязательным placement
  • Не знать effects

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

  • Различает repel и attract
  • Понимает combination pattern
  • Знает NoSchedule и NoExecute

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

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

Источники

  • https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
  • https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
←Предыдущий вопросЧто такое HPA и на чём он работает? Чем отличается от VPA и Cluster Autoscaler?Следующий вопрос→Что такое service mesh и когда он реально нужен? Какие проблемы он решает и какие создаёт?

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

KubernetesGPUnode-poolsscheduling

Вакансии с этим навыком

Kubernetes вакансии
  • Middle Full-Stack Developer (C#/.NET)
  • Middle Full-Stack разработчик (C#/.NET)
  • DevOps Engineer
  • Lead Software Systems Engineer
  • Senior Staff Engineer, Software Defined Dataplane

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

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