Skip to content

Commit 2c5f39b

Browse files
author
Your Name
committed
add file
1 parent b8efa99 commit 2c5f39b

File tree

4 files changed

+254
-0
lines changed

4 files changed

+254
-0
lines changed

Dockerfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM debian:stretch-slim
2+
3+
WORKDIR /
4+
5+
COPY ./_output/bin/bin-packing-plugin /usr/local/bin
6+
7+
CMD ["bin-packing-plugin"]

Makefile

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# makefile
2+
3+
BIN_DIR=_output/bin
4+
5+
init:
6+
mkdir -p ${BIN_DIR}
7+
8+
local: init
9+
go build -o=${BIN_DIR}/bin-packing-plugin ./
10+
11+
build-linux: init
12+
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o=${BIN_DIR}/bin-packing-plugin ./
13+
14+
image: build-linux
15+
docker build --no-cache . -t bin-packing-plugin:1.0.0
16+
17+
clean:
18+
rm -rf _output/
19+
rm -f *.log

deploy/bin-packing-plugin.yaml

+207
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
kind: ClusterRole
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
metadata:
4+
name: sample-scheduler-clusterrole
5+
rules:
6+
- apiGroups:
7+
- ""
8+
resources:
9+
- endpoints
10+
- events
11+
verbs:
12+
- create
13+
- get
14+
- update
15+
- apiGroups:
16+
- ""
17+
resources:
18+
- nodes
19+
verbs:
20+
- get
21+
- list
22+
- watch
23+
- apiGroups:
24+
- ""
25+
resources:
26+
- pods
27+
verbs:
28+
- delete
29+
- get
30+
- list
31+
- watch
32+
- update
33+
- apiGroups:
34+
- ""
35+
resources:
36+
- bindings
37+
- pods/binding
38+
verbs:
39+
- create
40+
- apiGroups:
41+
- ""
42+
resources:
43+
- pods/status
44+
verbs:
45+
- patch
46+
- update
47+
- apiGroups:
48+
- ""
49+
resources:
50+
- replicationcontrollers
51+
- services
52+
verbs:
53+
- get
54+
- list
55+
- watch
56+
- apiGroups:
57+
- apps
58+
- extensions
59+
resources:
60+
- replicasets
61+
verbs:
62+
- get
63+
- list
64+
- watch
65+
- apiGroups:
66+
- apps
67+
resources:
68+
- statefulsets
69+
verbs:
70+
- get
71+
- list
72+
- watch
73+
- apiGroups:
74+
- policy
75+
resources:
76+
- poddisruptionbudgets
77+
verbs:
78+
- get
79+
- list
80+
- watch
81+
- apiGroups:
82+
- ""
83+
resources:
84+
- persistentvolumeclaims
85+
- persistentvolumes
86+
verbs:
87+
- get
88+
- list
89+
- watch
90+
- apiGroups:
91+
- ""
92+
resources:
93+
- configmaps
94+
verbs:
95+
- get
96+
- list
97+
- watch
98+
- apiGroups:
99+
- "storage.k8s.io"
100+
resources:
101+
- storageclasses
102+
- csinodes
103+
verbs:
104+
- get
105+
- list
106+
- watch
107+
- apiGroups:
108+
- "coordination.k8s.io"
109+
resources:
110+
- leases
111+
verbs:
112+
- create
113+
- get
114+
- list
115+
- update
116+
- apiGroups:
117+
- "events.k8s.io"
118+
resources:
119+
- events
120+
verbs:
121+
- create
122+
- patch
123+
- update
124+
---
125+
apiVersion: v1
126+
kind: ServiceAccount
127+
metadata:
128+
name: sample-scheduler-sa
129+
namespace: kube-system
130+
---
131+
kind: ClusterRoleBinding
132+
apiVersion: rbac.authorization.k8s.io/v1
133+
metadata:
134+
name: sample-scheduler-clusterrolebinding
135+
namespace: kube-system
136+
roleRef:
137+
apiGroup: rbac.authorization.k8s.io
138+
kind: ClusterRole
139+
name: sample-scheduler-clusterrole
140+
subjects:
141+
- kind: ServiceAccount
142+
name: sample-scheduler-sa
143+
namespace: kube-system
144+
145+
---
146+
apiVersion: v1
147+
kind: ConfigMap
148+
metadata:
149+
name: scheduler-config
150+
namespace: kube-system
151+
data:
152+
scheduler-config.yaml: |
153+
apiVersion: kubescheduler.config.k8s.io/v1alpha1
154+
kind: KubeSchedulerConfiguration
155+
schedulerName: Bin-Packing-Plugin
156+
leaderElection:
157+
leaderElect: true
158+
lockObjectName: sample-scheduler
159+
lockObjectNamespace: kube-system
160+
plugins:
161+
filter:
162+
enabled:
163+
- name: "Bin-Packing-Plugin"
164+
pluginConfig:
165+
- name: "Bin-Packing-Plugin"
166+
args:
167+
favorite_color: "#326CE5"
168+
favorite_number: 7
169+
thanks_to: "thockin"
170+
---
171+
apiVersion: apps/v1
172+
kind: Deployment
173+
metadata:
174+
name: sample-scheduler
175+
namespace: kube-system
176+
labels:
177+
component: sample-scheduler
178+
spec:
179+
replicas: 1
180+
selector:
181+
matchLabels:
182+
component: sample-scheduler
183+
template:
184+
metadata:
185+
labels:
186+
component: sample-scheduler
187+
spec:
188+
serviceAccount: sample-scheduler-sa
189+
priorityClassName: system-cluster-critical
190+
volumes:
191+
- name: scheduler-config
192+
configMap:
193+
name: scheduler-config
194+
containers:
195+
- name: scheduler-ctrl
196+
image: bin-packing-plugin:1.0.0
197+
imagePullPolicy: IfNotPresent
198+
args:
199+
- bin-packing-plugin
200+
- --config=/etc/kubernetes/scheduler-config.yaml
201+
- --v=3
202+
resources:
203+
requests:
204+
cpu: "50m"
205+
volumeMounts:
206+
- name: scheduler-config
207+
mountPath: /etc/kubernetes

deploy/test.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: test-scheduler
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: test-scheduler
10+
template:
11+
metadata:
12+
labels:
13+
app: test-scheduler
14+
spec:
15+
schedulerName: sample-scheduler
16+
containers:
17+
- image: nginx
18+
imagePullPolicy: IfNotPresent
19+
name: nginx
20+
ports:
21+
- containerPort: 80

0 commit comments

Comments
 (0)