Setting Priority Classes in DKP Applications
In DKP, your workloads can be prioritized to ensure that your critical components stay running in any situation.
Priority Classes can be set for any application in DKP, including Platform Applications, Catalog applications, and even your own Custom Applications.
By default, the priority classes of Platform Applications are set by DKP.
See the following pages for more information about the default priority classes for DKP applications:
This page gives instructions on how you can override the default priority class of any application in DKP to a different one.
DKP Priority Classes
Here are the priority classes that are available in DKP:
Class | Value Name | Value | Description |
DKP High |
| 100001000 | This is the priority class that is used for high priority DKP workloads. |
DKP Critical |
| 100002000 | This is the highest priority class that is used for critical priority DKP workloads. |
Prerequisites
Set the WORKSPACE_NAMESPACE
environment variable to the name of the workspace’s namespace where the cluster is attached:
export WORKSPACE_NAMESPACE=<your_workspace_namespace>
You are now able to copy the following commands without having to replace the placeholder with your workspace namespace every time you run a command.
Set the Priority Class
Follow these steps.
Keep in mind that the overrides for each application appears differently and is dependent on how the application’s helm chart values are configured.
For more information about the helm chart values used in the DKP Platform Applications, see DKP 2.7.0 Components and Applications.
Generally speaking, performing a search for the priorityClassName
field allows you to find out how you can set the priority class for a component.
In the example below which uses the helm chart values in Grafana Loki, the referenced priorityClassName
field is nested under the ingester
component. That said, if you reference the Grafana Loki helm chart values, you’ll see that the priority class can be set for several other components, including distributor
, ruler
, and on a global
level.
Create a
ConfigMap
with custom priority class configuration values for Grafana Loki. The following example sets the priority class of ingester component to the DKP critical priority class:CODEcat <<EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: namespace: ${WORKSPACE_NAMESPACE} name: grafana-loki-overrides data: values.yaml: | ingester: priorityClassName: dkp-critical-priority EOF
Edit the
grafana-loki
AppDeployment to set the value ofspec.configOverrides.name
tografana-loki-overrides
(Refer to Deploy a service with a custom configuration for more information).CODEdkp edit appdeployment -n ${WORKSPACE_NAMESPACE} grafana-loki
After your editing is complete, the AppDeployment resembles this example:
CODEapiVersion: apps.kommander.d2iq.io/v1alpha3 kind: AppDeployment metadata: name: grafana-loki namespace: ${WORKSPACE_NAMESPACE} spec: appRef: name: grafana-loki-0.69.16 kind: ClusterApp configOverrides: name: grafana-loki-overrides
It will take a few minutes to reconcile, but you can check the ingester pod’s priority class after reconciling:
CODEkubectl get pods -n ${WORKSPACE_NAMESPACE} -o custom-columns=NAME:.metadata.name,PRIORITY:.spec.priorityClassName,PRIORITY:.spec.priority |grep ingester
It will show something like this:
CODENAME PRIORITY PRIORITY grafana-loki-loki-distributed-ingester-0 dkp-critical-priority 100002000
For more information about priority classes, see https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/