Skip to content

Commit 3a3c0f5

Browse files
zhuyiqing.wizEpsilon314
authored andcommitted
[feat] stormservice support podgroup
Signed-off-by: zhuyiqing.wiz <[email protected]>
1 parent 0285ca5 commit 3a3c0f5

File tree

16 files changed

+500
-82
lines changed

16 files changed

+500
-82
lines changed

api/orchestration/v1alpha1/groupversion_info.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
const (
2828
StormServiceKind = "StormService"
2929
RoleSetKind = "RoleSet"
30+
PodSetKind = "PodSet"
3031
)
3132

3233
var (

api/orchestration/v1alpha1/podset_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ type PodSetSpec struct {
3535
// Stateful indicates whether pods should have stable network identities
3636
// +optional
3737
Stateful bool `json:"stateful,omitempty"`
38+
39+
// +optional
40+
SchedulingStrategy *SchedulingStrategy `json:"schedulingStrategy,omitempty"`
3841
}
3942

4043
// PodSetStatus defines the observed state of PodSet

api/orchestration/v1alpha1/roleset_types.go

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import (
2323

2424
// let's temporarily use godel scheduler's definition, consider to switch to community definitions
2525
schedv1alpha1 "github.com/kubewharf/godel-scheduler-api/pkg/apis/scheduling/v1alpha1"
26+
schedulerpluginsv1aplha1 "sigs.k8s.io/scheduler-plugins/apis/scheduling/v1alpha1"
27+
volcanoschedv1beta1 "volcano.sh/apis/pkg/apis/scheduling/v1beta1"
2628
)
2729

2830
// RoleSetSpec defines the desired state of RoleSet
@@ -35,12 +37,31 @@ type RoleSetSpec struct {
3537
UpdateStrategy RoleSetUpdateStrategyType `json:"updateStrategy,omitempty"`
3638

3739
// +optional
38-
SchedulingStrategy SchedulingStrategy `json:"schedulingStrategy,omitempty"`
40+
SchedulingStrategy *SchedulingStrategy `json:"schedulingStrategy,omitempty"`
3941
}
4042

41-
// +enum
43+
// +kubebuilder:validation:MaxProperties=1
4244
type SchedulingStrategy struct {
43-
PodGroup *schedv1alpha1.PodGroupSpec `json:"podGroup,omitempty"`
45+
GodelSchedulingStrategy *GodelSchedulingStrategySpec `json:"godelSchedulingStrategy,omitempty"`
46+
47+
CoschedulingSchedulingStrategy *CoschedulingSchedulingStrategySpec `json:"coschedulingSchedulingStrategy,omitempty"`
48+
49+
VolcanoSchedulingStrategy *VolcanoSchedulingStrategySpec `json:"volcanoSchedulingStrategy,omitempty"`
50+
}
51+
52+
// GodelSchedulingStrategySpec uses godel scheduler's podgroup definition
53+
type GodelSchedulingStrategySpec struct {
54+
schedv1alpha1.PodGroupSpec `json:",inline"`
55+
}
56+
57+
// CoschedulingSchedulingStrategySpec uses coscheduling scheduler-plugin's podgroup definition
58+
type CoschedulingSchedulingStrategySpec struct {
59+
schedulerpluginsv1aplha1.PodGroupSpec `json:",inline"`
60+
}
61+
62+
// VolcanoSchedulingStrategySpec uses volcano's podgroup definition
63+
type VolcanoSchedulingStrategySpec struct {
64+
volcanoschedv1beta1.PodGroupSpec `json:",inline"`
4465
}
4566

4667
// +enum
@@ -94,6 +115,9 @@ type RoleSpec struct {
94115
// DisruptionTolerance indicates how many pods can be unavailable during the preemption/eviction.
95116
// +optional
96117
DisruptionTolerance DisruptionTolerance `json:"disruptionTolerance,omitempty"`
118+
119+
// +optional
120+
SchedulingStrategy *SchedulingStrategy `json:"schedulingStrategy,omitempty"`
97121
}
98122

99123
// +enum

api/orchestration/v1alpha1/zz_generated.deepcopy.go

Lines changed: 76 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/rbac/controller-manager/role.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,3 +291,21 @@ rules:
291291
- list
292292
- update
293293
- watch
294+
- apiGroups:
295+
- scheduling.godel.kubewharf.io
296+
resources:
297+
- podgroups
298+
verbs:
299+
- '*'
300+
- apiGroups:
301+
- scheduling.x-k8s.io
302+
resources:
303+
- podgroups
304+
verbs:
305+
- '*'
306+
- apiGroups:
307+
- scheduling.volcano.sh
308+
resources:
309+
- podgroups
310+
verbs:
311+
- '*'

go.mod

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,20 @@ require (
3030
github.com/stretchr/testify v1.10.0
3131
go.uber.org/atomic v1.11.0
3232
google.golang.org/grpc v1.65.0
33-
k8s.io/api v0.31.2
34-
k8s.io/apiextensions-apiserver v0.31.2
35-
k8s.io/apimachinery v0.31.2
36-
k8s.io/client-go v0.31.2
37-
k8s.io/code-generator v0.31.2
33+
k8s.io/api v0.31.8
34+
k8s.io/apiextensions-apiserver v0.31.8
35+
k8s.io/apimachinery v0.31.8
36+
k8s.io/client-go v0.31.8
37+
k8s.io/code-generator v0.31.8
3838
k8s.io/klog/v2 v2.130.1
3939
k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b
40-
k8s.io/metrics v0.29.6
40+
k8s.io/metrics v0.31.8
4141
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
42-
sigs.k8s.io/controller-runtime v0.19.1
42+
sigs.k8s.io/controller-runtime v0.19.2
4343
sigs.k8s.io/gateway-api v1.0.0
44+
sigs.k8s.io/scheduler-plugins v0.31.8
4445
sigs.k8s.io/structured-merge-diff/v4 v4.4.1
46+
volcano.sh/apis v1.11.2
4547
)
4648

4749
require (

go.sum

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -295,16 +295,16 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
295295
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
296296
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
297297
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
298-
k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0=
299-
k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk=
300-
k8s.io/apiextensions-apiserver v0.31.2 h1:W8EwUb8+WXBLu56ser5IudT2cOho0gAKeTOnywBLxd0=
301-
k8s.io/apiextensions-apiserver v0.31.2/go.mod h1:i+Geh+nGCJEGiCGR3MlBDkS7koHIIKWVfWeRFiOsUcM=
302-
k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw=
303-
k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
304-
k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc=
305-
k8s.io/client-go v0.31.2/go.mod h1:NPa74jSVR/+eez2dFsEIHNa+3o09vtNaWwWwb1qSxSs=
306-
k8s.io/code-generator v0.31.2 h1:xLWxG0HEpMSHfcM//3u3Ro2Hmc6AyyLINQS//Z2GEOI=
307-
k8s.io/code-generator v0.31.2/go.mod h1:eEQHXgBU/m7LDaToDoiz3t97dUUVyOblQdwOr8rivqc=
298+
k8s.io/api v0.31.8 h1:d5WuCZpFqpkQ7a4JuxSI0/IQuFWT+dUE3jeptRoZkto=
299+
k8s.io/api v0.31.8/go.mod h1:Sq38Y1MdXkkp4thnHFYgErPgP0jhZ9sTOppFkt14YQ8=
300+
k8s.io/apiextensions-apiserver v0.31.8 h1:lV5/5Z28J+gbtcH+5LnLtqI3BEYmQ6tUcyGD51lDxNM=
301+
k8s.io/apiextensions-apiserver v0.31.8/go.mod h1:NmrKYZI78Zqm3PiDxzwE5m9DBByRAPt65AHZfq0iRF0=
302+
k8s.io/apimachinery v0.31.8 h1:zRA9bpuLwdVqODPrWaAT9eRVB4GuTYLSRLoO3XrzYUU=
303+
k8s.io/apimachinery v0.31.8/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
304+
k8s.io/client-go v0.31.8 h1:sMlDa9W+2y3tHo0D+XYeovhOTww7lKiOTTqqyxABcM8=
305+
k8s.io/client-go v0.31.8/go.mod h1:7g9whHSnLT2Eilwpw1Ozdl2vRr2zwwqO5RPBDDkT5xo=
306+
k8s.io/code-generator v0.31.8 h1:PuRUhBUxR/sApmtWxVF1drZZaRCDWAC6MEfgQ0SvuP0=
307+
k8s.io/code-generator v0.31.8/go.mod h1:s3DxX9wpP9vc9h0VAtEzoG2fz4KIJASscPUl6pTm8u0=
308308
k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo=
309309
k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8=
310310
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
@@ -313,17 +313,21 @@ k8s.io/kube-aggregator v0.31.2 h1:Uw1zUP2D/4wiSjKWVVzSOcCGLuW/+IdRwjjC0FJooYU=
313313
k8s.io/kube-aggregator v0.31.2/go.mod h1:41/VIXH+/Qcg9ERNAY6bRF/WQR6xL1wFgYagdHac1X4=
314314
k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b h1:Q9xmGWBvOGd8UJyccgpYlLosk/JlfP3xQLNkQlHJeXw=
315315
k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b/go.mod h1:UxDHUPsUwTOOxSU+oXURfFBcAS6JwiRXTYqYwfuGowc=
316-
k8s.io/metrics v0.29.6 h1:kjMGPYxtCi4OO0fUar76y0CiUoeGYDNmUV0LXJIis4Q=
317-
k8s.io/metrics v0.29.6/go.mod h1:vqGzOaYGuNSSAI7GM1+v6L5z8aAUSzui1W0eQB3wVJY=
316+
k8s.io/metrics v0.31.8 h1:pNhZzkpi3YjfboQYY/5LWWbtyw3n3j1vRGMtnEx69SU=
317+
k8s.io/metrics v0.31.8/go.mod h1:sAoKLdycsqjVBrTw3H6fdfBYzTPMKETxbZyjnjSmL+Y=
318318
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A=
319319
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
320-
sigs.k8s.io/controller-runtime v0.19.1 h1:Son+Q40+Be3QWb+niBXAg2vFiYWolDjjRfO8hn/cxOk=
321-
sigs.k8s.io/controller-runtime v0.19.1/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4=
320+
sigs.k8s.io/controller-runtime v0.19.2 h1:3sPrF58XQEPzbE8T81TN6selQIMGbtYwuaJ6eDssDF8=
321+
sigs.k8s.io/controller-runtime v0.19.2/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4=
322322
sigs.k8s.io/gateway-api v1.0.0 h1:iPTStSv41+d9p0xFydll6d7f7MOBGuqXM6p2/zVYMAs=
323323
sigs.k8s.io/gateway-api v1.0.0/go.mod h1:4cUgr0Lnp5FZ0Cdq8FdRwCvpiWws7LVhLHGIudLlf4c=
324324
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
325325
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
326+
sigs.k8s.io/scheduler-plugins v0.31.8 h1:Ie2EFRnkE9T2tBjxwypww7hJJyPRIwrXJNZeNxjP6QY=
327+
sigs.k8s.io/scheduler-plugins v0.31.8/go.mod h1:KkcXEbf9CYaoZ5ntbAMSYmquPq9MtSfXVpI31R6mHeM=
326328
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
327329
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
328330
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
329331
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
332+
volcano.sh/apis v1.11.2 h1:Vz8NzP0af8vyxRccrEUt6/FikD5eeEOnCZRolVzZvK8=
333+
volcano.sh/apis v1.11.2/go.mod h1:FOdmG++9+8lgENJ9XXDh+O3Jcb9YVRnlMSpgIh3NSVI=

pkg/controller/constants/stormservice.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ limitations under the License.
1717
package constants
1818

1919
const (
20-
GodelPodGroupNameAnnotationKey = "godel.bytedance.com/pod-group-name"
20+
GodelPodGroupNameAnnotationKey = "godel.bytedance.com/pod-group-name"
21+
CoschedulingPodGroupNameLabelKey = "scheduling.x-k8s.io/pod-group"
22+
VolcanoPodGroupNameAnnotationKey = "scheduling.volcano.sh/group-name"
2123

2224
RoleSetNameLabelKey = "roleset-name"
2325
StormServiceNameLabelKey = "storm-service-name"

0 commit comments

Comments
 (0)