{"id":35562,"date":"2023-05-23T06:07:15","date_gmt":"2023-05-23T06:07:15","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=35562"},"modified":"2025-01-23T12:45:18","modified_gmt":"2025-01-23T12:45:18","slug":"node-port-forwarding-concept-in-kubernetes","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/node-port-forwarding-concept-in-kubernetes\/","title":{"rendered":"Node port forwarding Concept in Kubernetes"},"content":{"rendered":"\n<p>In Kubernetes, the concept of &#8220;node port forwarding&#8221; allows you to access a service running on a specific node in your cluster. It enables you to access services or pods that are not directly exposed externally or are running on a specific node for testing or debugging purposes. <\/p>\n\n\n\n<p>Here&#8217;s an explanation of node port forwarding with examples:<\/p>\n\n\n\n<p>1<strong>. Forwarding a local port to a pod:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl port-forward <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">pod-name<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">local-port<\/span>&gt;<\/span>:<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">pod-port<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Example command:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">kubectl<\/span> <span class=\"hljs-selector-tag\">port-forward<\/span> <span class=\"hljs-selector-tag\">my-pod<\/span> 8080<span class=\"hljs-selector-pseudo\">:80<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This command forwards local port 8080 to port 80 of the <code>my-pod<\/code> pod. You can then access the pod&#8217;s service locally using <code>localhost:8080<\/code>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>2.<strong> Forwarding a local port to a service:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl port-forward service\/<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">service-name<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">local-port<\/span>&gt;<\/span>:<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">service-port<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Example command:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">kubectl port-forward service\/my-service 8080:80<\/code><\/span><\/pre>\n\n\n<p>This command forwards local port 8080 to port 80 of the <code>my-service<\/code> service. You can access the service locally using <code>localhost:8080<\/code>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>3. <strong>Forwarding a local port to a specific node:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl port-forward <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">node-name<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">local-port<\/span>&gt;<\/span>:<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">node-port<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Example command:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">kubectl port-forward node\/my-node 8080:80<\/code><\/span><\/pre>\n\n\n<p><\/p>\n\n\n\n<p>This command forwards local port 8080 to port 80 of the <code>my-node<\/code> node. You can access any services or pods running on that node locally using <code>localhost:8080<\/code>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>4. <strong>Forwarding a local port to a pod with address binding:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl port-forward --address <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">address<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">pod-name<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">local-port<\/span>&gt;<\/span>:<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">pod-port<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Example command:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">kubectl<\/span> <span class=\"hljs-selector-tag\">port-forward<\/span> <span class=\"hljs-selector-tag\">--address<\/span> 192<span class=\"hljs-selector-class\">.168<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.100<\/span> <span class=\"hljs-selector-tag\">my-pod<\/span> 8080<span class=\"hljs-selector-pseudo\">:80<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This command forwards local port 8080 to port 80 of the <code>my-pod<\/code> pod, binding it to the IP address <code>192.168.0.100<\/code>. You can then access the pod&#8217;s service using <code>192.168.0.100:8080<\/code>.<\/p>\n\n\n\n<p>5.<strong> Forwarding a local port to a service with address binding:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl port-forward --address <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">address<\/span>&gt;<\/span> service\/<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">service-name<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">local-port<\/span>&gt;<\/span>:<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">service-port<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><\/p>\n\n\n\n<p>Example command:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">kubectl port-forward --address 192.168.0.100 service\/my-service 8080:80<\/code><\/span><\/pre>\n\n\n<p>This command forwards local port 8080 to port 80 of the <code>my-service<\/code> service, binding it to the IP address <code>192.168.0.100<\/code>. You can access the service using <code>192.168.0.100:8080<\/code>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>By specifying the <code>--address<\/code> option followed by the desired IP address, you can bind the port forwarding to that specific address. This can be useful in scenarios where you have multiple network interfaces or want to access the forwarded service or pod using a specific IP.<\/p>\n\n\n\n<p>Please note that the IP address specified must be reachable from the machine where you&#8217;re running the <code>kubectl<\/code> command. Make sure the address is valid and accessible in your network environment.<\/p>\n\n\n\n<p>Remember to replace <code>&lt;address&gt;<\/code>, <code>&lt;pod-name&gt;<\/code>, <code>&lt;service-name&gt;<\/code>, and the port numbers with your actual values when using port forwarding with address binding.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Node port forwarding is particularly useful for accessing services or pods that are not directly exposed externally, such as for debugging or troubleshooting purposes. It allows you to establish a direct connection to a specific node in the cluster and access the desired service or pod. Remember to replace <code>&lt;pod-name&gt;<\/code>, <code>&lt;service-name&gt;<\/code>, or <code>&lt;node-name&gt;<\/code> with the actual names of the pods, services, or nodes you want to forward ports for, and specify the appropriate local port and target port numbers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Kubernetes, the concept of &#8220;node port forwarding&#8221; allows you to access a service running on a specific node in your cluster. It enables you to access services or pods&#8230; <\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4859],"tags":[],"class_list":["post-35562","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=35562"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35562\/revisions"}],"predecessor-version":[{"id":35564,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35562\/revisions\/35564"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=35562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=35562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=35562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}