4.1 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 Etcd database and scheduling them for execution. By default, the Scheduler service database writes this data to a Persistent Volume Claim of 1Gb of size using the cluster's default storage class. This means that there is no additional parameter required to run the scheduler service reliably on most Kubernetes deployments, although you will need additional configuration in some deployments or for a production environment.
Production Setup
In case your Kubernetes deployment does not have a default storage class or you are configuring a production cluster, defining a storage class is required.
A 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 production scenarios. 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 storage class is available, you can install Dapr using the following command, with Scheduler configured to use the storage 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 >}}
Ephemeral Storage
Scheduler can be optionally made to use Ephemeral storage, which is in-memory storage which is not resilient to restarts, i.e. all Job data will be lost after a Scheduler restart. This is useful for deployments where storage is not available or required, or for testing purposes.
{{% 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 without the persistent volume.
{{% /alert %}}
{{< tabs "Dapr CLI" "Helm" >}}
{{% codetab %}}
dapr init -k --set dapr_scheduler.cluster.inMemoryStorage=true
{{% /codetab %}}
{{% codetab %}}
helm upgrade --install dapr dapr/dapr \
--version={{% dapr-latest-version short="true" %}} \
--namespace dapr-system \
--create-namespace \
--set dapr_scheduler.cluster.inMemoryStorage=true \
--wait
{{% /codetab %}} {{< /tabs >}}