Bird
Raised Fist0
Kubernetesdevops~10 mins

Storage classes for dynamic provisioning in Kubernetes - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a StorageClass with dynamic provisioning.

Kubernetes
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: [1]
Drag options to blanks, or click blank then click option'
Akubernetes.io/host-path
Bkubernetes.io/no-provisioner
Ckubernetes.io/aws-ebs
Dkubernetes.io/static-provisioner
Attempts:
3 left
💡 Hint
Common Mistakes
Using a provisioner that does not support dynamic provisioning.
Confusing static provisioner names with dynamic ones.
2fill in blank
medium

Complete the code to set the reclaim policy to delete volumes after release.

Kubernetes
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
reclaimPolicy: [1]
Drag options to blanks, or click blank then click option'
ARemove
BRetain
CRecycle
DDelete
Attempts:
3 left
💡 Hint
Common Mistakes
Using Retain which keeps the volume after release.
Using invalid reclaim policy values.
3fill in blank
hard

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

Kubernetes
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: [1]
Drag options to blanks, or click blank then click option'
Akubernetes.io/host-path
Bkubernetes.io/gce-pd
Ckubernetes.io/aws-ebs
Dkubernetes.io/no-provisioner
Attempts:
3 left
💡 Hint
Common Mistakes
Using a provisioner not supported by the cloud environment.
Using no-provisioner which disables dynamic provisioning.
4fill in blank
hard

Fill both blanks to create a StorageClass with volume binding mode set to WaitForFirstConsumer.

Kubernetes
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: delayed
provisioner: [1]
volumeBindingMode: [2]
Drag options to blanks, or click blank then click option'
Akubernetes.io/aws-ebs
BImmediate
CWaitForFirstConsumer
Dkubernetes.io/gce-pd
Attempts:
3 left
💡 Hint
Common Mistakes
Using Immediate which binds volume immediately.
Mixing provisioners and volume binding modes incorrectly.
5fill in blank
hard

Fill all three blanks to create a StorageClass with parameters for type gp2 and allowVolumeExpansion enabled.

Kubernetes
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: expandable
provisioner: [1]
parameters:
  type: [2]
allowVolumeExpansion: [3]
Drag options to blanks, or click blank then click option'
Akubernetes.io/aws-ebs
Bgp2
Ctrue
Dfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Using false for allowVolumeExpansion when expansion is needed.
Incorrect provisioner or parameter values.

Practice

(1/5)
1. What is the main purpose of a StorageClass in Kubernetes?
easy
A. To define how storage volumes are dynamically provisioned
B. To schedule pods on specific nodes
C. To manage network policies
D. To configure container resource limits

Solution

  1. Step 1: Understand StorageClass role

    A StorageClass defines parameters for dynamic volume provisioning in Kubernetes.
  2. Step 2: Compare with other options

    Scheduling pods, managing network policies, and resource limits are unrelated to StorageClass.
  3. Final Answer:

    To define how storage volumes are dynamically provisioned -> Option A
  4. Quick Check:

    StorageClass = dynamic provisioning [OK]
Hint: StorageClass controls storage creation, not pods or network [OK]
Common Mistakes:
  • Confusing StorageClass with pod scheduling
  • Thinking StorageClass manages network policies
  • Assuming StorageClass sets container CPU/memory limits
2. Which of the following is the correct YAML snippet to specify a StorageClass named fast-storage for a PersistentVolumeClaim?
easy
A. StorageClass: fast-storage
B. storageclass: fast-storage
C. storageClassName: fast-storage
D. storage_class_name: fast-storage

Solution

  1. Step 1: Recall correct field name

    The correct field in PVC spec is storageClassName with camelCase.
  2. Step 2: Check other options

    Options B, C, and D use incorrect casing or underscores, which are invalid in Kubernetes YAML.
  3. Final Answer:

    storageClassName: fast-storage -> Option C
  4. Quick Check:

    Correct YAML key = storageClassName [OK]
Hint: Use exact camelCase 'storageClassName' in PVC spec [OK]
Common Mistakes:
  • Using wrong casing like 'storageclass' or 'StorageClass'
  • Replacing camelCase with underscores
  • Misspelling the field name
