---
# System prepended metadata

title: 'foo: Scheduler vs Descheduler'

---

# Scheduler vs. Descheduler

# Timeline

* Scheduler intro
  * hearth of k8s
  * herkesin kullandigi ama kimsenin anlatmadigi
* Descheduler intro
  * side-project
  * descheduler framework
  * bizim contribs (HA mode, Helm updates, vs.)
  * grafana dashboards
* Scheduler deep dive
  * nasil?
  * kube-scheduler nedir? api ile nasil konusur?
  * weights
  * multiple scheduler demo
  * KubeSchedulerConfiguration
  * source code refs
* Custom scheduler plugins
  * plugin demo: portworx-like demo
* sig-scheduler meeting, kanallar, docs, KEPs
* final demo: hepsini birlestir
  * interactive demo? en cok secilene deploy et
* 

# Meetings

## 29.4.24

* herkes bir baksin dokumanlara, youtube videolari, blogs

## 2.5.24 (sonraki toplanti)

# Refs

https://kubernetes.io/docs/reference/scheduling/
https://kubernetes.io/docs/tasks/extend-kubernetes/configure-multiple-schedulers/
https://medium.com/@juliorenner123/k8s-creating-a-kube-scheduler-plugin-8a826c486a1
https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/scheduler.go
https://kubernetes.io/docs/concepts/scheduling-eviction/
https://github.com/kubernetes-sigs/descheduler
https://www.youtube.com/watch?v=Qoe3P7iRENI
https://kubernetes.io/docs/reference/scheduling/config/#extension-points

Schedule cycle function: https://github.com/kubernetes/kubernetes/blob/99a8a6fe258a456d51dddd3dec16d168d94e4eb1/pkg/scheduler/schedule_one.go#L139
schedule pod function if pod cannot be scheduled to node it returns fiterror so it'll run post filter plugin if exists to find nomiated node to make sure it to be scheculed in a node in the future cycle: https://github.com/kubernetes/kubernetes/blob/99a8a6fe258a456d51dddd3dec16d168d94e4eb1/pkg/scheduler/schedule_one.go#L390

# CFP

## Title

"Orchestrating Excellence: Navigating Kubernetes Workloads with Scheduler and Descheduler"
"Mastering Kubernetes Optimization: Scheduler and Descheduler in Focus"
"The Art of Balance: A Comparative Analysis of Kubernetes Scheduler and Descheduler"

F: Orchestrating Excellence: A Comparative Analysis of Kubernetes Scheduler and Descheduler Frameworks (E: like it)

## Abstract

Kubernetes clusters are highly dynamic, and their state changes over time because of cluster-wide changes, like the joining, removing, or tainting of nodes. As a result, it could reach an unbalanced state over time. Eventually, cluster balancing is inevitable! Join us in unlocking the full potential of Kubernetes scheduling and descheduling, where every tweak enhances cluster dynamics, by leveraging Kubernetes' exceptional extensibility!

## Description

In this session, we will explore how to navigate the challenges of maintaining balance in a constantly evolving environment, scaling nodes, and optimizing resources. Discover the power of Descheduler in tandem with the Kubernetes Scheduler as we share our experience. From stateless to stateful applications, we'll demystify the complexities.

Schedule!

The heart of Kubernetes beats with its scheduler, orchestrating workloads across nodes with precision. But have you explored its full potential? Let's delve into the Kubernetes scheduler to uncover the possibilities awaiting your cluster's optimization.

De-Schedule!

Have you ever heard of it? We want to raise awareness of the Descheduler tool to show what people can achieve in their cluster.

Decision Intelligence!

Scheduler and Descheduler frameworks, allows you to customize its policies according to your needs! Everyone can provide custom plugins and strategies that fulfill your needs.

------
------
------

You can steer the pods in the right direction to distribute evenly across workloads in runtime. For example, you are scaling up/down nodes to adjust the cluster size by handling over/underutilized nodes. In this way, you can reduce the waste of resources!

Descheduler is the component to have the pods assigned to feasible nodes by the Kubernetes Scheduler, enabling you to handle the pod distribution. It is Kubernetes expanding project to address the balancing concerns on existing clusters.

We are, Trendyol, one of the leading e-commerce companies in Türkiye, runs thousands of VMs to fuel up our Kubernetes clusters to sustain a massive level of availability. Therefore, it's essential to understand the language of the scheduler at this large scale. We are also contributing to the Descheduler!
In this talk, we will enlighten you by succinctly laying out the pros/cons of Descheduler to make an automated future decision for the pods by demystifying a lost companion of the scheduler!


Kubernetes clusters are highly dynamic, and their state changes over time because of cluster-wide changes, like the joining, removing, or tainting of nodes. As a result, it could reach an unbalanced state over time. Eventually, cluster balancing is inevitable!

De-Schedule!

Have you ever heard of it? We want to raise awareness of the Descheduler tool to show what people can achieve in their cluster.

Decision Intelligence!

Descheduler allows you to customize its policies according to your needs! Everyone can provide several "strategies" that match different criteria.

Better SLOs for Everyone!

Give your SLOs more strength! Increase the resilience of the workloads by ensuring to reschedule of replicas among different nodes.

Give this preempt info to audience: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/ : schedule_one.go:472
