{"id":53,"date":"2026-05-08T12:23:06","date_gmt":"2026-05-08T03:23:06","guid":{"rendered":"https:\/\/it-blog.kr\/?p=53"},"modified":"2026-06-09T19:30:11","modified_gmt":"2026-06-09T10:30:11","slug":"kubernetes","status":"publish","type":"post","link":"https:\/\/it-blog.kr\/?p=53","title":{"rendered":"Kubernetes"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/kubernetes.io\/ko\/docs\/concepts\/overview\/\">\ucfe0\ubc84\ub124\ud2f0\uc2a4\ub780 \ubb34\uc5c7\uc778\uac00? | Kubernetes<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kubernetes (K8s)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes(K8s)\ub294 container\ud654\ub41c application\uc758 \ubc30\ud3ec(deploy), \ud655\uc7a5(scale), \uc6b4\uc601(operate)\uc744 \uc790\ub3d9\ud654\ud558\ub294 \uc624\ud508\uc18c\uc2a4 container orchestration platform.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes\ub77c\ub294 \uba85\uce6d\uc740 \ud0a4\uc7a1\uc774(Helmsman) \ub610\ub294 \ud30c\uc77c\ub7ff(Pilot)\uc744 \ub73b\ud558\ub294 \uadf8\ub9ac\uc2a4\uc5b4\uc5d0\uc11c \uc720\ub798\ub428.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes\ub294 Google\uc774 \ub0b4\ubd80\uc5d0\uc11c 15\ub144 \uc774\uc0c1 \uc0ac\uc6a9\ud55c \uc2dc\uc2a4\ud15c\uc778 Borg(\ubcf4\uadf8)\uc758 \ub178\ud558\uc6b0\ub97c \uae30\ubc18\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc9d0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Google\uc774 2014\ub144\uc5d0 kubernetes project\ub97c \uc624\ud508\uc18c\uc2a4\ud654 \ud558\uc600\uc73c\uba70, \ud604\uc7ac\ub294 CNCF(Cloud Native Computing Foundation)\uac00 \uad00\ub9ac\ud558\uace0 \uc788\uc74c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc989 kubernetes\ub294 \ub2e8\uc21c\ud788 \uc0c8\ub85c \ub9cc\ub4e0\uac8c \uc544\ub2c8\ub77c Google\uc774 \uc2e4\uc804\uc5d0\uc11c \uac80\uc99d\ud55c \uc2dc\uc2a4\ud15c\uc744 \uc138\uc0c1\uc5d0 \uacf5\uac1c\ud55c \uac83\uc784.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">K8s?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kubernetes\uc5d0\uc11c \uccab\uae00\uc790 K\uc640 \ub9c8\uc9c0\ub9c9\uae00\uc790 s \uc0ac\uc774\uc5d0 \uae00\uc790\uac00 8\uac1c \uc788\uae30 \ub54c\ubb38.<\/li>\n\n\n\n<li>\uc774\ub7ec\ud55c \ubc29\uc2dd\uc744 Numeronym(\ub274\uba38\ub2d8) \uc774\ub77c\uace0 \ubd80\ub984.\n<ul class=\"wp-block-list\">\n<li>Numeronym\uc758 \uc608\uc2dc\n<ul class=\"wp-block-list\">\n<li>i18n: internationalization<\/li>\n\n\n\n<li>l10n: localization<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">K8s \ud544\uc694 \uc774\uc720<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Application\uc744 container\ub85c \uc2e4\ud589\ud558\ub294 \ubc29\uc2dd\uc774 \ubcf4\ud3b8\ud654\ub418\uba74\uc11c, container\uac00 \ud558\ub098, \ub458\uc774 \uc544\ub2c8\ub77c \uc218\ubc31, \uc218\ucc9c\uac1c\ub85c \ub298\uc5b4\ub098\uae30 \uc2dc\uc791\ud568. \uadf8 \ub9ce\uc740 container\ub4e4\uc744 \uc5b4\ub5bb\uac8c \uad00\ub9ac\ud574\uc57c \ud560\uc9c0 \ubb38\uc81c\uac00 \uc0dd\uae40.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">container\uac00 \ub9ce\uc544\uc9c8\uc218\ub85d \uad00\ub9ac\uc758 \ubcf5\uc7a1\ub3c4\uac00 \ud3ed\ubc1c\uc801\uc73c\ub85c \uc99d\uac00\ud558\uae30 \ub54c\ubb38\uc5d0, \uc774\ub97c \uc790\ub3d9\ud654\ud558\uace0 \uc548\uc815\uc801\uc73c\ub85c \uc6b4\uc601\ud558\uae30 \uc704\ud558\uc5ec kubernetes\uac00 \ud544\uc694\ud568.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Container\ub9cc\uc73c\ub85c\ub294 \ubd80\uc871\ud55c \uac83\ub4e4<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>\ubb38\uc81c<\/td><td>\uc124\uba85<\/td><\/tr><tr><td>\uc790\uac00 \ubcf5\uad6c (self-healing)<\/td><td>Container\uac00 down\ub420 \uc2dc \ub204\uac00 \ub2e4\uc2dc \uc0b4\ub9ac\ub098?<\/td><\/tr><tr><td>\ud655\uc7a5 (scaling)<\/td><td>Traffic\uc774 \ubab0\ub9ac\uba74 \ub204\uac00 container\ub97c \ub298\ub9ac\ub098?<\/td><\/tr><tr><td>\ubc30\ud3ec (deployment)<\/td><td>\uc0c8 \ubc84\uc804\uc744 \ubb34\uc911\ub2e8\uc73c\ub85c \uc5b4\ub5bb\uac8c \ubc30\ud3ec\ud558\ub098?<\/td><\/tr><tr><td>\ubd80\ud558 \ubd84\uc0b0 (load-balancing)<\/td><td>\uc694\uccad\uc744 \uc5ec\ub7ec \ucee8\ud14c\uc774\ub108\uc5d0 \uc5b4\ub5bb\uac8c \ubd84\uc0b0\ud558\ub098?<\/td><\/tr><tr><td>\uc124\uc815 \uad00\ub9ac (configuration management)<\/td><td>\ud658\uacbd \ubcc0\uc218, secret\uc744 \uc5b4\ub5bb\uac8c \uc548\uc804\ud558\uac8c \uad00\ub9ac\ud558\ub098?<\/td><\/tr><tr><td>\uc2a4\ucf00\uc904\ub9c1 (scheduling)<\/td><td>\uc5b4\ub5a4 node\uc5d0 container\ub97c \ubc30\uce58\ud560\uc9c0 \ub204\uac00 \uacb0\uc815\ud558\ub098?<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubaa8\ub4e0 \uac83\uc744 \uc0ac\ub78c\uc774 \uc218\ub3d9\uc73c\ub85c \ud558\uba74 \uc2e4\uc218\uac00 \uc0dd\uae30\uace0(human error), \uaddc\ubaa8\uac00 \ucee4\uc9c8\uc218\ub85d \ubd88\uac00\ub2a5\uc5d0 \uac00\uae4c\uc6cc\uc9d0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">K8s\uac00 \ud574\uacb0\ud558\ub294 \uac83<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">K8s\ub294 \uc704 \ubb38\uc81c\ub4e4\uc744 \uc120\uc5b8\uc801 \ubc29\uc2dd(Declarative Approach)\uc73c\ub85c \ud574\uacb0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubc1c\uc790\ub294 \uc6d0\ud558\ub294 \uc0c1\ud0dc(Desired State)\ub9cc \uc120\uc5b8\ud558\uace0, K8s\uac00 \ud604\uc7ac \uc0c1\ud0dc(Current State)\ub97c \uc6d0\ud558\ub294 \uc0c1\ud0dc\ub85c \uc790\ub3d9\uc73c\ub85c \ub9de\ucdb0\uc90c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc2dc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>replicas: 3    # container 3\uac1c\ub97c \ud56d\uc0c1 \uc720\uc9c0.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">=&gt; container \ud558\ub098\uac00 down\ub418\uba74 k8s\uac00 \uc790\ub3d9\uc73c\ub85c \uc0c8\ub85c\uc6b4 container\ub97c \ub744\uc6c0.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">K8s \ubc84\uc804 \uad00\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">*\uc5ec\uae30\uc5d0 \uc791\uc131\ud560 \uac83: k8s\ub97c \uc0ac\uc6a9\ud558\uba74 \ubb34\uc911\ub2e8 \uc11c\ube44\uc2a4\ub97c \uad6c\ud604\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 development, production\uc744 \ubd84\ub9ac\ud560 \uc218\uac00 \uc788\ub2e4. \ud558\uc9c0\ub9cc, k8s \uc790\uccb4\uc758 \ubc84\uc804\uc774 \uc62c\ub77c\uac14\uc744 \ub54c, \uc5b4\ub5bb\uac8c \uc11c\ube44\uc2a4\ub97c \uc720\uc9c0\ud558\uba74\uc11c \uc774\ub97c \uc5c5\ub370\uc774\ud2b8 \ud560\uc218\uc788\ub294\uac00? \uc5d0 \ub300\ud55c \uac83\uc744 \uacf5\ubd80\ud558\uace0, \uc815\ub9ac\ud558\ub3c4\ub85d \ud558\uc790.<\/mark><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">K8s \uad6c\uc870<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Pod Networking<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pod\uac00 \uc678\ubd80\uc5d0 \uc11c\ube44\uc2a4\ub97c \uc81c\uacf5\ud558\uae30 \uc704\ud574\uc11c\ub294 NodePort, hostPort\/hostNetwork, LoadBalancer \ub4f1\uc758 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud574\uc57c \ud568.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">NodePort<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ube44\uc2a4\uac00 \ubaa8\ub4e0 Worker Node\uc758 \ud2b9\uc815 \ud3ec\ud2b8(<strong>30000~32767 Only<\/strong>)\ub97c \uc5f4\uc5b4\uc90c.<br>\uc678\ubd80\uc5d0\uc11c <code>Worker Node IP:Port<\/code> \ub85c \ub4e4\uc5b4\uc624\uba74 kube-proxy\uac00 \ubc1b\uc544\uc11c \ub4a4\uc5d0 \uc788\ub294 Pod\ub85c \ubd84\uc0b0\uc2dc\ucf1c\uc90c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud3ec\ud2b8 \ubc88\ud638\uac00 \uc81c\ud55c\ub418\uc5b4 \uc788\uace0, Node IP\ub97c \uc54c\uc544\uc57c \ud574\uc11c \uc2e4\ubb34\uc5d0\uc11c \uc0ac\uc6a9\ud558\uae30\ub294 \uc560\ub9e4\ud55c \ubc29\uc2dd.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">hostPort \/ hostNetwork<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>hostPort<\/code>: Pod\uc758 \ucee8\ud14c\uc774\ub108 \ud3ec\ud2b8\ub97c \ub178\ub4dc\uc758 \ud3ec\ud2b8\uc5d0 \uc9c1\uc811 Mapping. Pod\uac00 \ub5a0 \uc788\ub294 \uadf8 <code>\ub178\ub4dc\uc758 IP:\ud3ec\ud2b8<\/code>\ub85c\ub9cc \uc811\uadfc \uac00\ub2a5.<\/li>\n\n\n\n<li><code>hostNetwork: true<\/code>: Pod\uac00 \ub178\ub4dc\uc758 \ub124\ud2b8\uc6cc\ud06c \ub124\uc784\uc2a4\ud398\uc774\uc2a4\ub97c \ud1b5\uc9f8\ub85c \uc0ac\uc6a9. Pod \uc548\uc5d0\uc11c ifconfig \uba85\ub839 \uc2e4\ud589 \uc2dc \ub178\ub4dc NIC\uac00 \uadf8\ub300\ub85c \ucd9c\ub825\ub428.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pod\uac00 \ub178\ub4dc\uc5d0 \ub531 \ubd99\uc5b4\ubc84\ub9ac\ub294 \ubc29\uc2dd\uc774\ub77c Scheduling \uc720\uc5f0\uc131\uc774 \ub5a8\uc5b4\uc9d0. \ubcf4\ud1b5 CNI\ub098 \ubaa8\ub2c8\ud130\ub9c1 \ub370\ubaac\uc14b \uac19\uc740 \uc778\ud504\ub77c\uc131 Pod\uc5d0\ub9cc \uc0ac\uc6a9\ub428.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LoadBalancer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc6b0\ub4dc(AWS, GCP \ub4f1) \ud658\uacbd\uc5d0\uc11c \uc9c4\uc9dc \uc678\ubd80 L4 \ub85c\ub4dc\ubc38\ub7f0\uc11c\ub97c \uc790\ub3d9\uc73c\ub85c \ub744\uc6cc\uc90c. \uc678\ubd80 IP \ud558\ub098 \ubc1b\uc544\uc11c \uae54\ub054\ud558\uac8c Traffic\uc744 \ubc1b\uc744 \uc218 \uc788\uc74c. Production \ud658\uacbd\uc5d0\uc11c\uc758 \uc815\uc11d\uc801\uc778 \ubc29\ubc95.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc810\uc740 \uc11c\ube44\uc2a4\ub9c8\ub2e4 LB\uac00 \ud558\ub098\uc529 \uc0dd\uaca8 \ube44\uc6a9 \ubc1c\uc0dd. \uadf8\ub798\uc11c \ubcf4\ud1b5 Ingress\ub791 \uac19\uc774 \ubb36\uc5b4 \uc0ac\uc6a9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ingress \/ Egress<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1) \uc77c\ubc18 \ub124\ud2b8\uc6cc\ud06c \uc6a9\uc5b4\ub85c\uc11c<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingress : \ub4e4\uc5b4\uc624\ub294 Traffic.<\/li>\n\n\n\n<li>Egress : \ub098\uac00\ub294 Traffic.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">2) K8s Resource(Object)\ub85c\uc11c<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingress : K8s resource \uc885\ub958 \uc911 \ud558\ub098. L7(HTTP\/HTTPS) level\uc5d0\uc11c domain\/path \uae30\ubc18\uc73c\ub85c traffic\uc744 routing\ud574\uc8fc\ub294 rule \ubaa8\uc74c. (e.g. <code>api.com\/users<\/code> -&gt; A \uc11c\ube44\uc2a4, <code>api.com\/orders<\/code> -&gt; B \uc11c\ube44\uc2a4.)<\/li>\n\n\n\n<li>Egress : \ub3c5\ub9bd resource\uac00 \uc544\ub2d8. \ubcf4\ud1b5 <code>NetworkPolicy<\/code> \uc548\uc758 \ud55c \ud56d\ubaa9\uc73c\ub85c \ub098\uac00\ub294 Traffic \uc81c\uc5b4 \uaddc\uce59\uc744 \ub73b\ud568.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ingress Controller<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ingress\ub294 resource\uc5d0 \ubd88\uacfc\ud568. URL\uacfc \uc11c\ube44\uc2a4\ub97c \uc5f0\uacb0 \ud574 \ub193\uc740 \ubb38\uc11c\uc77c \ubfd0\uc784.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8 \ubb38\uc11c\ub97c \ubcf4\uace0 \uc2e4\uc81c\ub85c Traffic\uc744 \ubc1b\uc544 Routing\ud558\ub294 \uc2e4\uccb4(Pod)\ub97c Ingress Controller\ub77c\uace0 \ud568.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf4\ud1b5 Cluster \ub0b4\ubd80\uc5d0 Deployment\/DaemonSet \uc73c\ub85c \ub5a0\uc788\uc74c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c Nginx Ingress Controller, Traefik, HAProxy \ub4f1\uc774 \uc874\uc7ac\ud568.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LoadBalancer + Ingress \ubb36\uae30<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LB\ub294 L4\ub77c\uc11c IP\/Port\ub9cc \ubcf4\uace0 \ub358\uc9c0\uc9c0\ub9cc, Ingress\ub294 L7\uc774\ub77c URL \ubcf4\uace0 \ub611\ub611\ud558\uac8c \ub098\ub220\uc904 \uc218 \uc788\uc74c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LB\ub294 \uc785\uad6c\uc5d0\uc11c \uc804\ubd80 Controller\ud55c\ud14c \ub358\uc9c0\uace0, L7 Routing\uc740 Controller\uac00 \uc218\ud589\ud568.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\ub798\ub294 LB + Ingress \ub3d9\uc791 Flow \uc774\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>\uc678\ubd80 -&gt; LoadBalancer(L4) -&gt; Ingress Controller Pod(L7) -&gt; \uaddc\uce59(Ingress resource) \ucc38\uace0 -&gt; \uc54c\ub9de\uc740 Service -&gt; Pod<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>References Kubernetes (K8s) Kubernetes(K8s)\ub294 container\ud654\ub41c application\uc758 \ubc30\ud3ec(deploy), \ud655\uc7a5(scale), \uc6b4\uc601(operate)\uc744 \uc790\ub3d9\ud654\ud558\ub294 \uc624\ud508\uc18c\uc2a4 container orchestration platform. Kubernetes\ub77c\ub294 \uba85\uce6d\uc740 \ud0a4\uc7a1\uc774(Helmsman) \ub610\ub294 \ud30c\uc77c\ub7ff(Pilot)\uc744 \ub73b\ud558\ub294 \uadf8\ub9ac\uc2a4\uc5b4\uc5d0\uc11c \uc720\ub798\ub428. Kubernetes\ub294 Google\uc774 \ub0b4\ubd80\uc5d0\uc11c 15\ub144 \uc774\uc0c1 \uc0ac\uc6a9\ud55c \uc2dc\uc2a4\ud15c\uc778 Borg(\ubcf4\uadf8)\uc758&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-53","post","type-post","status-publish","format-standard","hentry","category-study"],"_links":{"self":[{"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/it-blog.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=53"}],"version-history":[{"count":12,"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/it-blog.kr\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions\/256"}],"wp:attachment":[{"href":"https:\/\/it-blog.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/it-blog.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/it-blog.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}