Skip to content

Commit 73d6ce0

Browse files
committed
add kosmos-scheduler for kube-scheduler v1.26
Signed-off-by: qiuming520 <[email protected]>
1 parent 708d1bd commit 73d6ce0

21 files changed

+1200
-39
lines changed

Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ TARGETS := clusterlink-controller-manager \
1616
clusterlink-network-manager \
1717
clusterlink-proxy \
1818
clustertree-knode-manager \
19+
scheduler \
1920

2021
CTL_TARGETS := kosmosctl
2122

@@ -106,6 +107,7 @@ upload-images: images
106107
docker push ${REGISTRY}/clusterlink-floater:${VERSION}
107108
docker push ${REGISTRY}/clusterlink-elector:${VERSION}
108109
docker push ${REGISTRY}/clustertree-knode-manager:${VERSION}
110+
docker push ${REGISTRY}/scheduler:${VERSION}
109111

110112
.PHONY: release
111113
release:

cmd/scheduler/main.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import (
66
"k8s.io/component-base/cli"
77
"k8s.io/kubernetes/cmd/kube-scheduler/app"
88

9+
_ "github.com/kosmos.io/kosmos/pkg/apis/config/scheme"
910
"github.com/kosmos.io/kosmos/pkg/scheduler/lifted/plugins/knodetainttoleration"
11+
"github.com/kosmos.io/kosmos/pkg/scheduler/lifted/plugins/knodevolumebinding"
1012
)
1113

