Additional scheduler in Kubernetes deployed with kubeadm

The kubeadm tool deploys the scheduler as a Pod. You can find the definition file in /etc/kubernetes/manifests/kube-scheduler.yaml

We can create a custom scheduler by making a copy of the same file.

Options that needed to be changed:

--scheduler-name=my-custom-kube-scheduler # name of the new scheduler
--leader-elect=true # help choose leader among multiple schedulers. Set to 
                                     # false when multiple masters do not exist, true when multiple masters exist
If multiple copies of the same scheduler are running on different nodes, only one can be active at a time. That’s where the leader-elect option helps in choosing a leader who will lead scheduling activities.
In case where you don’t have multiple masters - to get multiple schedulers working, you must set the leader-elect option to false

In case you do have multiple masters, you can pass in an addition parameter to set a lock object name:
--lock-object-name=my-custom-kube-scheduler
lock-object-name is the name of the resource object that is used for locking during leader election.

Documentation says that lock-object-name is deprecated in favor of leader-elect-resource-name option which sets the name of resource object that is used for locking during leader election.

Basically options leader-elect and lock-object-nam is used to distinguish custom scheduler from default during leader election process.