Bird
Raised Fist0
Kubernetesdevops~10 mins

Priority classes for critical workloads in Kubernetes - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a PriorityClass named 'high-priority' with a value of 1000.

Kubernetes
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: [1]
globalDefault: false
description: "High priority class for critical workloads"
Drag options to blanks, or click blank then click option'
A500
B100
C10
D1000
Attempts:
3 left
💡 Hint
Common Mistakes
Using a low priority value like 10 or 100 for critical workloads.
2fill in blank
medium

Complete the code to assign the 'high-priority' PriorityClass to a Pod spec.

Kubernetes
apiVersion: v1
kind: Pod
metadata:
  name: critical-pod
spec:
  priorityClassName: [1]
  containers:
  - name: app
    image: nginx
Drag options to blanks, or click blank then click option'
Ahigh-priority
Bdefault
Clow-priority
Dsystem-node-critical
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'default' or a non-existent PriorityClass name.
3fill in blank
hard

Fix the error in the PriorityClass definition by completing the missing field.

Kubernetes
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: [1]
value: 1000
globalDefault: false
description: "Critical workload priority"
Drag options to blanks, or click blank then click option'
Alow-priority
Bsystem-cluster-critical
Chigh-priority
Ddefault
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'default' or unrelated names causing conflicts.
4fill in blank
hard

Fill both blanks to create a PriorityClass with a value of 2000 and set it as the global default.

Kubernetes
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: [1]
value: [2]
globalDefault: true
description: "Default priority for critical workloads"
Drag options to blanks, or click blank then click option'
Acritical-default
B1000
C2000
Dhigh-priority
Attempts:
3 left
💡 Hint
Common Mistakes
Using a low value or forgetting to set globalDefault to true.
5fill in blank
hard

Fill all three blanks to create a Pod spec that uses the 'critical-default' PriorityClass and runs an nginx container.

Kubernetes
apiVersion: v1
kind: Pod
metadata:
  name: [1]
spec:
  priorityClassName: [2]
  containers:
  - name: [3]
    image: nginx
Drag options to blanks, or click blank then click option'
Anginx-pod
Bcritical-default
Capp-container
Ddefault
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'default' priorityClassName or mismatching container names.

Practice

(1/5)
1. What does a higher value in a Kubernetes PriorityClass mean?
easy
A. The pod will be scheduled on nodes with more memory.
B. The pod will use less CPU resources.
C. The pod has a higher priority and is more important.
D. The pod will restart automatically on failure.

Solution

  1. Step 1: Understand PriorityClass value meaning

    In Kubernetes, the value field in a PriorityClass defines the importance of the pod. Higher values mean higher priority.
  2. Step 2: Relate priority to pod importance

    Pods with higher priority are considered more critical and get scheduled before lower priority pods.
  3. Final Answer:

    The pod has a higher priority and is more important. -> Option C
  4. Quick Check:

    Higher value = higher priority [OK]
Hint: Higher PriorityClass value means more important pod [OK]
Common Mistakes:
  • Confusing priority with resource limits
  • Thinking priority controls pod restart behavior
  • Assuming priority affects node selection by memory
2. Which of the following is the correct YAML snippet to define a PriorityClass named high-priority with value 1000 and globalDefault: false?
easy
A. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000 globalDefault: false description: "High priority class"
B. apiVersion: v1 kind: PriorityClass metadata: name: high-priority priority: 1000 default: false
C. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000 globalDefault: true description: "High priority class"
D. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: "1000" globalDefault: false description: "High priority class"

Solution

  1. Step 1: Check correct apiVersion and kind

    The correct apiVersion for PriorityClass is scheduling.k8s.io/v1 and kind is PriorityClass.
  2. Step 2: Verify fields and types

    The field for priority is value (integer), not priority. globalDefault is a boolean. The value must be an integer, not a string.
  3. Final Answer:

    YAML with apiVersion scheduling.k8s.io/v1, kind PriorityClass, value 1000 as integer, globalDefault false -> Option A
  4. Quick Check:

    Correct apiVersion and value field [OK]
Hint: Use 'value' as integer and correct apiVersion [OK]
Common Mistakes:
  • Using wrong apiVersion or kind
  • Using 'priority' instead of 'value'
  • Setting value as string instead of integer
3. Given this PriorityClass YAML and pod spec, what priority value will the pod have?
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: critical
value: 2000
globalDefault: false
description: "Critical priority"

---

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  priorityClassName: critical
  containers:
  - name: app
    image: nginx
medium
A. 1000
B. 2000
C. 0
D. Pod will fail to schedule

Solution

  1. Step 1: Identify PriorityClass used by pod

    The pod specifies priorityClassName: critical, so it uses the PriorityClass named 'critical'.
  2. Step 2: Find priority value of 'critical'

    The PriorityClass 'critical' has value: 2000, so the pod's priority is 2000.
  3. Final Answer:

    2000 -> Option B
  4. Quick Check:

    Pod priority matches PriorityClass value [OK]
Hint: Pod priority equals PriorityClass value it references [OK]
Common Mistakes:
  • Assuming default priority 0 without PriorityClass
  • Confusing priorityClassName with container image
  • Thinking pod fails without globalDefault
4. You created a PriorityClass with globalDefault: true but pods without priorityClassName still have priority 0. What is the likely cause?
medium
A. The PriorityClass value is set to 0.
B. globalDefault only works for DaemonSets, not pods.
C. Pods must specify priorityClassName to get any priority.
D. The PriorityClass resource was not applied correctly.

Solution

  1. Step 1: Understand globalDefault behavior

    A PriorityClass with globalDefault: true sets the default priority for pods without a specified class.
  2. Step 2: Check why pods have priority 0

    If pods still have priority 0, likely the PriorityClass was not created or applied properly, so Kubernetes does not see it as default.
  3. Final Answer:

    The PriorityClass resource was not applied correctly. -> Option D
  4. Quick Check:

    globalDefault requires correct PriorityClass creation [OK]
Hint: Check if PriorityClass resource is applied when globalDefault fails [OK]
Common Mistakes:
  • Assuming pods need priorityClassName despite globalDefault
  • Setting globalDefault on PriorityClass with value 0
  • Believing globalDefault only applies to DaemonSets
5. You want to ensure that all pods without a specified PriorityClass get a default priority of 500, but also have a critical class with priority 2000. Which YAML snippet correctly sets this up?
hard
A. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: default-priority value: 500 globalDefault: true description: "Default priority" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 2000 globalDefault: false description: "Critical priority"
B. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 2000 globalDefault: true description: "Critical priority" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: default-priority value: 500 globalDefault: false description: "Default priority"
C. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: default-priority value: 500 globalDefault: false description: "Default priority" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 2000 globalDefault: true description: "Critical priority"
D. apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: default-priority value: 500 globalDefault: true description: "Default priority" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 2000 globalDefault: true description: "Critical priority"

Solution

  1. Step 1: Identify globalDefault usage

    Only one PriorityClass can have globalDefault: true. This sets the default priority for pods without a class.
  2. Step 2: Assign correct priorities

    Set the default-priority class with value 500 and globalDefault true. Set critical class with value 2000 and globalDefault false.
  3. Final Answer:

    Default priority 500 with globalDefault true, critical 2000 without globalDefault -> Option A
  4. Quick Check:

    Only one globalDefault PriorityClass allowed [OK]
Hint: Only one PriorityClass can have globalDefault true [OK]
Common Mistakes:
  • Setting globalDefault true on multiple PriorityClasses
  • Confusing which class should be default
  • Using same priority value for default and critical