3. Given this StorageClass YAML snippet:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain

What will happen when a PersistentVolumeClaim requests storage from this class?
medium
A. The volume will not be dynamically provisioned; manual provisioning is required
B. The volume will be deleted automatically when released
C. The volume will be dynamically provisioned immediately
D. The volume will be provisioned but bound immediately without waiting

Solution

  1. Step 1: Analyze provisioner field

    The provisioner is kubernetes.io/no-provisioner, meaning no dynamic provisioning.
  2. Step 2: Understand reclaimPolicy and binding mode

    ReclaimPolicy is Retain (volume kept after release), and volumeBindingMode waits for pod scheduling.
  3. Final Answer:

    The volume will not be dynamically provisioned; manual provisioning is required -> Option A
  4. Quick Check:

    No provisioner = manual provisioning [OK]
Hint: No provisioner means no dynamic provisioning [OK]
Common Mistakes:
  • Assuming dynamic provisioning happens with no-provisioner
  • Confusing reclaimPolicy with provisioning behavior
  • Ignoring volumeBindingMode effect
4. You created a StorageClass with volumeBindingMode: Immediate but your pods fail to schedule because volumes are not available in the node's zone. What is the likely cause and fix?
medium
A. Cause: StorageClass name mismatch; Fix: Correct PVC storageClassName
B. Cause: Reclaim policy is Retain; Fix: Change to Delete
C. Cause: Provisioner is missing; Fix: Add a provisioner
D. Cause: Immediate binding ignores pod location; Fix: Change to WaitForFirstConsumer

Solution

  1. Step 1: Understand volumeBindingMode impact

    Immediate binding provisions and binds volume before pod scheduling, ignoring node zone.
  2. Step 2: Identify fix

    Changing to WaitForFirstConsumer delays binding until pod scheduling, ensuring volume is in correct zone.
  3. Final Answer:

    Cause: Immediate binding ignores pod location; Fix: Change to WaitForFirstConsumer -> Option D
  4. Quick Check:

    Immediate binding ignores pod zone [OK]
Hint: Use WaitForFirstConsumer to bind volume after pod scheduling [OK]
Common Mistakes:
  • Changing reclaimPolicy instead of binding mode
  • Adding provisioner when already present
  • Fixing storageClassName without checking binding mode
5. You want to create a StorageClass that dynamically provisions SSD-backed volumes with fast performance, deletes volumes when released, and delays binding until pod scheduling. Which YAML snippet correctly implements this?
hard
A. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: standard reclaimPolicy: Retain volumeBindingMode: Immediate
B. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp2 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer
C. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/no-provisioner parameters: type: io1 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer
D. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: io1 reclaimPolicy: Delete volumeBindingMode: Immediate

Solution

  1. Step 1: Identify correct provisioner and parameters

    For AWS SSD, provisioner is kubernetes.io/aws-ebs and type gp2 is general SSD.
  2. Step 2: Check reclaimPolicy and binding mode

    ReclaimPolicy should be Delete to remove volumes after release; binding mode WaitForFirstConsumer delays binding until pod scheduling.
  3. Step 3: Validate options

    apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: standard reclaimPolicy: Retain volumeBindingMode: Immediate uses wrong type and policies; apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/no-provisioner parameters: type: io1 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer uses no provisioner; apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: io1 reclaimPolicy: Delete volumeBindingMode: Immediate uses Immediate binding which is not desired; apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp2 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer matches all requirements.
  4. Final Answer:

    YAML with provisioner kubernetes.io/aws-ebs, type gp2, reclaimPolicy Delete, and WaitForFirstConsumer -> Option B
  5. Quick Check:

    Correct provisioner + Delete + WaitForFirstConsumer = apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp2 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer [OK]
Hint: Match provisioner, parameters, reclaimPolicy, and bindingMode exactly [OK]
Common Mistakes:
  • Using no-provisioner disables dynamic provisioning
  • Choosing wrong volume type parameter
  • Setting reclaimPolicy to Retain instead of Delete
  • Using Immediate binding when delayed binding is needed
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard