📖 Scenario: You have a Kubernetes cluster running a web application inside a pod. You want to access this application from your local computer without exposing it publicly.
🎯 Goal: Learn how to use kubectl port-forward to connect your local machine to a pod's port inside the Kubernetes cluster.
📋 What You'll Learn
A running Kubernetes cluster with a pod named exactly webapp-pod
The pod webapp-pod must have a container listening on port 8080
kubectl installed and configured to access the cluster
💡 Why This Matters
🌍 Real World
Port forwarding is useful when you want to securely access an application running inside a Kubernetes cluster without exposing it publicly. It helps developers test and debug applications locally.
💼 Career
Understanding port forwarding is important for Kubernetes administrators and developers to troubleshoot and access cluster resources safely during development and maintenance.
Progress0 / 4 steps
1
Identify the pod to forward ports
Use kubectl get pods to list all pods and confirm the pod named webapp-pod is running.
Kubernetes
Hint
This command shows all pods in the current namespace. Look for webapp-pod in the list.
2
Set the local port number for forwarding
Create a shell variable called LOCAL_PORT and set it to 9090 to use as the local port for forwarding.
Kubernetes
Hint
Use LOCAL_PORT=9090 to assign the port number.
3
Run kubectl port-forward command
Use kubectl port-forward to forward local port $LOCAL_PORT to port 8080 on the pod named webapp-pod. Use the syntax: kubectl port-forward pod/webapp-pod $LOCAL_PORT:8080
Kubernetes
Hint
This command connects your local port 9090 to the pod's port 8080.
4
Verify local access to the application
Open a new terminal or tab and run curl http://localhost:$LOCAL_PORT to check if the application is reachable locally through the forwarded port.
Kubernetes
Hint
This command sends a request to your local port 9090, which is forwarded to the pod.
Practice
(1/5)
1. What is the main purpose of kubectl port-forward in Kubernetes?
easy
A. To connect your local machine to a pod or service port inside the cluster
B. To expose a pod to the internet permanently
C. To create a new Kubernetes service
D. To delete a pod from the cluster
Solution
Step 1: Understand the function of port-forward
kubectl port-forward creates a temporary tunnel from your local machine to a pod or service port inside the Kubernetes cluster.
Step 2: Compare other options
Exposing pods permanently or creating/deleting resources are different commands and purposes.
Final Answer:
To connect your local machine to a pod or service port inside the cluster -> Option A
Quick Check:
Port-forward = local to pod/service connection [OK]
Hint: Port-forward = local access to pod/service port [OK]
Common Mistakes:
Thinking port-forward exposes pods publicly
Confusing port-forward with service creation
Assuming it deletes pods
2. Which of the following is the correct syntax to forward local port 8080 to port 80 of a pod named my-pod?
easy
A. kubectl port-forward my-pod 80:8080
B. kubectl port-forward pod/my-pod 80:8080
C. kubectl port-forward my-pod 8080
D. kubectl port-forward pod/my-pod 8080:80
Solution
Step 1: Understand port-forward syntax
The syntax is kubectl port-forward [resource-type/resource-name] localPort:remotePort. So to forward local 8080 to pod port 80, use 8080:80.
Step 2: Identify correct resource format
Pod resource must be specified as pod/my-pod for clarity and correctness.
Final Answer:
kubectl port-forward pod/my-pod 8080:80 -> Option D
Hint: Use pod/name and localPort:remotePort format [OK]
Common Mistakes:
Reversing port numbers (remote:local instead of local:remote)
Omitting 'pod/' prefix
Swapping ports in the command
3. Given the command kubectl port-forward svc/my-service 9090:80, what will happen when you open http://localhost:9090 in your browser?
medium
A. You will access the pod's port 9090 directly
B. You will access the service's port 80 through local port 9090
C. You will get a connection refused error
D. The command will fail because services cannot be port-forwarded
Solution
Step 1: Understand port-forward to service
The command forwards local port 9090 to port 80 of the service my-service. So accessing localhost:9090 connects to service port 80.
Step 2: Confirm service port-forward support
Kubectl supports port-forwarding to services, so the command works and forwards traffic correctly.
Final Answer:
You will access the service's port 80 through local port 9090 -> Option B
Quick Check:
Port-forward svc port works = access via local port [OK]
Hint: Local port maps to service port, access via localhost:localPort [OK]
Common Mistakes:
Thinking services cannot be port-forwarded
Confusing local and remote ports
Expecting pod port 9090 instead of service port 80
4. You run kubectl port-forward pod/my-pod 8080:80 but get the error: error: unable to forward port because pod is not running. What is the most likely cause?
medium
A. The pod my-pod is not in Running state
B. You used the wrong port numbers
C. Port-forward does not work with pods
D. You need to specify the namespace explicitly
Solution
Step 1: Analyze error message
The error says the pod is not running, so port-forward cannot connect to it.
Step 2: Check pod state requirement
Port-forward requires the pod to be in Running state to forward ports successfully.
Final Answer:
The pod my-pod is not in Running state -> Option A
Quick Check:
Pod must be Running for port-forward [OK]
Hint: Pod must be Running to port-forward [OK]
Common Mistakes:
Assuming port numbers cause this error
Thinking port-forward doesn't work with pods
Ignoring pod status before port-forward
5. You want to access two different pods pod-a and pod-b running on ports 8080 and 9090 respectively, on your local machine at ports 3000 and 4000 simultaneously. Which commands should you run?
hard
A. kubectl port-forward pod/pod-a 3000:8080; kubectl port-forward pod/pod-b 4000:9090
B. kubectl port-forward pod/pod-a 8080:3000 & kubectl port-forward pod/pod-b 9090:4000
C. kubectl port-forward pod/pod-a 3000:8080 & kubectl port-forward pod/pod-b 4000:9090
D. kubectl port-forward pod/pod-a 3000:8080 pod/pod-b 4000:9090
Solution
Step 1: Understand port-forward syntax and concurrency
Each port-forward command forwards one pod port to a local port. To run two simultaneously, run two commands in parallel using & or separate terminals.
Step 2: Verify port mappings
Local port 3000 maps to pod-a's 8080, and local 4000 maps to pod-b's 9090. The syntax is localPort:remotePort.
Step 3: Check command correctness
kubectl port-forward pod/pod-a 3000:8080 & kubectl port-forward pod/pod-b 4000:9090 correctly runs two commands in background with correct port mappings. kubectl port-forward pod/pod-a 3000:8080; kubectl port-forward pod/pod-b 4000:9090 runs sequentially, blocking second command.