Kubernetes Port Forward Command: A Comprehensive Guide
Tags: kubernetes, coding, programming, tutorial
Published: 2024-07-01 03:24:37


## Introduction

In this lab, you will learn how to use the Kubernetes `port-forward` command to forward a local port to a port on a pod. You will start with simple examples and gradually progress to more complex scenarios.


## Forwarding a Local Port to a Pod

In this step, you will learn how to forward a local port to a port on a pod.

1. Start by creating a deployment with one replica and an Nginx container:

   ```bash
   kubectl create deployment nginx --image=nginx --replicas=1
   ```

2. Wait for the pod to become ready:

   ```bash
   kubectl wait --for=condition=Ready pod -l app=nginx
   ```

3. Use the `kubectl port-forward` command to forward a local port to the pod:

   ```bash
   kubectl port-forward < pod_name > 19000:80
   ```

   Replace `<pod_name>` with the name of the pod created in step 1, and you can get the `<pod_name>` with the `kubectl get pod -l app=nginx` command.

4. Open a web browser and go to `http://localhost:19000` to view the Nginx welcome page.


## Forwarding Multiple Local Ports to a Pod

In this step, you will learn how to forward multiple local ports to a pod.

1. Use the `kubectl port-forward` command to forward multiple local ports to the pod:

   ```bash
   kubectl port-forward 19443:443 < pod_name > 19080:80
   ```

   Replace `<pod_name>` with the name of the pod created in step 1, and you can get the `<pod_name>` with the `kubectl get pod -l app=nginx` command.

2. Open another terminal and use the ss command at the Linux command line to see if ports 19080 and 19443 are on the host.


## Forwarding a Local Port to a Pod with Multiple Containers

In this step, you will learn how to forward a local port to a specific container in a pod with multiple containers.

1. Create a pod with two containers: Nginx and BusyBox:

   ```bash
   cat << EOF | kubectl apply -f -
   apiVersion: v1
   kind: Pod
   metadata:
     name: nginx-busybox
   spec:
     containers:
     - name: nginx
       image: nginx
     - name: busybox
       image: busybox
       command:
         - sleep
         - "3600"
   EOF
   ```

2. Wait for the pod to become ready:

   ```bash
   kubectl wait --for=condition=Ready pod nginx
   ```

3. Use the `kubectl port-forward` command to forward a local port to the Nginx container:

   ```bash
   kubectl port-forward nginx-busybox 19001:80
   ```

4. Open a web browser and go to `http://localhost:19001` to view the Nginx welcome page.


## Using Port-Forward with Kubernetes Services

In this step, you will learn how to use the `kubectl port-forward` command with Kubernetes services.

1. Create a service for the Nginx deployment:

   ```bash
   kubectl expose deployment nginx --port=80 --type=ClusterIP
   ```

2. Use the `kubectl port-forward` command to forward a local port to the service:

   ```bash
   kubectl port-forward service/nginx 20000:80
   ```

3. Open a web browser and go to `http://localhost:20000` to view the Nginx welcome page.


## Summary

Congratulations, you have successfully completed the Kubernetes port-forward command lab! In this lab, you learned how to forward a local port to a pod, forward multiple local ports to a pod, forward a pod port to a local port, forward a local port to a specific container in a pod with multiple containers, and use the `kubectl port-forward` command with Kubernetes services. These skills are essential for debugging issues in a Kubernetes cluster.

---

## Want to learn more?

- 🚀 Practice [Kubernetes Port Forward Command](https://labex.io/tutorials/kubernetes-kubernetes-port-forward-command-18494)
- 🌳 Learn the latest [Kubernetes Skill Trees](https://labex.io/skilltrees/kubernetes)
- 📖 Read More [Kubernetes Tutorials](https://labex.io/tutorials/category/kubernetes)

Join our [Discord](https://discord.gg/J6k3u69nU6) or tweet us [@WeAreLabEx](https://twitter.com/WeAreLabEx) ! 😄