<p><a href="https://kubernetes.io/docs/tasks/extend-kubernetes/configure-multiple-schedulers/" rel="nofollow noreferrer">This doc</a> tells about how to run multiple scheduler. But I m not able to understand how does default scheduler is decided? Is it based on <code>--leader-elect</code> option?</p>
<p>Can I tell Kubernetes to use my-custom-scheduler as default scheduler instead of kube-scheduler?
Is there another way to specify scheduler other than  <code>schedulerName</code> in Pod/Deployment spec.</p>

<p>If you can't remove/replace the default scheduler in the control plane (e.g. if you are on a managed k8s platform), you can use <a href="https://open-policy-agent.github.io/gatekeeper/website/docs/" rel="nofollow noreferrer">GateKeeper</a> — the replacement for OPA — or another policy agent to write mutations that are applied to some or all pods on your cluster.</p>
<p>For example:</p>
<pre><code>apiVersion: mutations.gatekeeper.sh/v1beta1
kind: Assign
metadata:
  name: pod-scheduler-name
spec:
  applyTo:
  - groups: &quot;&quot;
    kinds: [&quot;Pod&quot;]
    versions: [&quot;v1&quot;]

  match:
    kinds:
    - apiGroups: [&quot;*&quot;]
      kinds: [&quot;Pod&quot;]

    # Adjust this to a label that is present on the pods of your custom scheduler.
    # It's important that you leave your custom scheduler to be itself scheduled by the
    # default scheduler, as otherwise if all pods of your custom scheduler somehow get
    # terminated, they won't be able to start up again due to not being scheduled.
    labelSelector:
      matchExpressions:
      - key: app
        operator: NotIn
        values: [&quot;my-scheduler&quot;]

  location: &quot;spec.schedulerName&quot;

  # Adjust this to match the desired profile name from your scheduler's configuration.
  parameters:
    assign:
      value: my-scheduler
</code></pre>
