Skip to content

Commit 91823e2

Browse files
authored
Merge pull request kubernetes#3064 from pohly/dynamic-resource-allocation-upstream
KEP-3063: dynamic resource allocation
2 parents cd305f9 + f37345e commit 91823e2

File tree

8 files changed

+2640
-0
lines changed

8 files changed

+2640
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# The KEP must have an approver from the
2+
# "prod-readiness-approvers" group
3+
# of http://git.k8s.io/enhancements/OWNERS_ALIASES
4+
kep-number: 3063
5+
alpha:
6+
approver: "@johnbelamaric"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
IMAGES += components.png kubelet.png
2+
3+
all: $(IMAGES)
4+
clean:
5+
rm -f $(IMAGES)
6+
7+
# We use the http://plantuml.com/plantuml server to generate
8+
# images. That way nothing needs to be installed besides Go.
9+
DOC_PLANTUML_GO = $(shell go env GOPATH)/bin/plantuml-go
10+
11+
%.png: %.puml $(DOC_PLANTUML_GO)
12+
$(DOC_PLANTUML_GO) -format png $<
13+
14+
%.svg: %.puml $(DOC_PLANTUML_GO)
15+
$(DOC_PLANTUML_GO) -format svg $<
16+
17+
# Builds the binary in GOPATH/bin. Changing into / first avoids
18+
# modifying the project's go.mod file.
19+
$(DOC_PLANTUML_GO):
20+
cd / && go get github.com/acarlson99/plantuml-go

keps/sig-node/3063-dynamic-resource-allocation/README.md

Lines changed: 2508 additions & 0 deletions
Large diffs are not rendered by default.
50.7 KB
Loading
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
@startuml
2+
!theme reddress-lightblue
3+
skinparam componentStyle rectangle
4+
5+
cloud "resource driver" {
6+
component "resource driver controller" as drivercontroller
7+
component "resource kubelet plugin" as driverplugin
8+
}
9+
10+
component Kubernetes {
11+
component apiserver {
12+
file Pod
13+
file ResourceClaim
14+
file PodScheduling
15+
}
16+
component scheduler {
17+
component "resource plugin" as k8sresourceplugin
18+
}
19+
component "controller-manager" as controllermanager {
20+
component "resource claim controller" as k8sresourceclaimcontroller
21+
}
22+
component kubelet {
23+
component "plugin manager" as pluginmanager
24+
component "resource manager" as resourcemanager
25+
}
26+
}
27+
28+
controllermanager -[hidden]> kubelet
29+
drivercontroller -[hidden]> driverplugin
30+
31+
Pod <. ResourceClaim: owned by\n(if created from template)
32+
Pod <. PodScheduling: owned by
33+
34+
35+
Pod -u-> k8sresourceclaimcontroller: read claim template\nfrom Pod spec
36+
ResourceClaim <-u- k8sresourceclaimcontroller: create claim,\nclean up users
37+
ResourceClaim <-u-> kubelet
38+
k8sresourceplugin <-u-> PodScheduling
39+
40+
Pod <--> scheduler
41+
ResourceClaim <--> k8sresourceplugin
42+
43+
ResourceClaim <-> drivercontroller
44+
pluginmanager <-> driverplugin
45+
resourcemanager <-> driverplugin
46+
PodScheduling <-> drivercontroller
47+
@enduml
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
title: dynamic resource allocation
2+
kep-number: 3063
3+
authors:
4+
- "@pohly"
5+
owning-sig: sig-node
6+
participating-sigs:
7+
- sig-scheduling
8+
- sig-autoscaling
9+
status: implementable
10+
creation-date: 2021-05-17
11+
reviewers:
12+
- "@ahg-g"
13+
- "@alculquicondor"
14+
- "@klueska"
15+
approvers:
16+
- "@sig-node-leads"
17+
18+
see-also:
19+
replaces:
20+
21+
# The target maturity stage in the current dev cycle for this KEP.
22+
stage: alpha
23+
24+
# The most recent milestone for which work toward delivery of this KEP has been
25+
# done. This can be the current (upcoming) milestone, if it is being actively
26+
# worked on.
27+
latest-milestone: "v1.25"
28+
29+
# The milestone at which this feature was, or is targeted to be, at each stage.
30+
milestone:
31+
alpha: "v1.25"
32+
beta: "v1.28"
33+
stable: "v1.30"
34+
35+
feature-gates:
36+
- name: DynamicResourceAllocation
37+
components:
38+
- kube-apiserver
39+
- kube-controller-manager
40+
- kube-scheduler
41+
- kubelet
42+
disable-supported: true
43+
44+
metrics:
45+
- resource_controller_create_total
46+
- resource_controller_create_failures_total
47+
- resource controller workqueue with name="resource_claim"
31 KB
Loading
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
@startuml
2+
!theme reddress-lightblue
3+
4+
(*) --> "Pod scheduled to the node"
5+
-->[ **Kubelet** pick up the pod ] "Pod references resource claim"
6+
-->[ **Kubelet** calls NodePrepareResource(ResourceClaimUID, AllocationParameters)\l **Resource Plugin** creates CDI JSON file(s) ] "CDI JSON files created"
7+
-->[ **Resource Plugin** returns device Ids ] "Resource prepared"
8+
-->[ **Kubelet** passes device Ids to the CRI runtime\l **CRI runtime** uses CDI JSON file(s) to update OCI container config\l **CRI runtime** creates pod containers ] "All Pod containers created"
9+
-->[ ... ] "Pod runs"
10+
-->[ ... ] "Pod terminated"
11+
-->[ **Kubelet** calls NodeUnprepareResource\l **Resource plugin** removes CDI JSON file(s) ] (*)
12+
@enduml

0 commit comments

Comments
 (0)