1214
func main() {
@@ -15,8 +17,8 @@ func main() {
1517
// used by various kinds of workloads.
1618
command := app.NewSchedulerCommand(
1719
app.WithPlugin(knodetainttoleration.Name, knodetainttoleration.New),
20+
app.WithPlugin(knodevolumebinding.Name, knodevolumebinding.New),
1821
)
19-
2022
code := cli.Run(command)
2123
os.Exit(code)
2224
}

deploy/scheduler/deployment.yaml

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: kosmos-scheduler
6+
namespace: kosmos-system
7+
labels:
8+
component: scheduler
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
component: scheduler
14+
template:
15+
metadata:
16+
labels:
17+
component: scheduler
18+
spec:
19+
volumes:
20+
- name: scheduler-config
21+
configMap:
22+
name: scheduler-config
23+
defaultMode: 420
24+
containers:
25+
- name: kosmos-scheduler
26+
image: ghcr.io/kosmos-io/scheduler:0.0.2
27+
command:
28+
- scheduler
29+
- --leader-elect=true
30+
- --config=/etc/kubernetes/kube-scheduler/scheduler-config.yaml
31+
resources:
32+
requests:
33+
cpu: 200m
34+
volumeMounts:
35+
- name: scheduler-config
36+
readOnly: true
37+
mountPath: /etc/kubernetes/kube-scheduler
38+
livenessProbe:
39+
httpGet:
40+
path: /healthz
41+
port: 10259
42+
scheme: HTTPS
43+
initialDelaySeconds: 15
44+
periodSeconds: 10
45+
failureThreshold: 3
46+
readinessProbe:
47+
httpGet:
48+
path: /healthz
49+
port: 10259
50+
scheme: HTTPS
51+
restartPolicy: Always
52+
dnsPolicy: ClusterFirst
53+
serviceAccountName: kosmos-scheduler
54+
serviceAccount: kosmos-scheduler
55+
56+
---
57+
apiVersion: v1
58+
kind: ConfigMap
59+
metadata:
60+
name: scheduler-config
61+
namespace: kosmos-system
62+
data:
63+
scheduler-config.yaml: |
64+
apiVersion: kubescheduler.config.k8s.io/v1
65+
kind: KubeSchedulerConfiguration
66+
leaderElection:
67+
leaderElect: true
68+
profiles:
69+
- schedulerName: kosmos-scheduler
70+
plugins:
71+
preFilter:
72+
disabled:
73+
- name: "VolumeBinding"
74+
enabled:
75+
- name: "KnodeVolumeBinding"
76+
filter:
77+
disabled:
78+
- name: "VolumeBinding"
79+
- name: "TaintToleration"
80+
enabled:
81+
- name: "KNodeTaintToleration"
82+
- name: "KnodeVolumeBinding"
83+
score:
84+
disabled:
85+
- name: "VolumeBinding"
86+
reserve:
87+
disabled:
88+
- name: "VolumeBinding"
89+
enabled:
90+
- name: "KnodeVolumeBinding"
91+
preBind:
92+
disabled:
93+
- name: "VolumeBinding"
94+
enabled:
95+
- name: "KnodeVolumeBinding"
96+
pluginConfig:
97+
- name: KnodeVolumeBinding
98+
args:
99+
bindTimeoutSeconds: 5

deploy/scheduler/rbac.yaml

+170
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
---
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: kosmos-scheduler
6+
namespace: kosmos-system
7+
8+
---
9+
apiVersion: rbac.authorization.k8s.io/v1
10+
kind: ClusterRoleBinding
11+
metadata:
12+
name: kosmos-scheduler
13+
subjects:
14+
- kind: ServiceAccount
15+
name: kosmos-scheduler
16+
namespace: kosmos-system
17+
roleRef:
18+
apiGroup: rbac.authorization.k8s.io
19+
kind: ClusterRole
20+
name: kosmos-scheduler
21+
22+
---
23+
apiVersion: rbac.authorization.k8s.io/v1
24+
kind: ClusterRole
25+
metadata:
26+
name: kosmos-scheduler
27+
rules:
28+
- verbs:
29+
- create
30+
- patch
31+
- update
32+
apiGroups:
33+
- ''
34+
- events.k8s.io
35+
resources:
36+
- events
37+
- verbs:
38+
- create
39+
apiGroups:
40+
- coordination.k8s.io
41+
resources:
42+
- leases
43+
- verbs:
44+
- get
45+
- update
46+
apiGroups:
47+
- coordination.k8s.io
48+
resources:
49+
- leases
50+
resourceNames:
51+
- kube-scheduler
52+
- verbs:
53+
- create
54+
apiGroups:
55+
- ''
56+
resources:
57+
- endpoints
58+
- verbs:
59+
- get
60+
- update
61+
apiGroups:
62+
- ''
63+
resources:
64+
- endpoints
65+
resourceNames:
66+
- kube-scheduler
67+
- verbs:
68+
- get
69+
- list
70+
- watch
71+
apiGroups:
72+
- ''
73+
resources:
74+
- nodes
75+
- verbs:
76+
- delete
77+
- get
78+
- list
79+
- watch
80+
apiGroups:
81+
- ''
82+
resources:
83+
- pods
84+
- verbs:
85+
- create
86+
apiGroups:
87+
- ''
88+
resources:
89+
- bindings
90+
- pods/binding
91+
- verbs:
92+
- patch
93+
- update
94+
apiGroups:
95+
- ''
96+
resources:
97+
- pods/status
98+
- verbs:
99+
- get
100+
- list
101+
- watch
102+
apiGroups:
103+
- ''
104+
resources:
105+
- replicationcontrollers
106+
- services
107+
- verbs:
108+
- get
109+
- list
110+
- watch
111+
apiGroups:
112+
- apps
113+
- extensions
114+
resources:
115+
- replicasets
116+
- verbs:
117+
- get
118+
- list
119+
- watch
120+
apiGroups:
121+
- apps
122+
resources:
123+
- statefulsets
124+
- verbs:
125+
- get
126+
- list
127+
- watch
128+
apiGroups:
129+
- policy
130+
resources:
131+
- poddisruptionbudgets
132+
- verbs:
133+
- get
134+
- list
135+
- watch
136+
- update
137+
apiGroups:
138+
- ''
139+
resources:
140+
- persistentvolumeclaims
141+
- persistentvolumes
142+
- verbs:
143+
- create
144+
apiGroups:
145+
- authentication.k8s.io
146+
resources:
147+
- tokenreviews
148+
- verbs:
149+
- create
150+
apiGroups:
151+
- authorization.k8s.io
152+
resources:
153+
- subjectaccessreviews
154+
- verbs:
155+
- get
156+
- list
157+
- watch
158+
apiGroups:
159+
- storage.k8s.io
160+
resources:
161+
- '*'
162+
- verbs:
163+
- get
164+
- list
165+
- watch
166+
apiGroups:
167+
- ''
168+
resources:
169+
- configmaps
170+
- namespaces

hack/update-codegen.sh

+15-6
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,27 @@ create_gopath_tree "${REPO_ROOT}" "${link_path}"
4040

4141
deepcopy-gen \
4242
--go-header-file hack/boilerplate/boilerplate.go.txt \
43-
--input-dirs=github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1 \
43+
--input-dirs="github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1,github.com/kosmos.io/kosmos/pkg/apis/config,github.com/kosmos.io/kosmos/pkg/apis/config/v1" \
4444
--output-base="${REPO_ROOT}" \
45-
--output-package=pkg/apis/kosmos/v1alpha1 \
45+
--output-package="pkg/apis/kosmos/v1alpha1,pkg/apis/config,pkg/apis/config/v1" \
4646
--output-file-base=zz_generated.deepcopy
4747

4848
echo "Generating with register-gen"
4949
GO111MODULE=on go install k8s.io/code-generator/cmd/register-gen
5050
register-gen \
5151
--go-header-file hack/boilerplate/boilerplate.go.txt \
52-
--input-dirs=github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1 \
52+
--input-dirs="github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1" \
5353
--output-base="${REPO_ROOT}" \
54-
--output-package=pkg/apis/kosmos/v1alpha1 \
54+
--output-package="pkg/apis/kosmos/v1alpha1" \
5555
--output-file-base=zz_generated.register
5656

5757
echo "Generating with conversion-gen"
5858
GO111MODULE=on go install k8s.io/code-generator/cmd/conversion-gen
5959
conversion-gen \
6060
--go-header-file hack/boilerplate/boilerplate.go.txt \
61-
--input-dirs=github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1 \
61+
--input-dirs="github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1,github.com/kosmos.io/kosmos/pkg/apis/config/v1" \
6262
--output-base="${REPO_ROOT}" \
63-
--output-package=github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1 \
63+
--output-package="github.com/kosmos.io/kosmos/pkg/apis/kosmos/v1alpha1,pkg/apis/config/v1" \
6464
--output-file-base=zz_generated.conversion
6565

6666
echo "Generating with client-gen"
@@ -73,6 +73,15 @@ client-gen \
7373
--output-package=github.com/kosmos.io/kosmos/pkg/generated/clientset \
7474
--clientset-name=versioned
7575

76+
echo "Generating with defaults-gen"
77+
GO111MODULE=on go install k8s.io/code-generator/cmd/defaulter-gen
78+
defaulter-gen \
79+
--go-header-file hack/boilerplate/boilerplate.go.txt \
80+
--input-dirs="github.com/kosmos.io/kosmos/pkg/apis/config/v1" \
81+
--output-base="${REPO_ROOT}" \
82+
--output-package="pkg/apis/config/v1" \
83+
--output-file-base=zz_generated.defaults
84+
7685
echo "Generating with lister-gen"
7786
GO111MODULE=on go install k8s.io/code-generator/cmd/lister-gen
7887
lister-gen \

hack/util.sh

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ CLUSTERLINK_GO_PACKAGE="github.com/kosmos.io/kosmos"
1313
MIN_Go_VERSION=go1.19.0
1414

1515
CLUSTERLINK_TARGET_SOURCE=(
16+
scheduler=cmd/scheduler
1617
clusterlink-proxy=cmd/clusterlink/proxy
1718
clusterlink-operator=cmd/clusterlink/operator
1819
clusterlink-elector=cmd/clusterlink/elector

pkg/apis/config/doc.go

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
Copyright 2020 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// +k8s:deepcopy-gen=package
18+
// +groupName=kubescheduler.config.k8s.io
19+
20+
package config // import "github.com/kosmos.io/kosmos/pkg/apis"

0 commit comments

Comments
 (0)