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
Resource monitoring best practices
📖 Scenario: You are managing a Kubernetes cluster for a small web application. To keep the application healthy and efficient, you need to monitor resource usage like CPU and memory. This helps avoid crashes and slowdowns.
🎯 Goal: Build a simple Kubernetes Pod manifest with resource requests and limits set. Then, add a label to help identify the Pod for monitoring tools. Finally, print the Pod manifest to verify your setup.
📋 What You'll Learn
Create a Pod manifest named webapp-pod.yaml with a container named webapp
Set CPU request to 100m and memory request to 200Mi
Set CPU limit to 500m and memory limit to 500Mi
Add a label app: webapp to the Pod metadata
Print the Pod manifest content
💡 Why This Matters
🌍 Real World
In real Kubernetes clusters, setting resource requests and limits prevents resource contention and helps monitoring tools track application health.
💼 Career
DevOps engineers and site reliability engineers use these best practices daily to maintain stable and efficient cloud applications.
Progress0 / 4 steps
1
Create the basic Pod manifest
Create a YAML file named webapp-pod.yaml with a Pod named webapp-pod that has one container named webapp using the image nginx. Include only the basic structure with apiVersion, kind, metadata, and spec with the container name and image.
Kubernetes
Hint
Start with the basic Pod YAML structure. Use apiVersion: v1 and kind: Pod. Add metadata with the Pod name and a spec with one container.
2
Add resource requests and limits
In the webapp-pod.yaml, add resource requests for CPU as 100m and memory as 200Mi. Also add resource limits for CPU as 500m and memory as 500Mi under the container named webapp.
Kubernetes
Hint
Under the container, add a resources section with requests and limits. Use quotes around the values.
3
Add a label for monitoring
Add a label app: webapp under the metadata section of the Pod manifest webapp-pod.yaml. This label helps monitoring tools identify the Pod.
Kubernetes
Hint
Under metadata, add a labels section with app: webapp.
4
Print the Pod manifest
Print the contents of the webapp-pod.yaml file to verify the Pod manifest with resource requests, limits, and label.
Kubernetes
Hint
Use print statements to output each line of the Pod manifest exactly as in the YAML.
Practice
(1/5)
1. Why is it important to set resource requests and limits in Kubernetes pods?
easy
A. To ensure pods get the resources they need and prevent resource conflicts
B. To make pods run slower and use more CPU
C. To disable monitoring tools automatically
D. To allow unlimited resource usage without restrictions
Solution
Step 1: Understand resource requests and limits
Resource requests define the minimum resources a pod needs, and limits set the maximum it can use.
Step 2: Recognize the effect on cluster stability
Setting these prevents pods from using too many resources and causing conflicts or crashes.
Final Answer:
To ensure pods get the resources they need and prevent resource conflicts -> Option A
Quick Check:
Resource requests and limits = prevent conflicts [OK]
Hint: Requests = minimum, limits = maximum resources [OK]
Common Mistakes:
Thinking limits slow down pods intentionally
Believing requests disable monitoring
Assuming unlimited usage is safe
2. Which command correctly shows current CPU and memory usage of pods in Kubernetes?
easy
A. kubectl monitor pods
B. kubectl get pods --usage
C. kubectl top pods
D. kubectl describe pods --metrics
Solution
Step 1: Identify the command for resource usage
The kubectl top pods command shows CPU and memory usage of pods.
Step 2: Check other options for correctness
Other commands are invalid or do not show usage metrics.
Final Answer:
kubectl top pods -> Option C
Quick Check:
Usage command = kubectl top pods [OK]
Hint: Use 'kubectl top pods' to see pod resource usage [OK]
Common Mistakes:
Using 'kubectl get pods --usage' which is invalid
Confusing 'describe' with usage metrics
Assuming 'kubectl monitor' is a valid command
3. Given this command output:
NAME CPU(cores) MEMORY(bytes)
myapp-pod-1 150m 200Mi
myapp-pod-2 300m 400Mi
What is the total CPU usage of both pods?
medium
A. 300m
B. 450m
C. 150m
D. 600m
Solution
Step 1: Add CPU usage values from both pods
150m + 300m = 450m CPU cores.
Step 2: Confirm units and sum
Both values are in millicores (m), so sum is 450m.
Final Answer:
450m -> Option B
Quick Check:
150m + 300m = 450m [OK]
Hint: Add CPU millicores values directly [OK]
Common Mistakes:
Adding memory values instead of CPU
Confusing 450m with 600m
Ignoring units and summing incorrectly
4. You set resource limits on a pod, but kubectl top pods shows usage exceeding those limits. What is the likely cause?
medium
A. The pod has no resource requests set
B. The pod is using burstable QoS and can exceed limits temporarily
C. Resource limits are not enforced by Kubernetes by default
D. The metrics server is not installed or reporting incorrect data
Solution
Step 1: Understand resource limits enforcement
Kubernetes enforces limits strictly; pods cannot exceed set limits.
Step 2: Consider metrics server role
If usage shows above limits, metrics server may be missing or reporting wrong data.
Final Answer:
The metrics server is not installed or reporting incorrect data -> Option D
Quick Check:
Incorrect metrics = wrong usage shown [OK]
Hint: Check metrics server if usage exceeds limits [OK]
Common Mistakes:
Thinking Kubernetes allows exceeding limits
Confusing QoS classes with limit enforcement
Ignoring metrics server installation
5. You want to monitor resource usage trends over time for your Kubernetes cluster. Which approach is best?
hard
A. Set resource requests and limits, then use a monitoring tool like Prometheus
B. Use kubectl top repeatedly and save output manually
C. Only set resource limits without monitoring tools
D. Rely on kubectl describe to check resource usage daily
Solution
Step 1: Understand monitoring needs over time
Manual commands show current usage but not trends or history.
Step 2: Use monitoring tools with resource limits
Setting requests/limits ensures stable usage; tools like Prometheus collect and visualize trends.
Final Answer:
Set resource requests and limits, then use a monitoring tool like Prometheus -> Option A
Quick Check:
Requests + monitoring tool = best practice [OK]
Hint: Combine limits with Prometheus for trend monitoring [OK]