How to use port forwarding with containers deployed in a Kubernetes cluster

Port forwarding within a Kubernetes cluster is a helpful tool for debugging. Find out how it's done.

How to use port forwarding with containers deployed in a Kubernetes cluster

Port forwarding is a very handy tool that can help you debug various applications and deployments within your Kubernetes cluster. For example, you might have one specific pod that is misbehaving, so you need to connect to it directly. Because this is a microservice environment, you can (with the help of port forwarding) talk to a back-end service you wouldn't otherwise expose.

How do you do that? 

It's actually pretty simple. Let me show you.

SEE: How to become a network administrator: A cheat sheet (TechRepublic)

What you'll need

In order to pull this off, you'll need a Kubernetes cluster up and running. If you're not sure how to do that, read my tutorial: How to deploy a Kubernetes cluster on Ubuntu server

How to deploy the pod

The first thing we're going to do is deploy an NGINX pod. Do this with the command:

kubectl run web-pod --image=nginx --port=80 --generator=run-pod/v1

This will deploy a pod, named web-pod, using the NGINX image on port 80.

To make sure the pod has been successfully deployed, issue the command:

kubectl get pods

You should see web-pod listed (Figure A).

Figure A


Our new pod has been deployed.

Get the detailed information about the pod with the command:

kubectl describe pods web-pod

You should see more information about the pod than you probably need (Figure B).

Figure B


The details for our new pod.

How to configure port forwarding for the pod

It's now time to configure port forwarding for our newly-deployed NGINX pod. This is done using the port-forward option of the kubectl command like so:

kubectl port-forward web-pod 8080:80

You should then see that forwarding is working (Figure C).

Leave that session as is.

Figure C


Port forwarding in action for our NGINX pod.

To test the port forwarding, access a new session within your deployed container and use the curl command to test the forwarding like so:


You should see the NGINX welcome page print out and the original terminal window indicating that forwarding is in action (Figure D).

Figure D


Port forwarding is working with our NGINX container.

That's it. You've set up port forwarding for a Kubernetes pod. With this technique, you can debug deployments by accessing ports you wouldn't normally expose. From here you can build on this fundamental technique for tasks like database, application, or network debugging within your container deployments.

Also see


Image: Jack Wallen

By Jack Wallen

Jack Wallen is an award-winning writer for TechRepublic, The New Stack, and Linux New Media. He's covered a variety of topics for over twenty years and is an avid promoter of open source. For more news about Jack Wallen, visit his website jackwallen....