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:
- Google Cloud Persistent Disk
- Amazon EBS Volumes
- Azure AKS Storage Options
- Digital Ocean Block Storage
- VMWare vSphere Storage
- OpenShift Persistent Storage
- Alibaba Cloud Disk Storage
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 >}}