Deploy Rok Scheduler¶
This guide will walk you through deploying the Rok Scheduler, along with the Rok Scheduler Webhook.
Fast Forward
If you have already deployed the Rok Scheduler for your Kubernetes version, meaning you are upgrading from EKF 1.5-rc1 or later, proceed to the Verify section.
Note
As of Kubernetes 1.21, the upstream kube-scheduler
supports capacity
tracking, so that it takes into consideration the available free storage
capacity when scheduling a Pod that requests PVCs. However, the feature is in
beta version, and it comes with important limitations that need to be
addressed.
To overcome these limitations Rok ships with its own custom scheduler, which
supports storage capacity tracking for Kubernetes 1.19, 1.20, and 1.21. In
order for a Pod to be scheduled using the Rok Scheduler, the
.spec.schedulerName
field of the Pod must be set to rok-scheduler
. We
have automated this process by deploying the Rok Scheduler Webhook, which
watches for new Pods in specific namespaces and mutates them by adding the
aforementioned field.
Overview
What You’ll Need¶
- An upgraded management environment.
- An existing Kubernetes cluster.
- An upgraded Rok 1.5.3 deployment.
- Your local clone of the Arrikto GitOps repository.
- Arrikto manifests for EKF version 1.5.3.
- Access to Arrikto’s Private Registry.
Procedure¶
Go to your GitOps repository, inside your
rok-tools
management environment:root@rok-tools:~# cd ~/ops/deploymentsCopy
dockerconfig.json
to the following location:root@rok-tools:~/ops/deployments# cp deploy/dockerconfig.json \ > rok/rok-scheduler-webhook/overlays/deploy/secrets/dockerconfig.jsonAdd the Rok Scheduler overlay that corresponds to your Kubernetes version. Edit
rok/rok-scheduler/overlays/deploy/kustomization.yaml
and usek8s-1.19
instead ofbase
as the base overlay:resources: #- ../../base - ../k8s-1.19Commit your changes:
root@rok-tools:~/ops/deployments# git commit -am "Deploy Rok Scheduler"Deploy the Rok Scheduler:
root@rok-tools:~/ops/deployments# rok-deploy --apply rok/rok-scheduler/overlays/deployDeploy the Rok Scheduler Webhook:
root@rok-tools:~/ops/deployments# rok-deploy --apply rok/rok-scheduler-webhook/overlays/deploy
Verify¶
Verify that the Rok Scheduler is up and running. Verify that field READY is 1/1:
root@rok-tools:~# kubectl get deploy -n rok-system rok-scheduler NAME READY AGE rok-scheduler 1/1 1mVerify that the Rok Scheduler Webhook is up and running. Verify that field READY is 1/1:
root@rok-tools:~# kubectl get deploy -n rok-system rok-scheduler-webhook NAME READY AGE rok-scheduler-webhook 1/1 1m