Bird
Raised Fist0
Kubernetesdevops~5 mins

Label-based filtering with kubectl in Kubernetes - Commands & Configuration

Choose your learning style10 modes available
Introduction
When you have many Kubernetes resources, it can be hard to find the ones you want. Labels are like name tags for resources. Using labels, you can quickly find and manage specific groups of resources.
When you want to see all pods related to a specific app in your cluster.
When you need to delete all resources with a certain label to clean up.
When you want to check the status of all services tagged for a particular environment like staging.
When you want to update or patch only the deployments labeled as frontend.
When you want to monitor or debug a group of pods that share the same label.
Commands
This command lists all pods and shows their labels so you can see what labels each pod has.
Terminal
kubectl get pods --show-labels
Expected OutputExpected
NAME READY STATUS RESTARTS AGE LABELS my-app-pod-1 1/1 Running 0 10m app=my-app,env=prod my-app-pod-2 1/1 Running 0 10m app=my-app,env=prod other-pod 1/1 Running 0 5m app=other,env=dev
→
--show-labels - Displays the labels assigned to each resource in the list.
This command filters and shows only pods that have the label 'app=my-app'.
Terminal
kubectl get pods -l app=my-app
Expected OutputExpected
NAME READY STATUS RESTARTS AGE my-app-pod-1 1/1 Running 0 10m my-app-pod-2 1/1 Running 0 10m
→
-l - Filters resources by label selector.
This command filters pods that have both labels 'app=my-app' and 'env=prod'.
Terminal
kubectl get pods -l 'app=my-app,env=prod'
Expected OutputExpected
NAME READY STATUS RESTARTS AGE my-app-pod-1 1/1 Running 0 10m my-app-pod-2 1/1 Running 0 10m
→
-l - Filters resources by multiple labels combined with AND logic.
This command shows pods where the label 'env' is not equal to 'prod'.
Terminal
kubectl get pods -l 'env!=prod'
Expected OutputExpected
NAME READY STATUS RESTARTS AGE other-pod 1/1 Running 0 5m
→
-l - Supports label filtering with inequality.
Key Concept

If you remember nothing else from this pattern, remember: use the -l flag with kubectl to filter resources by their labels quickly and precisely.

Common Mistakes
Using incorrect label syntax like missing quotes around multiple labels.
The shell may misinterpret commas or special characters, causing the command to fail or filter incorrectly.
Always put multiple labels in single quotes like -l 'app=my-app,env=prod' to ensure correct parsing.
Trying to filter by a label that does not exist on any resource.
kubectl returns no results, which can be confusing if you expect matches.
Check labels with --show-labels first to confirm label names before filtering.
Using spaces around commas in label selectors.
Spaces break the label selector syntax and cause errors.
Do not add spaces; write labels as 'app=my-app,env=prod' without spaces.
Summary
Use 'kubectl get pods --show-labels' to see labels on pods.
Use 'kubectl get pods -l <label-selector>' to filter pods by labels.
Label selectors support multiple labels combined with commas and operators like !=.

Practice

(1/5)
1. What does the -l option do in the kubectl get command?
easy
A. Filters resources based on their labels
B. Lists all namespaces in the cluster
C. Deletes resources matching a label
D. Updates the labels of a resource

Solution

  1. Step 1: Understand the purpose of -l in kubectl get

    The -l option is used to specify a label selector to filter resources.
  2. Step 2: Identify what filtering means in this context

    Filtering means showing only resources that have the specified label(s).
  3. Final Answer:

    Filters resources based on their labels -> Option A
  4. Quick Check:

    -l filters by labels [OK]
Hint: Remember: -l means label filter in kubectl [OK]
Common Mistakes:
  • Confusing -l with namespace filtering
  • Thinking -l deletes resources
  • Assuming -l updates labels
2. Which of the following is the correct syntax to list pods with the label app=frontend?
easy
A. kubectl get pods -l app=frontend
B. kubectl get pods --label app=frontend
C. kubectl get pods -label app=frontend
D. kubectl get pods -filter app=frontend

Solution

  1. Step 1: Recall the correct flag for label filtering

    The correct flag is -l or --selector, not --label or -filter.
  2. Step 2: Check the syntax for label selector

    The syntax is -l key=value, so -l app=frontend is correct.
  3. Final Answer:

    kubectl get pods -l app=frontend -> Option A
  4. Quick Check:

    Use -l key=value for label filtering [OK]
Hint: Use -l key=value to filter by label [OK]
Common Mistakes:
  • Using incorrect flags like --label or -filter
  • Missing the equals sign between key and value
  • Using spaces instead of equals sign
3. Given these pods with labels:
pod1: app=frontend, env=prod
pod2: app=frontend, env=dev
pod3: app=backend, env=prod
What is the output of kubectl get pods -l 'app=frontend,env=prod' -o name?
medium
A. pod/pod3
B. pod/pod1
C. pod/pod2
D. pod/pod1 pod/pod2

Solution

  1. Step 1: Understand label selector with multiple labels

    The selector app=frontend,env=prod means pods must have both labels with these exact values.
  2. Step 2: Match pods with both labels

    pod1 has app=frontend and env=prod, so it matches. pod2 has env=dev, so no. pod3 has app=backend, so no.
  3. Final Answer:

    pod/pod1 -> Option B
  4. Quick Check:

    Multiple labels require all to match [OK]
Hint: Multiple labels with commas mean AND condition [OK]
Common Mistakes:
  • Assuming comma means OR instead of AND
  • Ignoring one of the labels in the selector
  • Expecting multiple pods when only one matches all labels
4. You run kubectl get pods -l app=frontend env=prod but get an error. What is the mistake?
medium
A. Labels must be quoted
B. Using wrong resource type
C. Missing comma between labels in the selector
D. kubectl does not support multiple labels

Solution

  1. Step 1: Analyze the label selector syntax

    The command uses -l app=frontend env=prod without a comma between labels, which is invalid syntax.
  2. Step 2: Correct syntax requires comma separation

    Labels must be separated by commas like -l app=frontend,env=prod to work properly.
  3. Final Answer:

    Missing comma between labels in the selector -> Option C
  4. Quick Check:

    Separate multiple labels with commas [OK]
Hint: Separate multiple labels with commas, no spaces [OK]
Common Mistakes:
  • Forgetting commas between multiple labels
  • Adding spaces instead of commas
  • Quoting labels unnecessarily
5. You want to list all pods that have label app=frontend but exclude those with label env=dev. Which command achieves this?
hard
A. kubectl get pods -l 'app=frontend' -l 'env!=dev'
B. kubectl get pods -l 'app=frontend' --exclude-label env=dev
C. kubectl get pods -l 'app=frontend' | grep -v env=dev
D. kubectl get pods -l 'app=frontend,env!=dev'

Solution

  1. Step 1: Understand label selector for exclusion

    To exclude pods with a label, use key!=value syntax inside the selector.
  2. Step 2: Combine inclusion and exclusion in one selector

    Use -l 'app=frontend,env!=dev' to include pods with app=frontend and exclude those with env=dev.
  3. Final Answer:

    kubectl get pods -l 'app=frontend,env!=dev' -> Option D
  4. Quick Check:

    Use key!=value to exclude labels [OK]
Hint: Use key!=value to exclude labels in selector [OK]
Common Mistakes:
  • Trying to use non-existent flags like --exclude-label
  • Using multiple -l flags instead of one combined selector
  • Using grep which is less efficient and error-prone
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