{"id":5448,"date":"2026-04-27T14:00:00","date_gmt":"2026-04-27T05:00:00","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=5448"},"modified":"2026-04-27T13:57:20","modified_gmt":"2026-04-27T04:57:20","slug":"kubernetes-docker-desktop-mutinodes","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2026\/04\/27\/kubernetes-docker-desktop-mutinodes\/","title":{"rendered":"[Kubernetes]Docker Desktop+Mutinodes (3 nodes)[MacOS]"},"content":{"rendered":"\n<p>\ud83d\udc49\ud83c\udffb \ub3c4\ucee4 \ub370\uc2a4\ud06c\ud0d1\uc5d0\uc11c \ucfe0\ubc84\ub124\ud2f0\uc2a4\ub97c \uc774\uc6a9\ud574\uc11c \uba40\ud2f0 \ub178\ub4dc\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<br>This is an explanation of how to implement multi-nodes using Kubernetes on Docker Desktop.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \uc804\uccb4 \ub178\ub4dc\ub294 \ucee8\ud2b8\ub864 \ud50c\ub808\uc778+\uc6cc\ucee4\ub178\ub4dc2\uac1c\ub85c \uad6c\uc131\ud569\ub2c8\ub2e4.<br>The entire node consists of a control plane + 2 worker nodes.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ud14c\uc2a4\ud2b8 \ud658\uacbd \/ test environment<\/p>\n\n\n\n<p>\u2714\ufe0f \ub7a8\uc774 8\uae30\uac00 \uc774\uc0c1\uc778 \ud658\uacbd\uc5d0\uc11c \ud074\ub7ec\uc2a4\ud130\ub97c \uad6c\uc131\ud558\uae30\ub97c \ucd94\ucc9c\ud569\ub2c8\ub2e4.<br>We recommend configuring the cluster in an environment with 8GB or more of RAM.<\/p>\n\n\n\n<p>\u2714\ufe0f MacOS ,M3, RAM 16GB<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ucfe0\ubc84\ub124\ud2f0\uc2a4 \uba40\ud2f0 \ub178\ub4dc \ud074\ub7ec\uc2a4\ud130\ub97c \uc124\uce58\ud569\ub2c8\ub2e4. <br>Install a Kubernetes multi-node cluster.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"901\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-1024x901.jpg\" alt=\"\" class=\"wp-image-5450\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-1024x901.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-300x264.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-768x676.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-400x352.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg-800x704.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/1.createCluster-jpg.jpg 1450w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131 \/ Create Cluster<\/figcaption><\/figure>\n\n\n\n<p>\u2714\ufe0f kind\ub97c \uc120\ud0dd\ud558\uace0 Node\ub97c 3\uac1c \uc120\ud0dd\ud569\ub2c8\ub2e4.<br>Select kind and select 3 nodes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"936\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-1024x936.png\" alt=\"\" class=\"wp-image-5453\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-1024x936.png 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-300x274.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-768x702.png 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-400x366.png 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg-800x731.png 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/2.kind-jpg.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u2714\ufe0f Create\ubc84\ud2bc\uc744 \ud074\ub9ad\ud574\uc11c \ud074\ub7ec\uc2a4\ud130\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<br>Click the Create button to create a cluster.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"941\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-1024x941.jpg\" alt=\"\" class=\"wp-image-5455\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-1024x941.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-300x276.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-768x705.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-400x367.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg-800x735.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/3.kind-2-jpg.jpg 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\ucfe0\ubc84\ub124\ud2f0\uc2a4 \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131 \/ Create Kubernetes Cluster<\/figcaption><\/figure>\n\n\n\n<p>\u2714\ufe0f \ucfe0\ubc84\ub124\ud2f0\uc2a4 \ud074\ub7ec\uc2a4\ud130 \uc124\uce58 \/ Kubernetees Cluster Installation<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"494\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-1024x494.jpg\" alt=\"\" class=\"wp-image-5459\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-1024x494.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-300x145.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-768x370.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-400x193.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg-800x386.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4.kube-install-jpg.jpg 1120w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Kubernetees Cluster Installation<\/figcaption><\/figure>\n\n\n\n<p>\u2714\ufe0f \uc124\uce58 \uc911 \/ installing<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"825\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-1024x825.png\" alt=\"\" class=\"wp-image-5463\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-1024x825.png 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-300x242.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-768x619.png 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-400x322.png 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing-800x645.png 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/4-2-installing.png 1184w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u2714\ufe0f \ud074\ub7ec\uc2a4\ud130 \uc14b\ud305 \uc644\ub8cc \/ Cluster setup complete<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-1024x314.png\" alt=\"\" class=\"wp-image-5461\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-1024x314.png 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-300x92.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-768x235.png 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-1536x471.png 1536w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-1870x573.png 1870w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-400x123.png 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg-800x245.png 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/5.cluster-active-jpg.png 1944w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u2714\ufe0f \ub178\ub4dc \ud655\uc778 \/ Check node status<\/p>\n\n\n\n<p>&#8212; \uc544\ub798 \uadf8\ub9bc\uc740 \ub3c4\ucee4\ub370\uc2a4\ud06c\ud0d1\uc5d0\uc11c \ud655\uc778\ud55c \ub0b4\uc6a9\uc785\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc5d0\uc11c\ub294 \uc544\ub798\uc640 \uac19\uc774 \ud655\uc778 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br>The image below shows the results verified in Docker Desktop. In the terminal, you can verify it as follows.<\/p>\n\n\n\n<p>&#8212; \ud074\ub7ec\uc2a4\ud130 \ubc84\uc804\uc740 1.35.1\uc774\uace0 \ub0b4\ubd80 \uc544\uc774\ud53c\ub294 172.18.0.2 ~ 172.18.0.4\ubc88\uae4c\uc9c0 \ubd80\uc5ec\ub41c\uac83\uc744 \ud655\uc778 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br>You can confirm that the cluster version is 1.35.1 and internal IPs from 172.18.0.2 to 172.18.0.4 have been assigned.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % <strong>kubectl get nodes -o wide<\/strong>\n\nNAME                    STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                       KERNEL-VERSION     CONTAINER-RUNTIME\n<strong>desktop-control-plane   Ready<\/strong>    control-plane   10m   <strong>v1.35.1<\/strong>   <strong>172.18.0.3 <\/strong>   &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1\n<strong>desktop-worker          Ready <\/strong>   &lt;none&gt;          10m   <strong>v1.35.1<\/strong>   <strong>172.18.0.2<\/strong>    &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1\n<strong>desktop-worker2         Ready <\/strong>   &lt;none&gt;          10m   <strong>v1.35.1<\/strong>   <strong>172.18.0.4<\/strong>    &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1<\/code><\/pre>\n\n\n\n<p>&#8212; \ub3c4\ucee4 \ub370\uc2a4\ud06c\ud0d1\uc5d0\uc11c \ub178\ub4dc \uc0c1\ud0dc \ud655\uc778\ud55c \uacbd\uc6b0<br>If you checked the node status in Docker Desktop<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"792\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes.png\" alt=\"\" class=\"wp-image-5466\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes.png 994w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes-300x239.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes-768x612.png 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes-400x319.png 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/6-nodes-800x637.png 800w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/figure>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \uc5ec\uae30\uae4c\uc9c0 \ud558\uba74 \ud074\ub7ec\uc2a4\ud130  \uc124\uce58\uac00 \ub05d\ub0a9\ub2c8\ub2e4.<br>Once you get to this point, the cluster installation is complete.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ucfe0\ubc84\ub124\ud2f0\uc2a4\uc5d0 Nginx\ub97c \uc124\uce58\ud574 \ubd05\ub2c8\ub2e4.<br>Let&#8217;s try installing Nginx on Kubernetes.<\/p>\n\n\n\n<p>\u2714\ufe0f deployment \uc0dd\uc131 \/ Create deployment<\/p>\n\n\n\n<p>&#8212; deployment\ub97c \uc0dd\uc131\ud558\uba74 pod\uc774 \ud568\uaed8 \uc0dd\uc131\ub429\ub2c8\ub2e4.<br>When you create a deployment, a pod is created along with it.<\/p>\n\n\n\n<p>&#8212; deployment\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.\uc774\ub984\uc740 my-app\uc774\uace0 image=nginx\uc785\ub2c8\ub2e4.<br>Create a deployment. The name is my-app and image=nginx.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % <strong>kubectl create deployment my-app --image=nginx<\/strong>\ndeployment.apps\/my-app created<\/code><\/pre>\n\n\n\n<p>&#8212; deployment\ub97c \ud655\uc778\ud558\uba74 \ub2e4\uc74c\ucc98\ub7fc \ub098\uc624\uba74 \uc815\uc0c1\uc785\ub2c8\ub2e4.<br>If you check the deployment and it appears as follows, it is normal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % <strong>kubectl get deployment<\/strong>\nNAME     READY   UP-TO-DATE   AVAILABLE   AGE\nmy-app   1\/1     1            1           4m2s<\/code><\/pre>\n\n\n\n<p>&#8212; \uadf8\ub7f0\ub370 \uc544\ub798\ucc98\ub7fc deployment\uc640 pod\uc744 \ud655\uc778\ud558\uba74 &#8220;READE 0\/1&#8221;, &#8220;ImagePullBackOff&#8221;\ub85c\ud655\uc778\ub418\ub294 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<br>However, if you check the deployment and pod as shown below, there are cases where they are confirmed as &#8220;READE 0\/1&#8221; and &#8220;ImagePullBackOff&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl get deployment\nNAME     READY   UP-TO-DATE   AVAILABLE   AGE\nmy-app  <strong> 0\/1 <\/strong>    1            0           19s\nMacBookAir ~ % kubectl get pods      \nNAME                     READY   STATUS             RESTARTS   AGE\nmy-app-64b78bfff-7v7rc   0\/1     <strong>ImagePullBackOff<\/strong>   0          23s<\/code><\/pre>\n\n\n\n<p>&#8212; \uc704\uc758 \uacbd\uc6b0\uac00 \ubc1c\uc0dd\ud558\uba74 rollout restart\ub85c pod\uc744 \ud558\ub098\uc529 \uc0c8\ub85c \ub9cc\ub4e4\uace0 \uad50\uccb4\ud569\ub2c8\ub2e4.<br>If the above case occurs, create new pods one by one and replace them using a rollout restart.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl rollout restart deployment my-app<\/code><\/pre>\n\n\n\n<p>\u2b50\ufe0f pod\uc0c1\uc81c\uc815\ubcf4 \ubcf4\uae30 \/ View Pod Information<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl describe pod my-app-64b78bfff-7v7rc<\/code><\/pre>\n\n\n\n<p>&#8212; \ub2e4\uc2dc deployment\uc815\ubcf4\ub97c \ud655\uc778\ud558\uba74 \uc544\ub798\ucc98\ub7fc \ub098\uc635\ub2c8\ub2e4.<br>If you check the deployment information again, it appears as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % <strong>kubectl get deployment<\/strong>\nNAME     READY   UP-TO-DATE   AVAILABLE   AGE\nmy-app   1\/1     1            1           4m2s<\/code><\/pre>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb deployment\ub97c \uc678\ubd80\uc5d0 \ub178\ucd9c \ud558\ub3c4\ub85d \uc11c\ube44\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<br>Create a service to expose the deployment externally.<\/p>\n\n\n\n<p>&#8212; \uc11c\ube44\uc2a4\uc758 \uc885\ub958\ub97c NodePort\ub85c \uc124\uc815\ud558\uace0 \uc11c\ube44\uc2a4\ud3ec\ud2b8\ub294 80\ubc88\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.<br>Set the service type to NodePort and the service port to 80.<\/p>\n\n\n\n<p>&#8212; \ubaa8\ub4e0 \uc6cc\ucee4 \ub178\ub4dc\uc758 \ud2b9\uc815 \ud3ec\ud2b8(\uc608: 31515)\ub97c \uac1c\ubc29\ud558\uc5ec,&nbsp;<strong>&#8220;\ub178\ub4dc IP:\ud3ec\ud2b8&#8221;<\/strong>&nbsp;\uc8fc\uc18c\ub85c \uc811\uc18d\ud558\uba74 \ud574\ub2f9 Pod\ub85c \uc5f0\uacb0\ud574 \uc90d\ub2c8\ub2e4.<br>By opening a specific port (e.g., 31515) on all worker nodes, connecting to the corresponding Pod via the &#8220;node IP:port&#8221; address will connect you.<\/p>\n\n\n\n<p>&#8212; \ucfe0\ubc84\ub124\ud2f0\uc2a4\ub294 \ubcf4\ud1b5&nbsp;<code>30000~32767<\/code>&nbsp;\uc0ac\uc774\uc758 \ud3ec\ud2b8 \uc911 \ud558\ub098\ub97c \ubb34\uc791\uc704\ub85c \ud560\ub2f9\ud569\ub2c8\ub2e4.<br>Kubernetes usually assigns one of the ports between 30000 and 32767 randomly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl expose deployment my-app --type=NodePort --port=80<\/code><\/pre>\n\n\n\n<p>&#8212; \uc11c\ube44\uc2a4\uac00 \uc81c\ub300\ub85c \uc0dd\uc131\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<br>Check if the service was created properly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl get svc\nNAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE\nkubernetes   ClusterIP   10.96.0.1       &lt;none&gt;        443\/TCP        9m\nmy-app       NodePort    10.96.177.193   &lt;none&gt;        80:<strong>31515<\/strong>\/TCP   37s<\/code><\/pre>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \uc6cc\ud06c \ub0b4\ubd80\uc5d0\uc11c nginx\uc811\uc18d\ud14c\uc2a4\ud2b8 \/ Nginx connection test inside the workspace<\/p>\n\n\n\n<p>&#8212; \uc6cc\ucee4 \ub178\ub4dc\uc5d0 \uc811\uc18d\ud558\uae30 \/ Connect to the worker node<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-MacBookAir ~ % docker exec -it desktop-worker bash<\/code><\/pre>\n\n\n\n<p>&#8212; \uc6cc\ucee4 \ub178\ub4dc2\uc5d0 \uc811\uc18d\ud558\uae30 \/ Connect to Worker Node 2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-MacBookAir ~ % docker exec -it desktop-worker2 bash<\/code><\/pre>\n\n\n\n<p>&#8212; \uc6cc\ucee4 \ub178\ub4dc \ub0b4\ubd80\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud558\uae30(curl localhost:31515 \ub610\ub294 curl 172.18.0.2:31515)<br>Testing inside a worker node (curl localhost:31515 or curl 172.18.0.2:31515)<\/p>\n\n\n\n<p>&#8212; \uc6cc\ucee4\ub178\ub4dc2 \ub0b4\ubd80\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ud560 \uacbd\uc6b0 \uc544\uc774\ud53c \uc8fc\uc18c\ub294 curl 172.18.0.4:31515 \uc785\ub2c8\ub2e4.<br>When testing inside Worker Node 2, the IP address is curl 172.18.0.4:31515.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@desktop-worker:\/# <strong>curl localhost:31515<\/strong>\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;title&gt;Welcome to nginx!&lt;\/title&gt;\n&lt;style&gt;\nhtml { color-scheme: light dark; }\nbody { width: 35em; margin: 0 auto;\nfont-family: Tahoma, Verdana, Arial, sans-serif; }\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;h1&gt;Welcome to nginx!&lt;\/h1&gt;\n&lt;p&gt;If you see this page, nginx is successfully installed and working.\nFurther configuration is required for the web server, reverse proxy, \nAPI gateway, load balancer, content cache, or other features.&lt;\/p&gt;\n\n&lt;p&gt;For online documentation and support please refer to\n&lt;a href=\"https:\/\/nginx.org\/\"&gt;nginx.org&lt;\/a&gt;.&lt;br\/&gt;\nTo engage with the community please visit\n&lt;a href=\"https:\/\/community.nginx.org\/\"&gt;community.nginx.org&lt;\/a&gt;.&lt;br\/&gt;\nFor enterprise grade support, professional services, additional \nsecurity features and capabilities please refer to\n&lt;a href=\"https:\/\/f5.com\/nginx\"&gt;f5.com\/nginx&lt;\/a&gt;.&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;Thank you for using nginx.&lt;\/em&gt;&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\nroot@desktop-worker:\/# <strong>exit<\/strong>\nexit<\/code><\/pre>\n\n\n\n<p>&#8212; \ub178\ub4dc \uc544\uc774\ud53c \uc8fc\uc18c \ud655\uc778 \ud558\uae30 \/ Checking Node IP Address<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl get nodes -o wide\n\nNAME                    STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                       KERNEL-VERSION     CONTAINER-RUNTIME\ndesktop-control-plane   Ready    control-plane   10m   v1.35.1   172.18.0.3    &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1\ndesktop-worker          Ready    &lt;none&gt;          10m   v1.35.1   <strong>172.18.0.2 <\/strong>   &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1\ndesktop-worker2         Ready    &lt;none&gt;          10m   v1.35.1   172.18.0.4    &lt;none&gt;        Debian GNU\/Linux 13 (trixie)   6.12.69-linuxkit   containerd:\/\/2.2.1<\/code><\/pre>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb\ube0c\ub77c\uc6b0\uc800 \uc811\uc18d\ud558\uae30 \/ Access browser<\/p>\n\n\n\n<p>&#8212; \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c 8080\ubc88\uc73c\ub85c \uc811\uc18d\ud560\ub54c my-app\uc758 80\ubc88\uc11c\ube44\uc2a4\uc5d0 \uc811\uc18d\uc124\uc815<br>Connection settings for the 80-service in my-app when accessing 8080 from the browser<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl port-forward svc\/my-app 8080:80\n\nForwarding from 127.0.0.1:8080 -&gt; 80\nForwarding from &#91;::1]:8080 -&gt; 80\nHandling connection for 8080<\/code><\/pre>\n\n\n\n<p>&#8212; \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc811\uc18d\ud558\uae30 \/ Access from browser<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-1024x529.png\" alt=\"\" class=\"wp-image-5470\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-1024x529.png 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-300x155.png 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-768x396.png 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-400x206.png 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_-800x413.png 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/7.nginx_.png 1364w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ud074\ub7ec\uc2a4\ud130 \uc14b\ud305 \uc0ad\uc81c \/ Delete cluster settings<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MacBookAir ~ % kubectl delete service my-app\nMacBookAir ~ % kubectl delete deployment my-app<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49\ud83c\udffb \ub3c4\ucee4 \ub370\uc2a4\ud06c\ud0d1\uc5d0\uc11c \ucfe0\ubc84\ub124\ud2f0\uc2a4\ub97c \uc774\uc6a9\ud574\uc11c \uba40\ud2f0 \ub178\ub4dc\ub97c \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.This is an explanation of how to implement multi-nodes using Kubernetes on Docker Desktop. \ud83d\udc49\ud83c\udffb \uc804\uccb4 \ub178\ub4dc\ub294 \ucee8\ud2b8\ub864 \ud50c\ub808\uc778+\uc6cc\ucee4\ub178\ub4dc2\uac1c\ub85c \uad6c\uc131\ud569\ub2c8\ub2e4.The entire node consists of a control plane + 2 worker nodes. \ud83d\udc49\ud83c\udffb \ud14c\uc2a4\ud2b8 \ud658\uacbd \/ test environment \u2714\ufe0f \ub7a8\uc774 8\uae30\uac00 \uc774\uc0c1\uc778 \ud658\uacbd\uc5d0\uc11c \ud074\ub7ec\uc2a4\ud130\ub97c \uad6c\uc131\ud558\uae30\ub97c \ucd94\ucc9c\ud569\ub2c8\ub2e4.We [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,1],"tags":[],"class_list":["post-5448","post","type-post","status-publish","format-standard","hentry","category-kubernetes","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=5448"}],"version-history":[{"count":16,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5448\/revisions"}],"predecessor-version":[{"id":5473,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5448\/revisions\/5473"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=5448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=5448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=5448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}