📖 Scenario: You are working in a team managing microservices on Kubernetes. You want to understand how a service mesh helps manage communication between services securely and reliably.
🎯 Goal: Build a simple Kubernetes setup that shows how to label a namespace for a service mesh, configure a service mesh sidecar injection, and verify the mesh is working by checking pod labels and annotations.
📋 What You'll Learn
Create a Kubernetes namespace called demo-namespace
Add a label istio-injection=enabled to the demo-namespace
Deploy a simple pod manifest with a label app: demo-app in demo-namespace
Check that the pod has the service mesh sidecar injected by verifying pod annotations
💡 Why This Matters
🌍 Real World
Service meshes help teams manage microservices communication securely and reliably in Kubernetes clusters.
💼 Career
Understanding service mesh basics is important for roles like DevOps engineers, SREs, and cloud-native developers working with Kubernetes.
Progress0 / 4 steps
1
Create a Kubernetes namespace called demo-namespace
Write a kubectl command to create a namespace called demo-namespace.
Kubernetes
Hint
Use kubectl create namespace followed by the namespace name.
2
Label the demo-namespace with istio-injection=enabled
Write a kubectl command to add the label istio-injection=enabled to the namespace demo-namespace.
Kubernetes
Hint
Use kubectl label namespace with the namespace name and label key=value.
3
Deploy a pod with label app: demo-app in demo-namespace
Write a kubectl command to run a pod named demo-pod with image nginx and label app=demo-app in the namespace demo-namespace.
Kubernetes
Hint
Use kubectl run with --image, --restart=Never, --labels, and -n for namespace.
4
Check the pod annotations to verify service mesh sidecar injection
Write a kubectl command to get the pod demo-pod in demo-namespace with its annotations displayed in JSON format.
Kubernetes
Hint
Use kubectl get pod with -o jsonpath to show annotations.
Practice
(1/5)
1. What is the main purpose of a service mesh in Kubernetes?
easy
A. To manage communication between services securely and reliably
B. To store data persistently for applications
C. To schedule pods on nodes
D. To build container images automatically
Solution
Step 1: Understand service mesh role
A service mesh manages how services communicate with each other, focusing on security and reliability.
Step 2: Compare options
Options B, C, and D relate to storage, scheduling, and building images, which are not service mesh functions.
Final Answer:
To manage communication between services securely and reliably -> Option A
Quick Check:
Service mesh = secure, reliable service communication [OK]
Hint: Service mesh controls service communication, not storage or scheduling [OK]
Common Mistakes:
Confusing service mesh with storage or scheduling tools
Thinking service mesh builds container images
Assuming service mesh replaces Kubernetes itself
2. Which component is typically deployed alongside an application pod to enable a service mesh?
easy
A. A sidecar proxy
B. A persistent volume
C. A Kubernetes scheduler
D. A container registry
Solution
Step 1: Identify service mesh architecture
Service meshes use sidecar proxies deployed with app pods to intercept and manage traffic.
Step 2: Eliminate unrelated components
Persistent volumes store data, schedulers assign pods to nodes, and container registries store images, none manage traffic.
Final Answer:
A sidecar proxy -> Option A
Quick Check:
Sidecar proxy = service mesh traffic manager [OK]
Hint: Sidecar proxies run with pods to manage traffic [OK]
Common Mistakes:
Confusing sidecar proxy with storage or scheduling components
Thinking service mesh requires changes inside app code
Assuming container registry is part of service mesh
3. Given a Kubernetes cluster with a service mesh installed, what happens when one service calls another?
medium
A. The call is converted into a database query
B. The call bypasses the sidecar and goes directly to the service
C. The service mesh blocks all calls by default
D. The call is routed through the sidecar proxy which handles retries and security
Solution
Step 1: Understand service mesh traffic flow
Service mesh sidecars intercept calls between services to add features like retries and security.
Step 2: Evaluate options
The call bypasses the sidecar and goes directly to the service is incorrect because calls do not bypass sidecars. The service mesh blocks all calls by default is wrong; calls are allowed with policies. The call is converted into a database query is unrelated.
Final Answer:
The call is routed through the sidecar proxy which handles retries and security -> Option D
Quick Check:
Service calls go through sidecar proxy [OK]
Hint: Service mesh sidecar proxies manage calls with retries and security [OK]
Common Mistakes:
Assuming calls bypass the service mesh
Thinking service mesh blocks all traffic
Confusing service calls with database queries
4. You deployed a service mesh but notice that traffic between services is not being intercepted. What is a likely cause?
medium
A. The pods have no CPU resources assigned
B. The sidecar proxy was not injected into the pods
C. The container images are missing
D. The Kubernetes API server is down
Solution
Step 1: Identify why traffic is not intercepted
Service mesh requires sidecar proxies injected into pods to intercept traffic.
Step 2: Rule out unrelated issues
Kubernetes API server down or missing images cause broader failures, not just traffic interception. CPU limits affect performance but not injection.
Final Answer:
The sidecar proxy was not injected into the pods -> Option B
Quick Check:
Missing sidecar = no traffic interception [OK]
Hint: Check if sidecar proxy is injected in pods [OK]
Common Mistakes:
Blaming Kubernetes API server for traffic interception issues
Ignoring sidecar injection step
Assuming CPU limits block traffic interception
5. You want to add fine-grained traffic control between services in your Kubernetes cluster. How does a service mesh help achieve this?
hard
A. By replacing Kubernetes networking with a custom network plugin
B. By modifying the application source code to handle traffic rules
C. By using sidecar proxies to route, split, and secure traffic without changing app code
D. By storing traffic rules in a database external to the cluster
Solution
Step 1: Understand service mesh traffic control features
Service meshes use sidecar proxies to manage traffic routing, splitting, and security transparently.
Step 2: Evaluate other options
By modifying the application source code to handle traffic rules requires app code changes, which service mesh avoids. By replacing Kubernetes networking with a custom network plugin is about networking plugins, not service mesh. By storing traffic rules in a database external to the cluster is unrelated to traffic control mechanisms.
Final Answer:
By using sidecar proxies to route, split, and secure traffic without changing app code -> Option C
Quick Check:
Sidecar proxies enable traffic control without app changes [OK]
Hint: Service mesh controls traffic via sidecars, no app code changes needed [OK]
Common Mistakes:
Thinking app code must be changed for traffic control
Confusing service mesh with network plugins
Assuming traffic rules are stored externally
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.