docs/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-persisting-sched...

2.9 KiB

type title linkTitle weight description
docs How-to: Persist Scheduler Jobs How-to: Persist Scheduler Jobs 50000 Configure Scheduler to persist its database to make it resilient to restarts

The [Scheduler]({{< ref scheduler.md >}}) service is responsible for writing jobs to its embedded database and scheduling them for execution. By default, the Scheduler service database writes this data to an in-memory ephemeral tempfs volume, meaning that this data is not persisted across restarts. Job data will be lost during these events.

To make the Scheduler data resilient to restarts, a persistent volume must be mounted to the Scheduler StatefulSet. This persistent volume is backed by a real disk that is provided by the hosted Cloud Provider or Kubernetes infrastructure platform. Disk size is determined by how many jobs are expected to be persisted at once; however, 64Gb should be more than sufficient for most use cases. Some Kubernetes providers recommend using a CSI driver to provision the underlying disks. Below are a list of useful links to the relevant documentation for creating a persistent disk for the major cloud providers:

Once the persistent volume class is available, you can install Dapr using the following command, with Scheduler configured to use the persistent volume class (replace my-storage-class with the name of the storage class):

{{% alert title="Note" color="primary" %}} If Dapr is already installed, the control plane needs to be completely [uninstalled]({{< ref dapr-uninstall.md >}}) in order for the Scheduler StatefulSet to be recreated with the new persistent volume. {{% /alert %}}

{{< tabs "Dapr CLI" "Helm" >}}

{{% codetab %}}

dapr init -k --set dapr_scheduler.cluster.storageClassName=my-storage-class

{{% /codetab %}}

{{% codetab %}}

helm upgrade --install dapr dapr/dapr \
--version={{% dapr-latest-version short="true" %}} \
--namespace dapr-system \
--create-namespace \
--set dapr_scheduler.cluster.storageClassName=my-storage-class \
--wait

{{% /codetab %}} {{< /tabs >}}