Привет!
Отличная статья про написание Custom Scheduler для Kubernetes! В начале статьи описаны концепты Scheduling:
🍭 После запроса о создании pod попадает в Scheduling Queue
🍭 Далее pod надо назначить на node, это делается в 2 этапа: Scheduling и Binding
🍭 Scheduling происходит в несколько этапов. Сперва «отсекаются» nodes, которые не подходят для запуска pod (например, из-за taints). Далее оставшиеся (подходящие) nodes ранжируются (фильтруются) с целью выбор единственной
🍭 Binding – взаимодействие с Kubelet выбранной node, постановка задачи на создание pod
Изменение приоритетов scheduling может быть осуществлено при помощи plugins, которые могут видоизменять процесс на разных этапах (см. картинку в статье). Общий набор plugins, которые используются в процессе scheduling описывается в profile (грубо говоря, описываем, как и что надо делать, на каком этапе).
Вторая часть статьи посвящена созданию собственного plugin’a – “NetworkTraffic”, его настройке и последующему использованию в качестве «основного» механизма scheduling. Принцип простой - выбираем node на основе анализа сетевого трафика!
Много кода, конфигураций и примеров! Очень наглядно и понятно объясняет концепт принятия решения о том, где именно следует запустить pod
Post #335
714