Skip to content

Commit 5ec5bc1

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

21 files changed

+1203
-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

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
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+
- --leader-elect-resource-name=kosmos-scheduler
31+
- --leader-elect-resource-namespace=kosmos-system
32+
- --config=/etc/kubernetes/kube-scheduler/scheduler-config.yaml
33+
resources:
34+
requests:
35+
cpu: 200m
36+
volumeMounts:
37+
- name: scheduler-config
38+
readOnly: true
39+
mountPath: /etc/kubernetes/kube-scheduler
40+
livenessProbe:
41+
httpGet:
42+
path: /healthz
43+
port: 10259
44+
scheme: HTTPS
45+
initialDelaySeconds: 15
46+
periodSeconds: 10
47+
failureThreshold: 3
48+
readinessProbe:
49+
httpGet:
50+
path: /healthz
51+
port: 10259
52+
scheme: HTTPS
53+
restartPolicy: Always
54+
dnsPolicy: ClusterFirst
55+
serviceAccountName: kosmos-scheduler
56+
serviceAccount: kosmos-scheduler
57+
58+
---
59+
apiVersion: v1
60+
kind: ConfigMap
61+
metadata:
62+
name: scheduler-config
63+
namespace: kosmos-system
64+
data:
65+
scheduler-config.yaml: |
66+
apiVersion: kubescheduler.config.k8s.io/v1
67+
kind: KubeSchedulerConfiguration
68+
leaderElection:
69+
leaderElect: true
70+
profiles:
71+
- schedulerName: kosmos-scheduler
72+
plugins:
73+
preFilter:
74+
disabled:
75+
- name: "VolumeBinding"
76+
enabled:
77+
- name: "KnodeVolumeBinding"
78+
filter:
79+
disabled:
80+
- name: "VolumeBinding"
81+
- name: "TaintToleration"
82+
enabled:
83+
- name: "KNodeTaintToleration"
84+
- name: "KnodeVolumeBinding"
85+
score:
86+
disabled:
87+
- name: "VolumeBinding"
88+
reserve:
89+
disabled:
90+
- name: "VolumeBinding"
91+
enabled:
92+
- name: "KnodeVolumeBinding"
93+
preBind:
94+
disabled:
95+
- name: "VolumeBinding"
96+
enabled:
97+
- name: "KnodeVolumeBinding"
98+
pluginConfig:
99+
- name: KnodeVolumeBinding
100+
args:
101+
bindTimeoutSeconds: 5

deploy/scheduler/rbac.yaml

+171
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
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+
- kosmos-scheduler
53+
- verbs:
54+
- create
55+
apiGroups:
56+
- ''
57+
resources:
58+
- endpoints
59+
- verbs:
60+
- get
61+
- update
62+
apiGroups:
63+
- ''
64+
resources:
65+
- endpoints
66+
resourceNames:
67+
- kube-scheduler
68+
- verbs:
69+
- get
70+
- list
71+
- watch
72+
apiGroups:
73+
- ''
74+
resources:
75+
- nodes
76+
- verbs:
77+
- delete
78+
- get
79+
- list
80+
- watch
81+
apiGroups:
82+
- ''
83+
resources:
84+
- pods
85+
- verbs:
86+
- create
87+
apiGroups:
88+
- ''
89+
resources:
90+
- bindings
91+
- pods/binding
92+
- verbs:
93+
- patch
94+
- update
95+
apiGroups:
96+
- ''
97+
resources:
98+
- pods/status
99+
- verbs:
100+
- get
101+
- list
102+
- watch
103+
apiGroups:
104+
- ''
105+
resources:
106+
- replicationcontrollers
107+
- services
108+
- verbs:
109+
- get
110+
- list
111+
- watch
112+
apiGroups:
113+
- apps
114+
- extensions
115+
resources:
116+
- replicasets
117+
- verbs:
118+
- get
119+
- list
120+
- watch
121+
apiGroups:
122+
- apps
123+
resources:
124+
- statefulsets
125+
- verbs:
126+
- get
127+
- list
128+
- watch
129+
apiGroups:
130+
- policy
131+
resources:
132+
- poddisruptionbudgets
133+
- verbs:
134+
- get
135+
- list
136+
- watch
137+
- update
138+
apiGroups:
139+
- ''
140+
resources:
141+
- persistentvolumeclaims
142+
- persistentvolumes
143+
- verbs:
144+
- create
145+
apiGroups:
146+
- authentication.k8s.io
147+
resources:
148+
- tokenreviews
149+
- verbs:
150+
- create
151+
apiGroups:
152+
- authorization.k8s.io
153+
resources:
154+
- subjectaccessreviews
155+
- verbs:
156+
- get
157+
- list
158+
- watch
159+
apiGroups:
160+
- storage.k8s.io
161+
resources:
162+
- '*'
163+
- verbs:
164+
- get
165+
- list
166+
- watch
167+
apiGroups:
168+
- ''
169+
resources:
170+
- configmaps
171+
- 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)