Name: sriov-scheduler
Owner: Mirantis Inc.
Description: null
Created: 2017-11-02 09:11:18.0
Updated: 2017-11-02 09:51:57.0
Pushed: 2017-11-08 08:55:17.0
Homepage: null
Size: 47
Language: Go
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This application does 2 things:
In order to deploy applicaton you need to follow next instructions. Run a disvery tool on every node in the cluster:
ctl create -f tools/discovery.yaml
It will deploy daemonset with golang script that will read totalvfs number on each node and report them to kubernetes. Reported information will be available on a nodes:
atus:
allocatable:
cpu: "8"
memory: 32766568Ki
pods: "110"
totalvfs: "1"
Next deploy scheduler extension itself:
ctl create -f tools/extender.yaml
It will create deployment with http server and a service for it.
Important to note that all pods without requested sriov network will be ignored, in future it will be easy to add any other selection algorithm:
: Pod
data:
notations:
networks: sriov
And as a last step we need to change kubernetes scheduler configuration. On my environment kubernetes scheduler is self-hosted and I will be using configmap as a policy configuration source.
Create configmap “scheduler-policy” in a kube-system namespace:
ctl create configmap scheduler-policy -n kube-system --from-file=policy.cfg=tools/scheduler.json
And add policy-configmap option to kubernetes scheduler:
:
ntainers:
command:
- /hyperkube
- scheduler
- --address=127.0.0.1
- --leader-elect=true
- --kubeconfig=/etc/kubernetes/scheduler.conf
- --policy-configmap
- scheduler-policy