mirror of
https://github.com/nclabteam/THPA.git
synced 2025-02-15 03:51:53 +00:00
81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
|
# k8s-scheduler-extender-example
|
||
|
This is an example of [Kubernetes Scheduler Extender](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md)
|
||
|
|
||
|
## How to
|
||
|
|
||
|
### 0. checkout the repo
|
||
|
|
||
|
```shell
|
||
|
$ git clone git@github.com:everpeace/k8s-scheduler-extender-example.git
|
||
|
$ cd k8s-scheduler-extender-example
|
||
|
$ git submodule update --init
|
||
|
```
|
||
|
|
||
|
### 1. buid a docker image
|
||
|
|
||
|
```
|
||
|
$ IMAGE=YOUR_ORG/YOUR_IMAGE:YOUR_TAG
|
||
|
|
||
|
$ docker build . -t "${IMAGE}"
|
||
|
$ docker push "${IMAGE}"
|
||
|
```
|
||
|
|
||
|
### 2. deploy `my-scheduler` in `kube-system` namespace
|
||
|
please see ConfigMap in [extender.yaml](extender.yaml) for scheduler policy json which includes scheduler extender config.
|
||
|
|
||
|
```
|
||
|
# bring up the kube-scheduler along with the extender image you've just built
|
||
|
$ sed 's/a\/b:c/'$(echo "${IMAGE}" | sed 's/\//\\\//')'/' extender.yaml | kubectl apply -f -
|
||
|
```
|
||
|
|
||
|
For ease of observation, start streaming logs from the extender:
|
||
|
|
||
|
```console
|
||
|
$ kubectl -n kube-system logs deploy/my-scheduler -c my-scheduler-extender-ctr -f
|
||
|
[ warn ] 2018/11/07 08:41:40 main.go:84: LOG_LEVEL="" is empty or invalid, fallling back to "INFO".
|
||
|
[ info ] 2018/11/07 08:41:40 main.go:98: Log level was set to INFO
|
||
|
[ info ] 2018/11/07 08:41:40 main.go:116: server starting on the port :80
|
||
|
```
|
||
|
|
||
|
Open up an another termianl and proceed.
|
||
|
|
||
|
### 3. schedule test pod
|
||
|
|
||
|
you will see `test-pod` will be scheduled by `my-scheduler`.
|
||
|
|
||
|
```
|
||
|
$ kubectl create -f test-pod.yaml
|
||
|
|
||
|
$ kubectl describe pod test-pod
|
||
|
Name: test-pod
|
||
|
...
|
||
|
Events:
|
||
|
Type Reason Age From Message
|
||
|
---- ------ ---- ---- -------
|
||
|
Normal Scheduled 25s my-scheduler Successfully assigned test-pod to minikube
|
||
|
Normal SuccessfulMountVolume 25s kubelet, minikube MountVolume.SetUp succeeded for volume "default-token-wrk5s"
|
||
|
Normal Pulling 24s kubelet, minikube pulling image "nginx"
|
||
|
Normal Pulled 8s kubelet, minikube Successfully pulled image "nginx"
|
||
|
Normal Created 8s kubelet, minikube Created container
|
||
|
Normal Started 8s kubelet, minikube Started container
|
||
|
```
|
||
|
|
||
|
|
||
|
## License
|
||
|
|
||
|
```
|
||
|
Copyright 2018 Shingo Omura <https://github.com/everpeace>
|
||
|
|
||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
you may not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
```
|