SlideShare a Scribd company logo
Kubernetes scheduler
deep dive
김동진(dj.kim)
kakaobank corp.
Synopsis
scheduler scenario
What is
How does
extention
Synopsis
kube-scheduler
Kubernetes
master node
worker node
worker node
Kubernetes
master node
worker node
worker node
pod API server
Kubernetes
master node
worker node
worker node
API serverpod
etcd
Kubernetes
master node
worker node
worker node
API serverpod
etcd
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
Kubernetes
master node
worker node
worker node
API server
etcd
scheduler
pod
kubectl
or
api call
What is
How does
Synopsis
kube-scheduler
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName:
Kubernetes
master node
worker node
worker node
API serverpod
etcd
scheduler
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName:worker-1
What is
How does
Synopsis
kube-scheduler
Scheduler #1 - watch
kube-apiserverkube-scheduler
?watch=true
podSpec.NodeName=’’
Scheduler #2 - Pred. filter
kube-apiserverkube-scheduler
?watch=true
predicate
podSpec.NodeName=’’
Scheduler #3 - Priority
kube-apiserverkube-scheduler
?watch=true
predicate
priority podSpec.NodeName=’’
Scheduler #4 - Select Node
kube-apiserverkube-scheduler
?watch=true
predicate
priority
Round-Robin
podSpec.NodeName=’’
Scheduler #5 - bind
kube-apiserverkube-scheduler
?watch=true
predicate
priority
Round-Robin
podSpec.NodeName=’’
bind
그렇다면 어떻게
Scheduler가 pod 정보를 어떻게
받는지
에 대해 파헤쳐 보죠!
master node
worker node
worker node
API server
scheduler
$ curl -H “Authorization: Bearer $TOKEN” $APISERVER/api/v1/pods?watch=true
?watch=true
master node
worker node
worker node
API server
scheduler
$ curl -H “Authorization: Bearer $TOKEN” $APISERVER/api/v1/pods?watch=true
?watch=true
Scheduler
Scheduler
Scheduler
이 부분을
좀 더 자세하게 살펴봅시다
Scheduler
Scheduler
Scheduler
kube-scheduler
schedulerOne
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Scheduler
Scheduler
Scheduler
Scheduler
Scheduler
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PVC
validation
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PVC
validation
findNode
(filter)
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PVC
validation
findNode
(filter)
priorities
Node
(scoring)
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PVC
validation
findNode
(filter)
priorities
Node
(scoring)
select
Host
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PVC
validation
findNode
(filter)
priorities
Node
(scoring)
select
Host
kube-apiserver
이 부분을
좀 더더 자세하게 살펴봅시다
with schedulingQueue
Scheduler
Scheduler
Scheduler
kube-scheduler
schedulerOne SchedulingQueue
pod
Schedule
PodInformer
Scheduler
kube-scheduler
schedulerOne
pod
Schedule
PVC
validation
findNode
(filter)
priorities
Node
(scoring)
select
Host
kube-apiserver
SchedulingQueue PodInformer
그렇다면,
Informer????
kubernetes
API server Scheduler
Controller manager
etcd
Declarative configuration
yaml or json
Describes Desired state
kubernetes control loop
Desired State Current State
watch
action
kubernetes controller
Scheduler
ReplicaSetController
kube-apiserver
controller
kubernetes controller
Scheduler
ReplicaSetController
kube-apiserver
controller
/api/v1/pods
/api/v1/pods
/api/v1/{resource}
kubernetes controller
Scheduler
ReplicaSetController
kube-apiserver
controller
/api/v1/pods
/api/v1/pods
/api/v1/{resource}
cache
cache
cache
serialization
serialization
serialization
serialization
serialization
serialization
deserialization
deserialization
deserialization
Informer
Scheduler
ReplicaSetController
kube-apiserver
controller
informer
Add, Update, Delete
notification hook
serialization
cache
deserialization
Scheduler
kube-scheduler
schedulerOne
pod
Schedule
PVC
validation
findNode
(filter)
priorities
Node
(scoring)
select
Host
kube-apiserver
SchedulingQueue
PodInformer
NodeInformer
PVInformer
PVCInformer
scheduler algorithm
좀 더더더 자세하게 살펴봅시다
predicate
kube-scheduler filtering #default predicate
kube-scheduler filtering #TaintNodesByCondition
kube-scheduler filtering #check node
node kubelet
node.kubernetes.io/unschedulable
Kubernetes Scheduler deep dive
kube-scheduler filtering #TaintNodesByCondition
Scheduler
kube-scheduler
schedulerOne
pod
Schedule
PVC
validation
findNode
(filter)
priorities
(scoring)
select
Host
kube-apiserver
SchedulingQueue
PodInformer
NodeInformer
PVInformer
PVCInformer
predicates
(filter)
scheduler 복잡해요! 성능은??
좀 더더더더자세하게 살펴봅시다
findNodeThatFit
predicates on all the nodes
- CPU intensive
- independent of each other
Concurrently on 16 Go-routines
performance
predicates on all the nodes
- CPU intensive
- independent of each other
Concurrently on 16 Go-routines
if feasible nodes is enough, cancel()
performance
numNodesToFind = predicate func를 멈출 최소 feasible node count
- minimum 100
- if percentageOfNodesToScore
- 100 < numNodesToFind < (총 노드 수) * percentageOfNodesToScore / 100
- if !percentageOfNodesToScore
- 5 < percentageOfNodesToScore = (50 - (총 노드수)/125)
- 100 < numNodesToFind < (총 노드 수) * percentageOfNodesToScore / 100
kube-scheduler #feasible node min count
Scheduler
kube-scheduler
schedulerOne
pod
Schedule
PVC
validation
findNode
(filter)
16 workers
cancel()
prioritiesNode
(scoring)
select
Host
kube-apiserver
SchedulingQueue
PodInformer
NodeInformer
PVInformer
PVCInformer
kube-scheduler priority
kube-scheduler priority #default
priority
kube-scheduler priority
C node D node
A node B node
E node F node
C node
2score ,1weight
D node
1score ,1weight
A node
1score ,1weight
B node
2score ,1weight
E node
2score ,2weight
F node
4score ,1weight
priority
kube-scheduler priority
C node D node
A node B node
E node F node
C node
2score ,1weight
D node
1score ,1weight
A node
1score ,1weight
B node
2score ,1weight
E node
2score ,2weight
F node
4score ,1weight
C node
total: 2
D node
total 1
A node
total: 1
B node
total: 2
E node
total: 4
F node
total: 4
priority
kube-scheduler priority
C node D node
A node B node
E node F node
C node
2score ,1weight
D node
1score ,1weight
A node
1score ,1weight
B node
2score ,1weight
E node
2score ,2weight
F node
4score ,1weight
C node
total: 2
D node
total 1
A node
total: 1
B node
total: 2
E node
total: 4
F node
total: 4
kube-scheduler priority #ResourceLimitsPriorityFunc
Scheduler
kube-scheduler
schedulerOne
pod
Schedule
PVC
validation
findNode
(filter)
16 workers
cancel()
prioritiesNode
(scoring)
16 workers
select
Host
kube-apiserver
SchedulingQueue
PodInformer
NodeInformer
PVInformer
PVCInformer
scheduler internal cache
좀 더더더더자세하게 살펴봅시다
kube-scheduler filtering #assume
scheduler
apiserver
etcd
node
(kubelet)
memory 4G (requested 3G)
CPUs 2 (requested 1)
A pod
request
memory 1G
CPUs 1
kube-scheduler filtering #assume
scheduler
apiserver
etcd
node
(kubelet)
memory 4G (requested 3G)
CPUs 2 (requested 1)
A pod
request
memory 1G
CPUs 1
kube-scheduler filtering #assume
scheduler
apiserver
etcd
node
(kubelet)
memory 4G (requested 3G)
CPUs 2 (requested 1)
A pod
request
memory 1G
CPUs 1
B pod
request
memory 1G
CPUs 1
kube-scheduler filtering #assume
scheduler
apiserver
etcd
node
(kubelet)
memory 4G (requested 4G)
CPUs 2 (requested 2)
A pod
B pod
request
memory 1G
CPUs 1
kube-scheduler filtering #assume
scheduler
apiserver
etcd
node
(kubelet)
memory 4G (requested 3G)
CPUs 2 (requested 1)
A pod
request
memory 1G
CPUs 1
B pod
request
memory 1G
CPUs 1
schedulerCache
assume!!
kube-scheduler filtering
Total requested resource =
running pods request
+
assumed pod request
이제 더더더더더 보지말고
정리를 한번 해보죠.
What is
How does
kube-scheduler
API server
scheduler
controller-manager
etcd
kubelet kube-proxy
docker
kubelet kube-proxy
docker
pod
container
PodSpec.NodeName=’{{ worker node }}’
Desired State Current State
watch
action
What is
How does
kube-scheduler
kube-scheduler
kube-apiserverkube-scheduler
?watch=truepredicate
priority
Round-Robin
bind
podSpec.NodeName=’’
kube-scheduler
kube-apiserverkube-scheduler
?watch=truepredicate
priority
Round-Robin
bind
podSpec.NodeName=’’
informer
kube-scheduler
kube-apiserverkube-scheduler
?watch=truepredicate
priority
Round-Robin
bind
podSpec.NodeName=’’
informer
kube-scheduler
kube-apiserverkube-scheduler
?watch=truepredicate
priority
Round-Robin
bind
podSpec.NodeName=’’
informer
percentageOfNodesToScore
곧 끝나가요..,
마지막 하나만(extension) 더 ...
extend kubernetes scheduler
- change upstream source code
- multiple scheduler ( default && custom)
- scheduler extender
- scheduler framework
change upstream source code
multiple scheduler
master node
worker node
worker node
API server
kubectl
or
api call
pod
Custom
scheduler
Default
scheduler
spec:
schedulerName: CustomScheduler
scheduler extender
master node
worker node
worker node
API server
priority
kubectl
or
api call
pod
Scheduler
Extender
Default
scheduler
predicate
bind
scheduler extender
master node
worker node
worker node
API server
priority
kubectl
or
api call
pod
Scheduler
Extender
Default
scheduler
predicate
bind
/api/custom.metrics.k8s.io
scheduler extender
출처: 알리바바 클라우드(https://www.alibabacloud.com/blog/gpu-sharing-scheduler-extender-now-supports-fine-grained-kubernetes-clusters_594926)
scheduler extender #problem
- extension points are limited (predicate, priority, ..)
- latency (data format, webhook)
- hard to aborting scheduling
- can’t use scheduler’s cache
scheduler framework
Thank u for ur attention.
김동진(dj.kim)
kakao bank corp.
Kubernetes Scheduler deep dive
Kubernetes Scheduler deep dive

More Related Content

What's hot (20)

PDF
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
Julian Mazzitelli
 
PPTX
Docker Swarm for Beginner
Shahzad Masud
 
PDF
An intro to Kubernetes operators
J On The Beach
 
PDF
From airflow to google cloud composer
Bruce Kuo
 
PDF
Cloud Native Application
VMUG IT
 
PDF
Openshift serverless Solution
Ryan ZhangCheng
 
PDF
An overview of the Kubernetes architecture
Igor Sfiligoi
 
PDF
Autoscaling Kubernetes
craigbox
 
PDF
[GitOps] Argo CD on GKE (v0.9.2).pdf
Jo Hoon
 
PDF
Kubernetes Networking
CJ Cullen
 
PPTX
Prometheus (Prometheus London, 2016)
Brian Brazil
 
PDF
Designing a complete ci cd pipeline using argo events, workflow and cd products
Julian Mazzitelli
 
PDF
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Etsuji Nakai
 
PPTX
Turning Virtual Machines Cloud-Native using KubeVirt
Suman Chakraborty
 
PDF
Introduction to Docker Compose
Ajeet Singh Raina
 
PDF
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
Henning Jacobs
 
PDF
GitOps and ArgoCD
Omar Fathy
 
PDF
Apache Airflow Architecture
Gerard Toonstra
 
PDF
Kubernetes Secrets Management on Production with Demo
Opsta
 
PDF
GitOps 101 Presentation.pdf
ssuser31375f
 
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
Julian Mazzitelli
 
Docker Swarm for Beginner
Shahzad Masud
 
An intro to Kubernetes operators
J On The Beach
 
From airflow to google cloud composer
Bruce Kuo
 
Cloud Native Application
VMUG IT
 
Openshift serverless Solution
Ryan ZhangCheng
 
An overview of the Kubernetes architecture
Igor Sfiligoi
 
Autoscaling Kubernetes
craigbox
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
Jo Hoon
 
Kubernetes Networking
CJ Cullen
 
Prometheus (Prometheus London, 2016)
Brian Brazil
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Julian Mazzitelli
 
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Etsuji Nakai
 
Turning Virtual Machines Cloud-Native using KubeVirt
Suman Chakraborty
 
Introduction to Docker Compose
Ajeet Singh Raina
 
How Zalando runs Kubernetes clusters at scale on AWS - AWS re:Invent
Henning Jacobs
 
GitOps and ArgoCD
Omar Fathy
 
Apache Airflow Architecture
Gerard Toonstra
 
Kubernetes Secrets Management on Production with Demo
Opsta
 
GitOps 101 Presentation.pdf
ssuser31375f
 

Similar to Kubernetes Scheduler deep dive (20)

PDF
Kubernetes
DONGJIN KIM
 
PDF
Introduction to Tekton
Victor Iglesias
 
PDF
Deep drive into Nova
Udayendu Kar
 
PDF
Kubernetes - from sketch to production
Sergio Shevchenko
 
PDF
Kubernetes_Webinar_Slide_Deck.pdf
AuliaFebrian2
 
PDF
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
Elad Hirsch
 
PPTX
Kubernetes Introduction
Red Hat Developers
 
PDF
K8s Pod Scheduling - Deep Dive. By Tsahi Duek.
Cloud Native Day Tel Aviv
 
PPTX
K8s in 3h - Kubernetes Fundamentals Training
Piotr Perzyna
 
PDF
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
tdc-globalcode
 
PDF
Docker on docker leveraging kubernetes in docker ee
Docker, Inc.
 
PPTX
Kubernetes Workshop
loodse
 
PDF
Kubernetes111111111111111111122233334334
adnansalam11
 
PPTX
Modernizando ci cd com openshift pipelines tdc poa
Mauricio Magnani Jr
 
PPTX
Managing Container Clusters in OpenStack Native Way
Qiming Teng
 
PDF
Deep dive in container service discovery
Docker, Inc.
 
PPTX
Scaling jenkins with kubernetes
Ami Mahloof
 
PPTX
Scaling Jenkins with Kubernetes by Ami Mahloof
DoiT International
 
PDF
DCEU 18: Docker Container Networking
Docker, Inc.
 
PDF
Introduction to Kubernetes with demo
Opsta
 
Kubernetes
DONGJIN KIM
 
Introduction to Tekton
Victor Iglesias
 
Deep drive into Nova
Udayendu Kar
 
Kubernetes - from sketch to production
Sergio Shevchenko
 
Kubernetes_Webinar_Slide_Deck.pdf
AuliaFebrian2
 
KNATIVE - DEPLOY, AND MANAGE MODERN CONTAINER-BASED SERVERLESS WORKLOADS
Elad Hirsch
 
Kubernetes Introduction
Red Hat Developers
 
K8s Pod Scheduling - Deep Dive. By Tsahi Duek.
Cloud Native Day Tel Aviv
 
K8s in 3h - Kubernetes Fundamentals Training
Piotr Perzyna
 
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
tdc-globalcode
 
Docker on docker leveraging kubernetes in docker ee
Docker, Inc.
 
Kubernetes Workshop
loodse
 
Kubernetes111111111111111111122233334334
adnansalam11
 
Modernizando ci cd com openshift pipelines tdc poa
Mauricio Magnani Jr
 
Managing Container Clusters in OpenStack Native Way
Qiming Teng
 
Deep dive in container service discovery
Docker, Inc.
 
Scaling jenkins with kubernetes
Ami Mahloof
 
Scaling Jenkins with Kubernetes by Ami Mahloof
DoiT International
 
DCEU 18: Docker Container Networking
Docker, Inc.
 
Introduction to Kubernetes with demo
Opsta
 
Ad

Recently uploaded (20)

PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PPTX
Library_Management_System_PPT111111.pptx
nmtnissancrm
 
PDF
UITP Summit Meep Pitch may 2025 MaaS Rebooted
campoamor1
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
Is Framer the Future of AI Powered No-Code Development?
Isla Pandora
 
PDF
Best Web development company in india 2025
Greenusys
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PPTX
Function & Procedure: Function Vs Procedure in PL/SQL
Shani Tiwari
 
PPTX
prodad heroglyph crack 2.0.214.2 Full Free Download
cracked shares
 
PDF
Meet in the Middle: Solving the Low-Latency Challenge for Agentic AI
Alluxio, Inc.
 
PPTX
Transforming Insights: How Generative AI is Revolutionizing Data Analytics
LetsAI Solutions
 
PDF
Ready Layer One: Intro to the Model Context Protocol
mmckenna1
 
PDF
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Library_Management_System_PPT111111.pptx
nmtnissancrm
 
UITP Summit Meep Pitch may 2025 MaaS Rebooted
campoamor1
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Is Framer the Future of AI Powered No-Code Development?
Isla Pandora
 
Best Web development company in india 2025
Greenusys
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
Function & Procedure: Function Vs Procedure in PL/SQL
Shani Tiwari
 
prodad heroglyph crack 2.0.214.2 Full Free Download
cracked shares
 
Meet in the Middle: Solving the Low-Latency Challenge for Agentic AI
Alluxio, Inc.
 
Transforming Insights: How Generative AI is Revolutionizing Data Analytics
LetsAI Solutions
 
Ready Layer One: Intro to the Model Context Protocol
mmckenna1
 
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
Ad

Kubernetes Scheduler deep dive