Challenge, Medium,  on  Kubernetes

Create and Assign a Custom PriorityClass to a Workload

Scenario

Your cluster has several PriorityClasses defined for different tiers of workloads.

A new production service prod-event-collector needs to be assigned a priority just below the highest existing user-defined tier — high enough to be preferred over general workloads, but not competing with the most critical platform services.


Task

  1. List the existing PriorityClasses and find the highest user-defined value. Ignore system classes (values above 1000000000).
  2. Create a new PriorityClass named prod-high-priority with a value exactly one less than the highest user-defined value found. Set globalDefault: false.
  3. Patch the deployment prod-event-collector in the prod-platform namespace to use prod-high-priority as its priorityClassName.

Hint 1 — List and Compare Existing PriorityClasses

List all PriorityClasses on the cluster and inspect their values:

kubectl get priorityclass

Kubernetes ships with two built-in system classes — system-cluster-critical and system-node-critical — with values above 1000000000. Ignore those. Your target is the highest user-defined value (below 1000000000).

Documentation

Hint 2 — Create the PriorityClass

A PriorityClass is a cluster-scoped resource. The key fields to set are value, globalDefault, and optionally description. Note that value and globalDefault are top-level fields — not nested under metadata or spec.

Use kubectl apply -f with a manifest, or kubectl create priorityclass if you prefer the imperative path. Refer to the docs for the exact schema.

Documentation

Hint 3 — Patch the Deployment

priorityClassName is a field under spec.template.spec in a Deployment. You can update it using kubectl patch --type=merge, kubectl edit, or kubectl set — whichever you're comfortable with. The field accepts the name of any existing PriorityClass on the cluster.

After updating, wait for the rollout to complete before verifying.

Documentation


⚒ Test Cases