Bird
Raised Fist0
Kubernetesdevops~20 mins

Using labels for service routing in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Label Routing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Service routing with label selectors
Given the following Kubernetes service and pod labels, what pods will the service route traffic to?
Kubernetes
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: web
    tier: frontend
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

Pods:
- pod1 labels: {app: web, tier: frontend}
- pod2 labels: {app: web, tier: backend}
- pod3 labels: {app: api, tier: frontend}
Apod1 only
Bpod1 and pod2
Cpod1 and pod3
Dpod2 and pod3
Attempts:
2 left
💡 Hint
The service selector matches pods with both labels 'app: web' and 'tier: frontend'.
🧠 Conceptual
intermediate
1:30remaining
Label importance in service routing
Why are labels important for Kubernetes service routing?
AThey store the service's IP address
BThey configure the service's port numbers
CThey specify the container image version
DThey define which pods receive traffic from the service
Attempts:
2 left
💡 Hint
Think about how a service knows which pods to send traffic to.
❓ Configuration
advanced
2:00remaining
Correct label selector syntax
Which of the following service selector configurations correctly selects pods with label 'env=prod' and 'version=v2'?
Kubernetes
apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  selector:
A
- env: prod
- version: v2
Benv=prod, version=v2
C
env: prod
version: v2
Denv: 'prod', version: 'v2'
Attempts:
2 left
💡 Hint
Look for the correct YAML key-value mapping under selector.
❓ Troubleshoot
advanced
2:30remaining
Service routes no pods despite matching labels
A service selector is set to 'app: backend'. Pods have label 'app: backend'. However, the service routes no traffic. What is the most likely cause?
APods have the label but are not running
BPods are not in the same namespace as the service
CService port and pod targetPort do not match
DService type is ClusterIP instead of NodePort
Attempts:
2 left
💡 Hint
Check pod status and readiness.
🔀 Workflow
expert
3:00remaining
Label-based canary deployment routing
You want to route 10% of traffic to pods labeled 'version: canary' and 90% to 'version: stable' using Kubernetes services. Which approach achieves this?
AChange pod labels dynamically to switch 10% of pods to 'version: canary'
BCreate two services with selectors for each version and use an Ingress or external load balancer to split traffic by weight
CLabel all pods with both 'version: canary' and 'version: stable' and use one service
DUse a single service with selector 'version: canary, stable' to route traffic proportionally
Attempts:
2 left
💡 Hint
Kubernetes services do not support weighted routing by themselves.

Practice

(1/5)
1. What is the main purpose of using labels in Kubernetes service routing?
easy
A. To connect services to the correct pods
B. To store pod logs
C. To define pod resource limits
D. To schedule pods on specific nodes

Solution

  1. Step 1: Understand labels role

    Labels are key-value pairs attached to pods to identify them.
  2. Step 2: Connect services using selectors

    Services use selectors to find pods with matching labels for routing traffic.
  3. Final Answer:

    To connect services to the correct pods -> Option A
  4. Quick Check:

    Labels link services and pods = D [OK]
Hint: Labels identify pods for services to route traffic [OK]
Common Mistakes:
  • Confusing labels with resource limits
  • Thinking labels store logs
  • Assuming labels control pod scheduling
2. Which of the following is the correct syntax to select pods with label app=frontend in a Service YAML?
easy
A. selector: app: frontend
B. selector: app = frontend
C. selector: app: 'frontend' version: 'v1'
D. selector: - app: frontend

Solution

  1. Step 1: Check YAML selector syntax

    Selectors use key: value pairs without '=' sign or list format.
  2. Step 2: Validate options

    selector: app: frontend uses correct key: value syntax. selector: app = frontend uses '=' which is invalid. selector: app: 'frontend' version: 'v1' adds extra label, which is valid but not asked. selector: - app: frontend uses list format which is invalid for selector.
  3. Final Answer:

    selector: app: frontend -> Option A
  4. Quick Check:

    Selector uses key: value, no '=' or list [OK]
Hint: Use key: value pairs for selectors, no '=' or lists [OK]
Common Mistakes:
  • Using '=' instead of ':' in YAML
  • Writing selectors as lists
  • Adding extra labels not requested
3. Given this Service YAML snippet:
selector:
  app: backend
  tier: api

Which pods will this Service route traffic to?
medium
A. Pods labeled only with app=backend
B. Pods labeled with either app=backend or tier=api
C. Pods labeled with both app=backend and tier=api
D. Pods labeled only with tier=api

Solution

  1. Step 1: Understand selector matching

    Selectors match pods that have all specified labels (AND logic).
  2. Step 2: Apply to given labels

    Pods must have both app=backend and tier=api labels to be selected.
  3. Final Answer:

    Pods labeled with both app=backend and tier=api -> Option C
  4. Quick Check:

    Selector matches all labels (AND) = A [OK]
Hint: Selectors match pods with all labels, not just one [OK]
Common Mistakes:
  • Assuming selector matches any label (OR logic)
  • Ignoring one of the labels in selector
  • Confusing selector with pod annotations
4. You created a Service with selector:
selector:
  app: web
  env: prod

But traffic is not reaching pods. What is the most likely cause?
medium
A. Pods are not running on the same node
B. Service type is not LoadBalancer
C. Service port is missing
D. Pods do not have both labels app=web and env=prod

Solution

  1. Step 1: Check label matching

    Service routes only to pods matching all selector labels.
  2. Step 2: Identify common mismatch

    If pods lack either label, service finds no endpoints, so no traffic flows.
  3. Final Answer:

    Pods do not have both labels app=web and env=prod -> Option D
  4. Quick Check:

    Missing labels cause no pod selection = C [OK]
Hint: Verify pods have all selector labels to receive traffic [OK]
Common Mistakes:
  • Blaming service type instead of labels
  • Assuming node location affects routing
  • Ignoring missing service port errors
5. You want to update your app without downtime. You have pods labeled app=frontend, version=v1. You deploy new pods with app=frontend, version=v2. How should you configure the Service selector to route traffic to both versions during rollout?
hard
A. Use selector: version=v2 only
B. Use selector: app=frontend only
C. Use selector: app=frontend and version=v2
D. Use selector: app=frontend and version=v1

Solution

  1. Step 1: Understand rolling update strategy

    To route traffic to both old and new pods, selector must match both versions.
  2. Step 2: Choose selector that matches both versions

    Selector with only app=frontend matches all pods regardless of version label.
  3. Step 3: Avoid version-specific selectors

    Selectors with version=v1 or version=v2 exclude the other version, causing downtime.
  4. Final Answer:

    Use selector: app=frontend only -> Option B
  5. Quick Check:

    Selector matches all versions for smooth rollout = B [OK]
Hint: Use broad selector to include all versions during rollout [OK]
Common Mistakes:
  • Selecting only new version pods causing downtime
  • Selecting only old version pods ignoring new pods
  • Using multiple selectors that exclude pods
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