<p>From K8s v1.18, we have the scheduling context split into the scheduling cycle and the binding cycle with multiple extension points.</p>
<p>I have a question about the scheduler extenders in this context. Are they invoked after the scheduling cycle and before the binding cycle?</p>
<p>Any help is much appreciated!</p>
<p>Thank you!</p>

<p>They are invoked as the last step for scheduling decisions and it picks the pods that have a specific <code>schedulerName</code> in the pod spec. Number 3 <a href="https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md" rel="nofollow noreferrer">here</a>:</p>
<blockquote>
<p>(3) implementing a &quot;scheduler extender&quot; process that the standard Kubernetes scheduler calls out to as a final pass when making scheduling decisions.</p>
</blockquote>
<p>So if your scheduler's name is <code>my-scheduler</code> 📆 a pod spec would look something like this:</p>
<pre class="lang-yaml prettyprint-override"><code>apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  schedulerName: my-scheduler 👈 📆
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
</code></pre>
<p>In the logs it would show like this:</p>
<pre class="lang-sh prettyprint-override"><code>$ 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

</code></pre>
