📖 Scenario: You are managing a Kubernetes cluster for a small company. To organize and identify resources easily, you want to add labels to your pods. Labels help you group and select resources later.
🎯 Goal: Learn how to add labels to a Kubernetes pod manifest and verify the labels are applied correctly.
📋 What You'll Learn
Create a pod manifest with a specific name
Add a label to the pod metadata
Use kubectl commands to check the labels
Print the pod labels to confirm
💡 Why This Matters
🌍 Real World
Labels are used in Kubernetes to organize, select, and manage resources easily in real clusters.
💼 Career
Knowing how to add and use labels is essential for Kubernetes administrators and DevOps engineers to manage workloads efficiently.
Progress0 / 4 steps
1
Create a basic pod manifest
Create a YAML file named pod.yaml with a pod named myapp-pod in the default namespace. The pod should run the container image nginx.
Kubernetes
Hint
Remember to include apiVersion, kind, metadata with name, and spec with containers.
2
Add a label to the pod metadata
Add a label called app with the value myapp under the metadata section in pod.yaml.
Kubernetes
Hint
Labels go under metadata as a map of key-value pairs.
3
Apply the pod manifest and check labels
Run the command kubectl apply -f pod.yaml to create the pod. Then run kubectl get pod myapp-pod --show-labels to see the labels on the pod.
Kubernetes
Hint
Use kubectl apply to create or update resources. Use kubectl get with --show-labels to see labels.
4
Print the pod labels using kubectl describe
Run kubectl describe pod myapp-pod and print the output to confirm the label app=myapp is present under Labels.
Kubernetes
Hint
The kubectl describe command shows detailed info including labels under the Labels section.
Practice
(1/5)
1. What is the main purpose of adding labels to Kubernetes resources?
easy
A. To change the resource's namespace
B. To increase resource memory limits
C. To organize and select resources easily
D. To delete resources automatically
Solution
Step 1: Understand what labels do
Labels are key-value pairs used to tag Kubernetes resources for identification and grouping.
Step 2: Identify the purpose of labels
Labels help organize, select, and manage resources easily, not change resource limits or namespaces.
Final Answer:
To organize and select resources easily -> Option C
Quick Check:
Labels = Organize & Select [OK]
Hint: Labels tag resources for easy grouping and selection [OK]
Common Mistakes:
Thinking labels change resource limits
Confusing labels with namespaces
Assuming labels delete resources
2. Which of the following is the correct command to add a label env=production to a pod named webapp?
easy
A. kubectl label pod webapp env=production
B. kubectl add label pod webapp env=production
C. kubectl set label pod webapp env=production
D. kubectl create label pod webapp env=production
Solution
Step 1: Recall the correct kubectl command for labeling
The correct command to add or update labels is kubectl label.
Step 2: Check the syntax for labeling a pod
The syntax is kubectl label pod [pod-name] key=value. So kubectl label pod webapp env=production is correct.
Final Answer:
kubectl label pod webapp env=production -> Option A
Quick Check:
Command = kubectl label [OK]
Hint: Use 'kubectl label' to add or change labels [OK]
Common Mistakes:
Using 'kubectl add label' which is invalid
Using 'kubectl set label' which is not a valid command
Using 'kubectl create label' which does not exist
3. What will be the output of this command if the pod webapp already has a label env=staging and you run: kubectl label pod webapp env=production --overwrite Then check labels with: kubectl get pod webapp --show-labels?
medium
A. The pod will have label env=production
B. The pod will have both env=staging and env=production labels
C. The command will fail with an error
D. The pod will have no labels
Solution
Step 1: Understand the --overwrite flag effect
The --overwrite flag allows replacing an existing label value with a new one.
Step 2: Apply the command to the existing label
Since the pod has env=staging, running the command with --overwrite changes it to env=production.
Final Answer:
The pod will have label env=production -> Option A
Quick Check:
Overwrite replaces old label value [OK]
Hint: Use --overwrite to change existing label values [OK]
Common Mistakes:
Expecting both old and new labels to exist
Thinking command fails without --overwrite
Assuming labels get deleted
4. You tried to add a label to a deployment with: kubectl label deployment version=1.0 But got an error: error: resource(s) were provided, but no name, label selector, or --all flag specified What is the likely cause?
medium
A. You must specify a namespace with -n flag
B. You used the wrong command; should be kubectl add label
C. You need to add --overwrite flag
D. You did not specify the deployment name correctly
Solution
Step 1: Analyze the error message
The error says no name or selector was specified, meaning the resource name is missing or incorrect.
Step 2: Check the command syntax
The command requires the exact resource name after the resource type. If the deployment name is missing or misspelled, the error occurs.
Final Answer:
You did not specify the deployment name correctly -> Option D
Quick Check:
Resource name missing causes this error [OK]
Hint: Always specify exact resource name after type [OK]
Common Mistakes:
Using 'kubectl add label' which is invalid
Forgetting to specify resource name
Assuming --overwrite fixes missing name error
5. You want to add two labels tier=frontend and version=v2 to all pods with label app=web. Which command correctly does this?
hard
A. kubectl label pods -selector app=web tier=frontend version=v2
B. kubectl label pods --selector app=web tier=frontend version=v2
C. kubectl label pods -l app=web tier=frontend --overwrite version=v2
D. kubectl label pods --all tier=frontend version=v2
Solution
Step 1: Use label selector to target pods
The --selector or -l flag filters pods by label app=web.
Step 2: Add multiple labels in one command
You can add multiple labels by listing them separated by spaces after the resource selector.
Step 3: Choose the correct syntax
kubectl label pods --selector app=web tier=frontend version=v2 uses --selector and adds both labels correctly. kubectl label pods -selector app=web tier=frontend version=v2 is invalid because it uses a single dash for selector, kubectl label pods -l app=web tier=frontend --overwrite version=v2 misuses --overwrite, kubectl label pods --all tier=frontend version=v2 applies to all pods, not filtered.
Final Answer:
kubectl label pods --selector app=web tier=frontend version=v2 -> Option B
Quick Check:
Use --selector and list labels to add multiple [OK]
Hint: Use --selector (-l) to target resources by label [OK]
Common Mistakes:
Using -l without double dash or wrong syntax
Adding --overwrite unnecessarily
Using --all instead of selector
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.