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

+694новые вакансии за сутки·52 494вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python6 244
  • Облачные технологии4 749
  • QA вакансии1 736
  • Android1 148
  • Инженер данных800
  • Продакт-менеджер321

Разработка

  • iOS1 092
  • Backend вакансии1 046
  • Fullstack вакансии453
  • AI вакансии391
  • Frontend вакансии376
  • Mobile вакансии27

По стеку

  • Go3 590
  • Java2 153
  • Kotlin942
  • Node.js767
  • Rust544
  • .NET496
  • PHP267
  • C++220
  • C#198

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

  • Kubernetes2 686
  • Linux-инфраструктура2 117
  • DevOps вакансии1 960
  • Terraform / IaC1 615
  • CI/CD871
  • Мониторинг и Observability742
  • SRE228
  • Кибербезопасность47

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

  • Аналитик данных495
  • Data Scientist449
  • Бизнес-аналитик351
  • Системный аналитик54

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

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

По регионам

  • Вакансии в США23 835
  • Вакансии в Европе9 341
  • Работа в России3 283
  • Вакансии в Канаде2 140

По формату

  • Удалённые вакансии41 311
  • Релокация в США23 835
  • Гибридная работа4 058
  • Офисная работа2 949

По уровню

  • Senior вакансии20 396
  • Middle вакансии11 620
  • Junior вакансии3 665

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Wise139 вакансий
  • Grab134 вакансии
  • Infobip28 вакансий
  • Adyen23 вакансии
  • Darktrace17 вакансий
  • Spotify15 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий

Вакансии из 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 конфигурации — иначе не создаст нужный узел.

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

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

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

  • Путать 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 вакансии
  • Web Application Engineer - EC First Party Development Department (ECFD)
  • Senior Software Engineer, Advertisement Optimization Group - Merchandising and Advertisement Department (MAD)
  • Software Engineer, Data Management Platform - Global Ad Technology Supervisory Department (GATD)
  • Senior Site Reliability Engineer, Booking Services Search Group - Search Department (SED)
  • DX Solution Lead Engineer - Backoffice Business Support Section, Business Support Development Department (BSD)