Mirantis/sriov-scheduler

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

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Sriov scheduler extension

Demo

asciicast

Get started

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

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.