{"id":12799,"date":"2023-11-01T10:11:36","date_gmt":"2023-11-01T01:11:36","guid":{"rendered":"https:\/\/jennifersoft.com\/ko\/?p=12799"},"modified":"2024-03-28T15:14:03","modified_gmt":"2024-03-28T06:14:03","slug":"2023-11-01-kubernetes-10","status":"publish","type":"post","link":"https:\/\/jennifersoft.com\/ko\/blog\/kubernetes\/2023-11-01-kubernetes-10\/","title":{"rendered":"10. Advanced POD Scheduling"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/jennifersoft.com\/ko\/wp-content\/uploads\/sites\/2\/2023\/11\/\u1100\u1175\u1109\u116e\u11af\u1107\u1173\u11af\u1105\u1169\u1100\u1173\u110b\u1167\u11ab\u110c\u1162_10_\u110f\u1165\u1107\u1165_231027-1024x576.jpg\" alt=\"\" class=\"wp-image-12808\" srcset=\"https:\/\/jennifersoft.com\/ko\/wp-content\/uploads\/sites\/2\/2023\/11\/\u1100\u1175\u1109\u116e\u11af\u1107\u1173\u11af\u1105\u1169\u1100\u1173\u110b\u1167\u11ab\u110c\u1162_10_\u110f\u1165\u1107\u1165_231027-1024x576.jpg 1024w, https:\/\/jennifersoft.com\/ko\/wp-content\/uploads\/sites\/2\/2023\/11\/\u1100\u1175\u1109\u116e\u11af\u1107\u1173\u11af\u1105\u1169\u1100\u1173\u110b\u1167\u11ab\u110c\u1162_10_\u110f\u1165\u1107\u1165_231027-300x169.jpg 300w, https:\/\/jennifersoft.com\/ko\/wp-content\/uploads\/sites\/2\/2023\/11\/\u1100\u1175\u1109\u116e\u11af\u1107\u1173\u11af\u1105\u1169\u1100\u1173\u110b\u1167\u11ab\u110c\u1162_10_\u110f\u1165\u1107\u1165_231027.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 \uc7a5\uc740 \ud30c\ub4dc \uc2a4\ucf00\uc904\ub9c1\uc744 \ubcf4\ub2e4 \uc138\ubc00\ud558\uac8c \ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubd05\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc694 \ub0b4\uc6a9<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\uc11c\ube44\uc2a4 \uc548\uc815\uc131\uc744 \uc704\ud558\uc5ec \ud30c\ub4dc \uac04 \uc2e4\ud589 \uac00\ub2a5\ud55c \ub178\ub4dc\ub97c \uc11c\ub85c \ubd84\ub9ac\ud558\uace0 \ub3d9\uc77c\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud30c\ub4dc\uac00 \uc11c\ub85c \ub2e4\ub978 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ud558\ub294 Advanced POD Scheduling \uae30\ub2a5\uc744 \uc54c\uc544\ubd05\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc2b5 \uacfc\uc81c<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Taint, Tolerations, Node Affinity \uc124\uc815\uc73c\ub85c \ud2b9\uc815\ud55c \ub178\ub4dc\uc5d0 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/li><li>Pod Anti-Affinity\ub85c \ub3d9\uc77c\ud55c \ub178\ub4dc\uc5d0 \ud30c\ub4dc\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uae43\ud5d9 \ub9c1\ud06c<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/junghoon2\/k8s-class\/tree\/main\/tolerations\">https:\/\/github.com\/junghoon2\/k8s-class\/tree\/main\/tolerations<\/a>&nbsp;<\/li><li><a href=\"https:\/\/github.com\/junghoon2\/k8s-class\/tree\/main\/affinity\">https:\/\/github.com\/junghoon2\/k8s-class\/tree\/main\/affinity<\/a>&nbsp;<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ucfe0\ubc84\ub124\ud2f0\uc2a4\uc758 \uae30\ubcf8 \uc2a4\ucf00\uc904\ub9c1 \uc815\ucc45\uc740 \ud074\ub7ec\uc2a4\ud130\uc758 \ub9ac\uc18c\uc2a4 \ud65c\uc6a9\uc744 \ucd5c\ub300\ud654\ud558\uace0, \ud30c\ub4dc\uc758 \uac00\uc6a9\uc131\uc744 \ubcf4\uc7a5\ud558\ub294 \ub370\uc5d0 \uc911\uc810\uc744 \ub461\ub2c8\ub2e4. \ud2b9\ubcc4\ud55c \uc694\uad6c\uc0ac\ud56d\uc774 \uc5c6\ub294 \uacbd\uc6b0, Kubernetes\ub294 \uae30\ubcf8 \uc2a4\ucf00\uc904\ub9c1 \uc815\ucc45\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud30c\ub4dc\ub97c \uc784\uc758\uc758 \uc801\uc808\ud55c \ub178\ub4dc\uc5d0 \uc790\ub3d9\uc73c\ub85c \ubc30\uce58\ud569\ub2c8\ub2e4. \uc2a4\ucf00\uc904\ub9c1 \uae30\ub2a5\uc740 \ucee8\ud2b8\ub864 \ud50c\ub808\uc778\uc758 \uc2a4\ucf00\uc904\ub7ec(Scheduler) \ud30c\ub4dc\uac00 \ub2f4\ub2f9\ud569\ub2c8\ub2e4. \uc2a4\ucf00\uc904\ub7ec \ud30c\ub4dc\ub294 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \ud30c\ub4dc(Pod)\ub97c \uc5b4\ub5a4 \ub178\ub4dc(Node)\uc5d0 \ubc30\uce58\ud560\uc9c0 \uacb0\uc815\ud569\ub2c8\ub2e4.&nbsp;<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">EKS\ub294 \ucee8\ud2b8\ub864 \ud50c\ub808\uc778\uc744 AWS\uc5d0\uc11c \uad00\ub9ac\ud558\uc5ec Scheduler \ud30c\ub4dc\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc628\ud504\ub808\ubbf8\uc2a4 \ub124\uc774\ud2f0\ube0c \ucfe0\ubc84\ub124\ud2f0\uc2a4 \ud658\uacbd\uc740 \uc2a4\ucf00\uc904\ub7ec \ud30c\ub4dc\ub97c \uc544\ub798\uc640 \uac19\uc774 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |alooo:kube-system) k get pod --selector component=kube-scheduler -o wide -n kube-system\nNAME                     READY   STATUS    RESTARTS       AGE    IP              NODE      NOMINATED NODE   READINESS GATES\nkube-scheduler-master1   1\/1     Running   61 (12h ago)   126d   192.168.1.101   master1   &lt;none>           &lt;none>\nkube-scheduler-master2   1\/1     Running   87 (12h ago)   126d   192.168.1.102   master2   &lt;none>           &lt;none>\nkube-scheduler-master3   1\/1     Running   96 (12h ago)   126d   192.168.1.103   master3   &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;selector \uc635\uc158\uc744 \uc774\uc6a9\ud558\uba74 \ud2b9\uc815 Label\uc744 \uac00\uc9c0\ub294 \ud30c\ub4dc\ub9cc \uc9c0\uc815\ud558\uc5ec \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \uc2a4\ucf00\uc904\ub7ec\ub294 \ud30c\ub4dc\ub97c \ubc30\uce58\ud560 \ub54c \ub178\ub4dc\uac00 \ud560\ub2f9 \uac00\ub2a5\ud55c \uc804\uccb4 \uc790\uc6d0 \uc6a9\ub7c9(\uba54\ubaa8\ub9ac, CPU \uc6a9\ub7c9 \ub4f1)\uacfc \ud30c\ub4dc\uc758 \uc790\uc6d0 \uc694\uccad\ub7c9(request)\uc744 \uace0\ub824\ud558\uc5ec \uac00\uc7a5 \uc801\uc808\ud55c \ub178\ub4dc\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \ub610\ud55c \ub178\ub4dc\uc758 \uc2e4\ud589 \uac00\ub2a5 \uc0c1\ud0dc(Healthiness)\ub97c \ud655\uc778\ud558\uc5ec \uc774\uc0c1\uc774 \uc788\ub294 \ub178\ub4dc\uc5d0\ub294 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.&nbsp;<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc758\ud560 \uc0ac\ud56d\uc740 \ud30c\ub4dc\uc758 \uc790\uc6d0 \uc694\uccad\ub7c9\uc740 \ud604\uc7ac \ud30c\ub4dc\uc758 \uc2e4\uc81c \uc790\uc6d0 \uc0ac\uc6a9\ub7c9\uc774 \uc544\ub2cc \ub9e4\ub2c8\ud398\uc2a4\ud2b8\uc5d0 \uba85\uc2dc\ud55c \ud30c\ub4dc\uc758 \uc790\uc6d0 \uc694\uccad(request) \uc6a9\ub7c9\uc744 \uae30\uc900\uc785\ub2c8\ub2e4. \uc2e4\uc81c \uc0ac\uc6a9\ub7c9\uc774 \ub192\uc740\ub370 \uc790\uc6d0 \uc694\uccad\uc774 \ub0ae\uac70\ub098 \ud639\uc740 \uc0ac\uc6a9\ub7c9\uc774 \ub0ae\uc740\ub370 \uc790\uc6d0 \uc694\uccad\uc740 \ub192\uc740 \uacbd\uc6b0\uac00 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \ub178\ub4dc\uc758 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc790\uc6d0\uc774 \ubd80\uc871\ud558\uc5ec \ud30c\ub4dc\uac00 OOM(Out Of Memory) \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c \uc0ac\uc6a9\ub7c9\uc5d0 \uadfc\uac70\ud558\uc5ec \uc801\uc808\ud55c Request \uc124\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucfe0\ubc84\ub124\ud2f0\uc2a4\uc758 \u2018Advanced Pod Scheduling\u2019\uc740 \ud30c\ub4dc\ub97c \ub354\uc6b1 \uc138\ubd80\uc801\uc73c\ub85c \uc2a4\ucf00\uc904\ub9c1\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \ucfe0\ubc84\ub124\ud2f0\uc2a4\ub294 \uc704\uc640 \uac19\uc774 \ud30c\ub4dc\ub97c \ud074\ub7ec\uc2a4\ud130 \ub0b4\uc758 \uc5b4\ub5a4 \ub178\ub4dc\uc5d0\ub3c4 \ubc30\uce58\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc720\ub86d\uac8c \uc2a4\ucf00\uc904\ub9c1\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ud2b9\uc815 \uc0c1\ud669\uc5d0\uc11c\ub294 \ud30c\ub4dc\ub97c \ud2b9\uc815 \ub178\ub4dc\uc5d0 \ubc30\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub7f0 \uacbd\uc6b0\uc5d0 Advanced Pod Scheduling\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub354\uc6b1 \uc138\ubc00\ud55c \uc2a4\ucf00\uc904\ub9c1\uc744 \uc81c\uc5b4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Taint, Tolerations, Node Affinity \uc124\uc815<\/strong><br><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\ud544\uc790\ub294 \uc11c\ube44\uc2a4\uc640 \uad00\uacc4\ub41c \ud30c\ub4dc\uc640 \uc2e4\uc81c \uc11c\ube44\uc2a4\uc640\ub294 \uad00\uacc4 \uc5c6\uc9c0\ub9cc \uacf5\ud1b5 \uc778\ud504\ub77c \uc6b4\uc601\uc5d0 \uad00\ub828\ub41c \ud30c\ub4dc, \uc989 \ubaa8\ub2c8\ud130\ub9c1, \ub85c\uadf8, ArgoCD \ub4f1\uc758 \ud30c\ub4dc\ub97c \uad6c\ubd84\ud558\uc5ec \uc11c\ub85c \ub2e4\ub978 \ub178\ub4dc \uadf8\ub8f9\uc5d0\uc11c \uc2e4\ud589\ud569\ub2c8\ub2e4. \ub85c\uadf8 \uac80\uc0c9 \ubc0f \ubaa8\ub2c8\ud130\ub9c1 \uc6a9\ub3c4\uc758 \ud30c\ub4dc\uac00 \uac00\ub054 \ud30c\ub4dc\uc758 \uc790\uc6d0\uc744 \ub9ce\uc774 \ud558\ub294\ub370 \uc774 \ub54c \uc2e4 \uc11c\ube44\uc2a4\uc640 \uad00\ub828\ub41c \ud30c\ub4dc\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\uae30 \uc704\ud574\uc11c\uc785\ub2c8\ub2e4. \uc774\ucc98\ub7fc \uba85\uc2dc\uc801\uc73c\ub85c \ud2b9\uc815 \ud30c\ub4dc\ub97c \uc11c\ub85c \ubd84\ub9ac\ud558\ub294 \uacbd\uc6b0\uc5d0 \uc0ac\uc6a9\ud558\ub294 \uc635\uc158\uc774 \u2018taint\u2019\uc640 \u2018toleration\u2019 \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/lRIQaaiA1mbpWf5OCZXs6fgA77Hn4xarfoaSOX17_viNcnpyKqL3whIxwyXv2AqFrf5TadF7CR4-HY4pwcF8O4Gsek5AgkWgMIKYBEqYqwapnyLvy6YFssJWAnwQeAuiwgTQ83z7P2vJlJXiBmpkW-g\" alt=\"\"\/><figcaption><strong>From : <a href=\"https:\/\/blog.kubecost.com\/blog\/kubernetes-taints\/\">https:\/\/blog.kubecost.com\/blog\/kubernetes-taints\/<\/a> <\/strong><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2018Taint\u2019(\uac10\uc5fc) \uc124\uc815\uc740 \ud2b9\uc815 \ub178\ub4dc\uc5d0 \ud2b9\ubcc4\ud55c \uc81c\uc57d\uc0ac\ud56d\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4. \ub178\ub4dc\uc5d0 \ud14c\uc778\ud2b8\ub97c \uc124\uc815\ud558\uba74 \ud574\ub2f9 \ub178\ub4dc\uc5d0 \ud30c\ub4dc\uac00 \uc2a4\ucf00\uc904\ub9c1\ub418\uae30 \uc804\uc5d0 \ud14c\uc778\ud2b8\uc640 \uc77c\uce58\ud558\ub294 \u2018Toleration\u2019(\uc6a9\uc778, \uad00\uc6a9)\uc774 \uc788\ub294 \ud30c\ub4dc\ub9cc \ud574\ub2f9 \ub178\ub4dc\uc5d0 \ud30c\ub4dc\ub97c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \ud2b9\uc815 \ub178\ub4dc\ub97c \ud2b9\ubcc4\ud55c \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud558\uac70\ub098, \ud2b9\uc815 \ud30c\ub4dc\ub97c \ud2b9\uc815 \ub178\ub4dc\uc5d0\ub9cc \uc2a4\ucf00\uc904\ub9c1\ud558\ub3c4\ub85d \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2018Taint\u2019\uc640 \u2018Toleration\u2019 \ucc28\uc774\uc810\uc740 \ud14c\uc778\ud2b8 \uc124\uc815\uc740 \ub178\ub4dc\uc5d0 \uc124\uc815\ud558\uace0 \ud1a8\ub7ec\ub808\uc774\uc158 \uc124\uc815\uc740 \ud30c\ub4dc\uc5d0 \uc124\uc815\ud558\ub294 \uac83 \uc785\ub2c8\ub2e4. Taint\ub97c \ub178\ub4dc\uc5d0 \uc124\uc815\ud558\uace0 \ud574\ub2f9 Taint\uc5d0 \ud574\ub2f9\ud558\ub294 Toleration \uc124\uc815\uc744 \ud30c\ub4dc\uc5d0 \uc9c0\uc815\ud558\uba74 \ud574\ub2f9 \ub178\ub4dc\uc5d0 \ub2e4\ub978 \ud30c\ub4dc\ub294 \uc2a4\ucf00\uc904\ub9c1\ub418\uc9c0 \uc54a\uace0 Toleration \uc124\uc815\uc744 \uac00\uc9c4 \ud30c\ub4dc\ub9cc \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\ub4dc\uac00 \ud2b9\uc815 \ub178\ub4dc\ub97c \uc120\ud0dd\ud558\uc5ec \uc2a4\ucf00\uc904\ub9c1 \ud558\ub824\uba74 \u2018nodeSelector(\uc120\ud0dd)\u2019 \ud639\uc740 \u2018nodeAffinity(\uc720\uc0ac, \uce5c\uadfc\uac10)\u2019 \uc124\uc815\uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. \uc2e4\ubb34\uc5d0\uc11c \uce74\ud39c\ud130 Provisioner \uc124\uc804\uc5d0 \uc544\ub798\uc640 \uac19\uc774 Taint\ub97c \uc124\uc815\ud558\uc5ec \ud30c\ub4dc\ub97c \uc138\ubc00\ud558\uac8c \uc2a4\ucf00\uc904\ub9c1\ud569\ub2c8\ub2e4. \uce74\ud39c\ud130 Provisioner \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc5d0 Taint \uc124\uc815\uc744 \ucd94\uac00\ud558\ub294 \uc608\uc2dc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/github.com\/junghoon2\/k8s-class\/blob\/main\/karpenter\/taint-provisioner.yaml\">taint-provisioner.yaml<\/a><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: karpenter.sh\/v1alpha5\nkind: Provisioner\nmetadata:\n  name: webrtc\n  namespace: karpenter\nspec:\n  providerRef:\n    name: default\n  taints:\n  - effect: NoSchedule\n    key: node\n    value: webrtc\n  labels:\n    node: webrtc\n(\uc0dd\ub7b5)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">. spec.taints<br><br>Taint \uc124\uc815\uc740 Key-Value \ud615\uc2dd\uc785\ub2c8\ub2e4. Key-Value\ub294 \uc784\uc758\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud544\uc790\ub294 Key-Value\ub97c node:webrtc\ub85c \uc9c0\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4. \u2018effect: NoSchedule\u2019\uc744 \uc9c0\uc815\ud558\uc5ec Toleration\uc774 node:webrtc\ub97c \uac00\uc9c0\uc9c0 \uc54a\ub294 \ud30c\ub4dc\ub294 \uc2a4\ucf00\uc904\ub9c1\ub418\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c Taint \uc124\uc815\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\uc5d0 \ud30c\ub4dc\uac00 \uc2e4\ud589\ud558\ub3c4\ub85d \ud30c\ub4dc \uc124\uc815\uc5d0 Toleration\uacfc nodeAffinity \uc124\uc815\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. Toleration\uc740 Taint \uc124\uc815\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\uc5d0 \ubc30\ud3ec\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \uc635\uc158\uc785\ub2c8\ub2e4.&nbsp; \u2018nodeAffinity\u2019\ub294 \ud30c\ub4dc(Pod)\ub97c \ud2b9\uc815 \ub178\ub4dc(Node) \ub610\ub294 \ud2b9\uc815 \ub178\ub4dc \uadf8\ub8f9\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ud558\ub294\ub370 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. nodeAffinity\ub97c \uc0ac\uc6a9\ud558\uba74 \ud30c\ub4dc\ub97c \ud2b9\uc815 \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. nodeSelector \ubcf4\ub2e4 \uc720\uc5f0\ud55c \uc870\uac74 \uc124\uc815\uc774 \uac00\ub2a5\ud558\uace0 podAffinity\uc640 \uc720\uc0ac\ud55c \ubb38\ubc95\uc774\ub77c nodeSelector \ub300\uc2e0 nodeAffinity \uc124\uc815\uc744 \ub9ce\uc774 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Toleration \uc124\uc815\ub9cc \uc788\uace0 \u2018nodeAffinity\u2019\uac00 \uc5c6\uc73c\uba74 \ud30c\ub4dc\uac00 \uc784\uc758\uc758 \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1 \ub420 \uc218 \uc788\uc5b4 \u2018nodeAffinity\u2019 \uc124\uc815\uc744 \ud1a8\ub7ec\ub808\uc774\uc158 \uc124\uc815\uacfc \ud568\uaed8 \ucd94\uac00\ud569\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2018nodeAffinity\u2019\ub294 \ub178\ub4dc\uc758 \ub808\uc774\ube14\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uba70, \ud30c\ub4dc\uc758 spec \ud544\ub4dc\uc5d0 affinity \ube14\ub85d\uc744 \ucd94\uac00\ud558\uc5ec \uc815\uc758\ud569\ub2c8\ub2e4. \ub178\ub4dc \uc5b4\ud53c\ub2c8\ud2f0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 2\uac00\uc9c0 \uc635\uc158\uc744 \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. RequiredDuringSchedulingIgnoredDuringExecution<br>\uc774 \ud0c0\uc785\uc740 \ud30c\ub4dc\uac00 \ubc18\ub4dc\uc2dc(Required) \ud2b9\uc815 \ub178\ub4dc \ub610\ub294 \ub178\ub4dc \uadf8\ub8f9\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ub418\uc5b4\uc57c \ud558\uba70, \ud574\ub2f9 \uc870\uac74\uc744 \ub9cc\uc871\ud558\uc9c0 \uc54a\uc73c\uba74 \ud30c\ub4dc\ub97c \uc2a4\ucf00\uc904\ub9c1\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e8, \uc774\ubbf8 \ud574\ub2f9 \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ub418\uba74 \ub178\ub4dc \uc5b4\ud53c\ub2c8\ud2f0 \uc870\uac74\uc774 \ubcc0\uacbd\ub418\uc5b4\ub3c4 \ud30c\ub4dc\ub294 \ub2e4\ub978 \ub178\ub4dc\ub85c \uc62e\uaca8\uc9c0\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(Ignored)<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. PreferredDuringSchedulingIgnoredDuringExecution<br>\ud30c\ub4dc\uac00 \ud2b9\uc815 \ub178\ub4dc \ub610\ub294 \ub178\ub4dc \uadf8\ub8f9\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ub418\uae38 \uc120\ud638(Preferred) \ud558\uc9c0\ub9cc, \ub9cc\uc871\ud558\ub294 \ub178\ub4dc\uac00 \uc5c6\ub294 \uacbd\uc6b0 \uc870\uac74\uc744 \ub9cc\uc871\ud558\uc9c0 \uc54a\uc544\ub3c4 \ud30c\ub4dc\ub97c \ub2e4\ub978 \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub178\ub4dc \uc5b4\ud53c\ub2c8\ud2f0\uac00 \uc120\ud638\ub418\ub294 \uc870\uac74\uc774\uc9c0\ub9cc \uac15\uc81c\uc131\uc740 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7fc \uc2e4\uc2b5\uc73c\ub85c \uc54c\uc544\ubd05\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/junghoon2\/k8s-class\/blob\/main\/tolerations\/tolerations-deploy.yml\">toleration-deploy.yaml<\/a><br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-hello\n  namespace: default\n  labels:\n    app: nginx\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginxdemos\/hello\n      tolerations:\n      - key: \"node\"\n        value: \"webrtc\"\n        effect: \"NoSchedule\"\n      affinity:\n        nodeAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            nodeSelectorTerms:\n            - matchExpressions:\n              - key: node\n                operator: In\n                values:\n                - webrtc<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">. tolerations<br>Taint \uc124\uc815\ub41c \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1 \ub418\ub3c4\ub85d Tolerations \uc124\uc815\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \u2018node:webrtc\u2019 \uc124\uc815\uc73c\ub85c \u2018node:webrtc\u2019 Taint \uc124\uc815\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\uc5d0 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. nodeAffinity<br>\ub808\uc774\ube14\uc774 node:webrtc\ub97c \uac00\uc9c0\ub294 \ub178\ub4dc\uc5d0\ub9cc \ud30c\ub4dc\ub97c \ubc30\ud3ec\ud558\ub3c4\ub85d nodeAffinity \uc124\uc815\uc744 \ud569\ub2c8\ub2e4. \ud30c\ub4dc\uac00 \ub2e4\ub978 \ub178\ub4dc\uac00 \uc544\ub2cc \ud2b9\uc815 \ub178\ub4dc\uc5d0\ub9cc \uc2a4\ucf00\uc904\ub9c1 \ub418\ub3c4\ub85d nodeAffinity\uc758 \u2018requiredDuringSchedulingIgnoredDuringExecution\u2019 \uc124\uc815\uc744 \ucd94\uac00\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7fc, provisioner\uc640 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:karpenter) k apply -f taint-provisioner.yaml \nprovisioner.karpenter.sh\/webrtc created\n\n$ (\u2388 |switch-singapore-test:default) k apply -f tolerations-deploy.yml \ndeployment.apps\/nginx-hello created<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c nginx-hello \ud30c\ub4dc\uc758 \uc0c1\ud0dc\ub294 \u2018pending\u2019\uc785\ub2c8\ub2e4. \uc65c \uadf8\ub7f4\uae4c\uc694?<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                           READY   STATUS    RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES\nnginx-hello-558fcbd7bb-rffrz   0\/1     Pending   0          3s    &lt;none>   &lt;none>   &lt;none>           &lt;none>\nnginx-hello-558fcbd7bb-x9xdt   0\/1     Pending   0          3s    &lt;none>   &lt;none>   &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">nodeAffinity\uc758 node:webrtc Label\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\uac00 \uc5c6\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uce74\ud39c\ud130\uac00 \uc544\uc9c1 \uc0c8\ub85c\uc6b4 \ub178\ub4dc\ub97c \ubc30\ud3ec\ud558\uae30 \uc804\uc785\ub2c8\ub2e4. \uc870\uae08 \uae30\ub2e4\ub9ac\uba74 \uce74\ud39c\ud130 Provisioner\uac00 node:webrtc Label\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\ub97c \ubc30\ud3ec\ud569\ub2c8\ub2e4.&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                           READY   STATUS    RESTARTS   AGE   IP              NODE                                               NOMINATED NODE   READINESS GATES\nnginx-hello-558fcbd7bb-rffrz   1\/1     Running   0          17m   10.110.14.130   ip-10-110-11-102.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-hello-558fcbd7bb-x9xdt   1\/1     Running   0          17m   10.110.2.0      ip-10-110-11-102.ap-southeast-1.compute.internal   &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c nginx-hello \ud30c\ub4dc\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. 2\uac1c\uc758 \ud30c\ub4dc\uac00 \ub3d9\uc77c\ud558\uac8c ip-10-110-11-102-* \ud638\uc2a4\ud2b8\ub124\uc784\uc744 \uac00\uc9c0\ub294 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ub178\ub4dc\ub9cc node:webrtc Label\uc744 \ud3ec\ud568\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.&nbsp;<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc740 \uc784\uc758\uc758 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud558\uc5ec Taint \uc124\uc815\uc774 \ub41c \ub178\ub4dc\uc5d0 \ud30c\ub4dc\uac00 \uc2a4\ucf00\uc904\ub9c1 \ub418\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k create deployment nginx --image nginx --replicas 10\ndeployment.apps\/nginx created<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx \uc774\ubbf8\uc9c0\ub97c \uac00\uc9c0\ub294 Nginx \ud30c\ub4dc 10\uac1c\ub97c \uc2e4\ud589\ud558\uc600\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                           READY   STATUS    RESTARTS   AGE   IP              NODE                                               NOMINATED NODE   READINESS GATES\nnginx-748c667d99-26q6g         1\/1     Running   0          51s   10.110.22.225   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-6b977         1\/1     Running   0          51s   10.110.28.221   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-85bbt         1\/1     Running   0          51s   10.110.19.155   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-8679g         1\/1     Running   0          51s   10.110.20.120   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-8hnhv         1\/1     Running   0          51s   10.110.42.118   ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-cg4w2         1\/1     Running   0          51s   10.110.22.21    ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-k99b5         1\/1     Running   0          51s   10.110.44.197   ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-pptxm         1\/1     Running   0          51s   10.110.37.91    ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-rnk2s         1\/1     Running   0          51s   10.110.39.167   ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-748c667d99-ttmhp         1\/1     Running   0          51s   10.110.45.96    ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-hello-558fcbd7bb-rffrz   1\/1     Running   0          19m   10.110.14.130   ip-10-110-11-102.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nnginx-hello-558fcbd7bb-x9xdt   1\/1     Running   0          19m   10.110.2.0      ip-10-110-11-102.ap-southeast-1.compute.internal   &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">10\uac1c\uc758 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud558\uc600\ub294\ub370 \ud30c\ub4dc\ub294 \ubaa8\ub450 ip-10-110-11-102-* \uc774 \uc678\uc758 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ub429\ub2c8\ub2e4. Nginx \ud30c\ub4dc\ub294 Toleration \uc124\uc815\uc774 \uc5c6\uc5b4 Taint \uc124\uc815\uc774 \ub418\uc5b4 \uc788\ub294 ip-10-110-11-102-* \ub178\ub4dc\uc5d0 \ubc30\ud3ec\ub420 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ucc98\ub7fc Taint, Toleration, Node Affinity \uc124\uc815\uc73c\ub85c \ud2b9\uc815 \ub178\ub4dc \uadf8\ub8f9\uc5d0 \ud544\uc694\ud55c \ud30c\ub4dc\ub9cc \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. GPU \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uac70\ub098,&nbsp; \uba54\ubaa8\ub9ac \ub610\ub294 CPU\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294 \ud30c\ub4dc\ub294 \ud2b9\uc815 \uc778\uc2a4\ud134\uc2a4 \ud0c0\uc785(R or C Type)\uc5d0 \ubc30\ud3ec\ud558\uc5ec \ub178\ub4dc \ube44\uc6a9\uc744 \uc808\uac10\ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc2b5\uc744 \uc885\ub8cc\ud558\uc5ec \ud30c\ub4dc\uc640 Provisioner \ub9ac\uc18c\uc2a4\ub97c \uc0ad\uc81c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k delete deployments.apps nginx nginx-hello \ndeployment.apps \"nginx\" deleted\ndeployment.apps \"nginx-hello\" deleted\n\n$ (\u2388 |switch-singapore-test:default) k delete provisioners.karpenter.sh webrtc \nprovisioner.karpenter.sh \"webrtc\" deleted<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. Pod Anti-Affinity \uc124\uc815<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uc77c\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc5ec\ub7ec \uac1c\uc758 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud558\ub294 \uacbd\uc6b0 \ud2b9\uc815 \ub178\ub4dc\uc5d0 \ud574\ub2f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud30c\ub4dc\uac00 \uc911\ubcf5\uc73c\ub85c \uc2e4\ud589\ud558\uba74 \ud574\ub2f9 \ub178\ub4dc\uc5d0 \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud558\uba74 \ub3d9\uc77c\ud55c \uc11c\ube44\uc2a4\uc758 \uc5ec\ub7ec \ud30c\ub4dc\uac00 \uc885\ub8cc\ud558\ubbc0\ub85c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub178\ub4dc \uc7a5\uc560\uc640 \uad00\ub828\uc5c6\uc774 \uce74\ud39c\ud130\uac00 \ube44\uc6a9 \uc808\uac10\uc744 \uc774\uc720\ub85c \ud2b9\uc815 \ub178\ub4dc\ub97c \ud1b5\ud569(Consolidation)\ud558\ub294 \uacbd\uc6b0 \ub610\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ubaa8\ub4e0 \ud30c\ub4dc\uac00 \ub3d9\uc77c \ub178\ub4dc\uc5d0 \uc2e4\ud589 \uc911\uc774\uba74 \uc11c\ube44\uc2a4\uac00 \uc911\uc9c0\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/7GYhRWMzWV6Ub0jBk2ZgRc_yPJqf7zS5S34NEMBJY5SvIKxa5_-CbuuO9ZP6xywzdLiZko8_X18FUT3p51bRWgTpuLJ89BN3yyJnrcu2IPTRnQPvWTwU-G6EeW8ocqw-8Dk5SEFqmoUt5H3bH9uQQkY\" alt=\"\"\/><figcaption><strong>From : <a href=\"https:\/\/medium.com\/@danielaaronw\/k8s-pod-anti-affinity-dd2667a20c5f\">https:\/\/medium.com\/@danielaaronw\/k8s-pod-anti-affinity-dd2667a20c5f<\/a> <\/strong><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7ec\ud55c \ud604\uc0c1\uc744 \ud574\uacb0\ud558\uae30 \uc704\ud558\uc5ec Pod Anti-Affinity(\ud30c\ub4dc \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0) \uc124\uc815\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Pod Anti-Affinity \uc124\uc815\uc740 \ud2b9\uc815 \ub808\uc774\ube14\uc744 \uac00\uc9c4 \ud30c\ub4dc\uac00 \uac19\uc740 \ub178\ub4dc\uc5d0 \ud568\uaed8 \uc2a4\ucf00\uc904\ub9c1\ub418\ub294 \uac83\uc744 \ubc29\uc9c0\ud569\ub2c8\ub2e4. \uc989, \ud30c\ub4dc \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0\ub97c \uc0ac\uc6a9\ud558\uba74 \ud2b9\uc815 \ub178\ub4dc\uc5d0 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \ud30c\ub4dc\uac00 \uc704\uce58\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud30c\ub4dc\ub97c \ubd84\uc0b0 \ubc30\uce58\ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc11c\ube44\uc2a4\uc758 \uac00\uc6a9\uc131\uacfc \uc548\uc815\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. Affinity\uac00 \u2018\uce5c\ubc00\uac10\u2019 \ub4f1\uc758 \ub73b\uc744 \uac00\uc9c0\ubbc0\ub85c Anti-Affinity\ub294 \u2018\uce5c\ubc00\ud558\uc9c0 \uc54a\uac8c\u2019\ub85c \uc774\ud574\ud558\uba74 \uc880 \ub354 \uc27d\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\ub4dc \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0\ub97c \uc0ac\uc6a9\ud558\ub294 \uc8fc\uc694 \uc774\uc720\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\uace0\uac00\uc6a9\uc131 \ubcf4\uc7a5: \uc11c\ub85c \ub2e4\ub978 \ub178\ub4dc\uc5d0 \ud30c\ub4dc\ub97c \ubd84\uc0b0 \ubc30\uce58\ud568\uc73c\ub85c\uc368 \ub178\ub4dc \ub610\ub294 \ub799 \uc218\uc900\uc758 \uc7a5\uc560\uc5d0\ub3c4 \ud30c\ub4dc\uac00 \uacc4\uc18d \uac00\uc6a9\uc131\uc744 \uc720\uc9c0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><li>\uc131\ub2a5 \uade0\ud615 \uc870\uc815: \ub3d9\uc77c\ud55c \ub178\ub4dc\uc5d0 \uc5ec\ub7ec \ud30c\ub4dc\uac00 \uc704\uce58\ud558\uba74 \ub178\ub4dc\uc758 \ub9ac\uc18c\uc2a4\ub97c \uace0\ub974\uac8c \uc0ac\uc6a9\ud558\uae30 \uc5b4\ub824\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud30c\ub4dc \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub9ac\uc18c\uc2a4 \ubd80\ud558\ub97c \ub354\uc6b1 \uade0\ud615 \uc788\uac8c \ubd84\uc0b0\ud569\ub2c8\ub2e4.<\/li><li>\uac01 \ud30c\ub4dc\uc758 \uc548\uc815\uc131 \ud655\ubcf4: \uc11c\ub85c \ub2e4\ub978 \ud30c\ub4dc\ub97c \ub3d9\uc77c\ud55c \ub178\ub4dc\uc5d0 \uc2a4\ucf00\uc904\ub9c1\ud558\uba74, \uc790\uc6d0\uc744 \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294 \ud2b9\uc815 \ud30c\ub4dc\ub4e4\uc774 \uc11c\ub85c\uc758 \ub9ac\uc18c\uc2a4 \uc0ac\uc6a9\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0\ub97c \uc0ac\uc6a9\ud558\uba74 \uac01 \ud30c\ub4dc\uac00 \ub3c5\ub9bd\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub3c4\ub85d \ubcf4\uc7a5\ub429\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\ub85c MySQL, MariaDB, Redis \ub4f1\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub828 \ud30c\ub4dc\uc5d0 \ud544\uc218\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ud5ec\ub984\uc73c\ub85c \uc124\uce58\ud558\uba74 \uae30\ubcf8 \uc124\uc815\uc5d0 \ud30c\ub4dc \uc548\ud2f0-\uc5b4\ud53c\ub2c8\ud2f0 \uc124\uc815\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc2b5\uc73c\ub85c \uc790\uc138\ud55c \uc0ac\ud56d\uc744 \uc54c\uc544\ubd05\ub2c8\ub2e4. \uc544\ud30c\uce58 \uc6f9\uc11c\ubc84(httpd)\ub97c \ubc30\ud3ec\ud569\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/junghoon2\/k8s-class\/blob\/main\/affinity\/affinity-deploy.yml\">affinity-deploy.yaml<\/a><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: httpd\n  labels:\n    app: httpd\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: httpd\n  template:\n    metadata:\n      labels:\n        app: httpd\n    spec:\n      containers:\n      - name: httpd\n        image: httpd\n      affinity:\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n          - labelSelector:\n              matchExpressions:\n              - key: app\n                operator: In\n                values:\n                - httpd\n            topologyKey: kubernetes.io\/hostname<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">. affinity<br>\uc774\uc804\uc758 nodeAffinity\uc640 \ub3d9\uc77c\ud558\uac8c affinity \ud544\ub4dc\uc5d0 podAntiAffinity \uc635\uc158\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution<br>\ub3d9\uc77c\ud55c \ub808\uc774\ube14\uc744 \uac00\uc9c0\ub294 \ud30c\ub4dc\ub294 \ubc18\ub4dc\uc2dc(required) \uac19\uc740 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. labelSelector<br>Affinity \uc801\uc6a9\ud560 \ud30c\ub4dc\uc744 \ub808\uc774\ube14\uc744 \uae30\uc900\uc73c\ub85c \uc120\ud0dd\ud569\ub2c8\ub2e4. \ub2e4\uc591\ud55c \ub9ac\uc18c\uc2a4\uc5d0 \ub808\uc774\ube14\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">. topologyKey: kubernetes.io\/hostname<br>\ud30c\ub4dc\uac00 \uc2e4\ud589\ub418\ub294 \ub178\ub4dc\uc758 \ud638\uc2a4\ud2b8\ub124\uc784\uc744 \uae30\uc900\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. Topology \uc815\ubcf4\ub294 \ud074\ub7ec\uc2a4\ud130 \ub0b4\uc758 \ub178\ub4dc\ub4e4\uc758 \ubb3c\ub9ac\uc801\uc778 \ubc30\uce58\uc640 \ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0\uc131\uc744 \ub098\ud0c0\ub0b4\ub294\ub370 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Topology\ub97c AWS\uc758 zone\uc73c\ub85c \uc9c0\uc815\ud558\uba74 \uc11c\ub85c \ub2e4\ub978 \uac00\uc6a9\uc874(Availability Zone)\uc5d0\uc11c \uc2e4\ud589\ud558\ub3c4\ub85d \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Affinity \uc18d\uc131\uc744 \uac00\uc9c0\ub294 \ud30c\ub4dc\ub97c \ubc30\ud3ec\ud569\ub2c8\ub2e4.<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k apply -f affinity-deploy.yml \ndeployment.apps\/httpd created<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc758\ub3c4\ud55c\ub300\ub85c \uc11c\ub85c \ub2e4\ub978 2\uac1c\uc758 \ub178\ub4dc\uc5d0 \ubc30\ud3ec\ub429\ub2c8\ub2e4.<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                     READY   STATUS    RESTARTS   AGE   IP              NODE                                               NOMINATED NODE   READINESS GATES\nhttpd-77d4584879-6l5bp   1\/1     Running   0          20s   10.110.37.91    ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nhttpd-77d4584879-r4l29   1\/1     Running   0          20s   10.110.28.221   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7fc, 1\uac1c\uc758 \ud30c\ub4dc\ub97c \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc5b4\ub5bb\uac8c \ub420\uae4c\uc694?&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac\uc758 \ub178\ub4dc\ub294 2\uac1c\uc774\ubbc0\ub85c 3\uac1c\uc758 \ud30c\ub4dc\ub97c \uc2e4\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud30c\ub4dc\ub294 \uac19\uc740 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ud560 \uc218 \uc5c6\ub3c4\ub85d Anti-Affinity \uc124\uc815\uc774 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k scale deployment httpd --replicas 3\ndeployment.apps\/httpd scaled<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                     READY   STATUS    RESTARTS   AGE     IP              NODE                                               NOMINATED NODE   READINESS GATES\nhttpd-77d4584879-6l5bp   1\/1     Running   0          2m13s   10.110.37.91    ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nhttpd-77d4584879-r4l29   1\/1     Running   0          2m13s   10.110.28.221   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nhttpd-77d4584879-rbchf   0\/1     Pending   0          13s     &lt;none>          &lt;none>                                             &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9c8\uc9c0\ub9c9 \ud30c\ub4dc\uc758 \uc0c1\ud0dc\ub294 \u2018Pending\u2019\uc785\ub2c8\ub2e4. \uc790\uc138\ud55c \uba54\uc2dc\uc9c0\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k describe pod httpd-77d4584879-rbchf\n(\uc0dd\ub7b5)\nEvents:\n  Type     Reason            Age   From               Message\n  ----     ------            ----  ----               -------\n  Warning  FailedScheduling  35s   default-scheduler  0\/2 nodes are available: 2 node(s) didn't match pod anti-affinity rules. preemption: 0\/2 nodes are available: 2 No preemption victims found for incoming pod..<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac \uc2e4\ud589\uc911\uc778 \ub178\ub4dc\ub294 podAntiAffinity \uc124\uc815\uc73c\ub85c \ud30c\ub4dc\uac00 \uc2e4\ud589\ub418\uae30 \uc801\ud569\ud558\uc9c0 \uc54a\ub2e4\ub294 \uba54\uc2dc\uc9c0\uc785\ub2c8\ub2e4. \ud30c\ub4dc\uac00 \u2018Pending\u2019 \uc0c1\ud0dc\uc774\uba74 \uce74\ud39c\ud130\uac00 \ud574\ub2f9 \ud30c\ub4dc\uc758 \uc870\uac74\uc744 \ud655\uc778\ud558\uc5ec \uc0c8\ub85c\uc6b4 \ub178\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. \uc870\uae08 \uae30\ub2e4\ub9ac\uba74 \uce74\ud39c\ud130\uac00 \uc0c8\ub85c\uc6b4 \ub178\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k get pod -o wide\nNAME                     READY   STATUS    RESTARTS   AGE     IP              NODE                                               NOMINATED NODE   READINESS GATES\nhttpd-77d4584879-6l5bp   1\/1     Running   0          8m27s   10.110.37.91    ip-10-110-47-109.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nhttpd-77d4584879-r4l29   1\/1     Running   0          8m27s   10.110.28.221   ip-10-110-24-222.ap-southeast-1.compute.internal   &lt;none>           &lt;none>\nhttpd-77d4584879-rbchf   1\/1     Running   0          6m27s   10.110.47.139   ip-10-110-47-47.ap-southeast-1.compute.internal    &lt;none>           &lt;none><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c 3\uac1c\uc758 \ud30c\ub4dc\uac00 \uc11c\ub85c \ub2e4\ub978 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">eks-node-viewer\ub85c \ud655\uc778\ud558\uba74 \uac00\uc7a5 \ub9c8\uc9c0\ub9c9\uc5d0 \uc2e4\ud589\ud55c \ub178\ub4dc\ub294 t3.micro, \uac00\uc7a5 \ube44\uc6a9\uc774 \uc800\ub834\ud55c \ub178\ub4dc\ub97c \uc2e4\ud589\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc2e4\ud589\ub418\ub294 httpd \ud30c\ub4dc\uc758 \uc790\uc6d0 \uc694\uccad\ub7c9(request)\uc774 \uc124\uc815\uc774 \uc5c6\uc5b4 \uac00\uc7a5 \uc791\uc740 \ub178\ub4dc\uc5d0 \uc2e4\ud589\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/N_knYaOA_H74a8yEow1Qck3q0fZCjnvzY6Vu9xAjfbsWUkt5t9YpzQXsHYKL0RWFxseQMtxU4RyANUTB5bJEHRcD41-MilJylkhH4Iv9e4gXvWJUhxb14C3DNXEvbdXFzYc7QCgPSsuIgZmuYxYQS-8\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub85c \u2018topologySpreadConstraints\u2019 \uc124\uc815\uc744 \uc0ac\uc6a9\ud558\uba74 \uc11c\ub85c \ub2e4\ub978 \uac00\uc6a9\uc874(AZ)\uc5d0 \ubc30\uce58\ub41c \ub178\ub4dc\uc5d0 \ud30c\ub4dc\uac00 \ubc30\ud3ec\ub429\ub2c8\ub2e4. \ub178\ub4dc \ubfd0\ub9cc \uc544\ub2c8\ub77c AZ\uc758 \uac00\uc6a9\uc131 \ubcf4\uc7a5\uc774 \ud544\uc694\ud558\uba74 \uc11c\ub85c \ub2e4\ub978 AZ\uc5d0 \ubc30\uce58\ub41c \ub178\ub4dc\uc5d0 \ubc30\ud3ec\ub429\ub2c8\ub2e4. \uc544\ub798 \uc124\uc815\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">topologySpreadConstraints:\n- maxSkew: 1\n  topologyKey: topology.kubernetes.io\/zone\n  whenUnsatisfiable: DoNotSchedule\n  labelSelector:\n    matchLabels:\n      app: dive-backend-admin-api-prod<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\uc2a4\ud140 \ud5ec\ub984 \ucc28\ud2b8\ub85c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubc30\ud3ec\ud558\ub294 \uacbd\uc6b0 Pod Anti-Affinity \ub300\uc2e0 \u2018topologySpreadConstraints\u2019 \uc124\uc815\uc744 \uc0ac\uc6a9\ud558\uba74 \ub3d9\uc77c\ud558\uac8c \uc11c\ub85c \ub2e4\ub978 AZ\uc5d0 \ubc30\ud3ec\ub41c \ub178\ub4dc\uc5d0 \ud30c\ub4dc\ub97c \ubc30\ud3ec \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \uc2e4\uc2b5\uc774 \uc885\ub8cc\ub418\uc5b4 httpd \ub514\ud50c\ub85c\uc774\uba3c\ud2b8\ub97c \uc0ad\uc81c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ (\u2388 |switch-singapore-test:default) k delete deployments.apps httpd\ndeployment.apps \"httpd\" deleted<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc0c1\uc73c\ub85c \uc774\ubc88 \uc7a5\uc5d0\uc11c \ud30c\ub4dc\uc758 \uc2a4\ucf00\uc904\ub9c1\uc744 \ubcf4\ub2e4 \uc138\ubc00\ud558\uac8c \ud560 \uc218 \uc788\ub294 Taint, Toleration, Node\/Pod Affinity \uc124\uc815\uc744 \uc2e4\uc2b5\uc73c\ub85c \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\ud574\ub2f9 \uae30\uc220 \ube14\ub85c\uadf8\uc5d0 \uc9c8\ubb38\uc774 \uc788\uc73c\uc2dc\uba74 \uc5b8\uc81c\ub4e0\uc9c0 \ubb38\uc758\ud574 \uc8fc\uc138\uc694. \uc9c1\uc811 \ub2f5\ubcc0\ud574 \ub4dc\ub9bd\ub2c8\ub2e4.<br>k8sqna@jennifersoft.com<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:11px\">1.&nbsp;\ubcf4\ub2e4 \uc790\uc138\ud55c \uc0ac\ud56d\uc740 kubecost \uc7a5\uc5d0\uc11c \uc2e4\uc2b5\uc73c\ub85c \ud655\uc778\ud569\ub2c8\ub2e4.<br>2.&nbsp;\u2018topologySpreadConstraints\u2019 \uc124\uc815\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc11c\ub85c \ub2e4\ub978 \uac00\uc6a9\uc874(AZ)\uc5d0 \ud30c\ub4dc\uac00 \ubc30\ud3ec\ub418\ub3c4\ub85d \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ub178\ub4dc \ubfd0\ub9cc \uc544\ub2c8\ub77c AZ\uc758 \uac00\uc6a9\uc131\uc744 \ubcf4\uc7a5\ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"\uc774\ubc88 \uc7a5\uc740 \ud30c\ub4dc \uc2a4\ucf00\uc904\ub9c1\uc744 \ubcf4\ub2e4 \uc138\ubc00\ud558\uac8c \ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubd05\ub2c8\ub2e4. \uc8fc\uc694 \ub0b4\uc6a9 \uc11c\ube44\uc2a4 \uc548\uc815\uc131\uc744 \uc704\ud558\uc5ec \ud30c\ub4dc \uac04 \uc2e4\ud589 \uac00\ub2a5\ud55c \ub178\ub4dc\ub97c \uc11c\ub85c&#8230;","protected":false},"author":34,"featured_media":12809,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[386],"tags":[296,238,299,144,294,55,256,237,257,316],"class_list":["post-12799","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","tag-aws-eks","tag-k8s","tag-k8sedu","tag-kubernetes","tag-msa","tag-55","tag-256","tag-237","tag-257","tag-316"],"acf":[],"_links":{"self":[{"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/posts\/12799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/comments?post=12799"}],"version-history":[{"count":3,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/posts\/12799\/revisions"}],"predecessor-version":[{"id":12810,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/posts\/12799\/revisions\/12810"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/media\/12809"}],"wp:attachment":[{"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/media?parent=12799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/categories?post=12799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jennifersoft.com\/ko\/wp-json\/wp\/v2\/tags?post=12799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}