📖 Scenario: You are managing a Kubernetes cluster with multiple pods running different applications. You want to filter and view pods based on their labels to quickly find specific groups of pods.
🎯 Goal: Learn how to use kubectl commands to filter pods by their labels and display the filtered list.
📋 What You'll Learn
Use kubectl commands to list pods
Filter pods by label selectors
Understand how to add labels to pods
Display filtered pods using kubectl
💡 Why This Matters
🌍 Real World
Filtering Kubernetes resources by labels helps quickly find and manage specific groups of pods or other objects in large clusters.
💼 Career
Kubernetes administrators and DevOps engineers use label-based filtering daily to monitor, troubleshoot, and organize cluster resources efficiently.
Progress0 / 4 steps
1
Create pods with labels
Create two pods named frontend-pod and backend-pod with labels app=frontend and app=backend respectively using kubectl run commands.
Kubernetes
Hint
Use kubectl run with --labels option to assign labels when creating pods.
2
Add a label selector variable
Create a shell variable called LABEL_SELECTOR and set it to app=frontend to use as a filter for pods.
Kubernetes
Hint
Use LABEL_SELECTOR=app=frontend to create the variable.
3
Filter pods using the label selector
Use kubectl get pods with the -l option and the variable $LABEL_SELECTOR to list only pods with the label app=frontend.
Kubernetes
Hint
Use kubectl get pods -l $LABEL_SELECTOR to filter pods by label.
4
Display the filtered pods
Run the command to display pods filtered by the label app=frontend. The output should list only the frontend-pod.
Kubernetes
Hint
The output should show only the pod named frontend-pod.
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
Step 1: Understand the purpose of -l in kubectl get
The -l option is used to specify a label selector to filter resources.
Step 2: Identify what filtering means in this context
Filtering means showing only resources that have the specified label(s).
Final Answer:
Filters resources based on their labels -> Option A
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
Step 1: Recall the correct flag for label filtering
The correct flag is -l or --selector, not --label or -filter.
Step 2: Check the syntax for label selector
The syntax is -l key=value, so -l app=frontend is correct.
Final Answer:
kubectl get pods -l app=frontend -> Option A
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
Step 1: Understand label selector with multiple labels
The selector app=frontend,env=prod means pods must have both labels with these exact values.
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.
Final Answer:
pod/pod1 -> Option B
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
Step 1: Analyze the label selector syntax
The command uses -l app=frontend env=prod without a comma between labels, which is invalid syntax.
Step 2: Correct syntax requires comma separation
Labels must be separated by commas like -l app=frontend,env=prod to work properly.
Final Answer:
Missing comma between labels in the selector -> Option C
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
Step 1: Understand label selector for exclusion
To exclude pods with a label, use key!=value syntax inside the selector.
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.
Final Answer:
kubectl get pods -l 'app=frontend,env!=dev' -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.