{"id":5048,"date":"2021-10-05T17:12:46","date_gmt":"2021-10-05T09:12:46","guid":{"rendered":"http:\/\/blog.ywdevops.cn\/?p=5048"},"modified":"2026-01-06T18:29:46","modified_gmt":"2026-01-06T10:29:46","slug":"service-2","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2021\/10\/05\/service-2\/","title":{"rendered":"k8s\u4e4bservice\u4e0eingress"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Service\u662fKubernetes\u7684\u6838\u5fc3\u6982\u5ff5\uff0c\u901a\u8fc7\u521b\u5efaService\uff0c\u53ef\u4ee5\u4e3a\u4e00\u7ec4\u5177\u6709\u76f8\u540c\u529f\u80fd\u7684\u5bb9\u5668\u5e94\u7528\u63d0\u4f9b\u4e00\u4e2a\u7edf\u4e00\u7684\u5165\u53e3\u5730\u5740\uff0c\u5e76\u4e14\u5c06\u8bf7\u6c42\u8d1f\u8f7d\u5206\u53d1\u5230\u540e\u7aef\u7684\u5404\u4e2a\u5bb9\u5668\u5e94\u7528\u4e0a <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service\u7528\u4e8e\u4e3a\u4e00\u7ec4\u63d0\u4f9b\u670d\u52a1\u7684Pod\u62bd\u8c61\u4e00\u4e2a\u7a33\u5b9a\u7684\u7f51\u7edc\u8bbf\u95ee\u5730\u5740\uff0c\u662fKubernetes\u5b9e\u73b0\u5fae\u670d\u52a1\u7684\u6838\u5fc3\u6982\u5ff5\u3002\u901a\u8fc7Service\u7684\u5b9a\u4e49\u8bbe\u7f6e\u7684\u8bbf\u95ee\u5730\u5740\u662fDNS\u57df\u540d\u683c\u5f0f\u7684\u670d\u52a1\u540d\u79f0\uff0c\u5bf9\u4e8e\u5ba2\u6237\u7aef\u5e94\u7528\u6765\u8bf4\uff0c\u7f51\u7edc\u8bbf\u95ee\u65b9\u5f0f\u5e76\u6ca1\u6709\u6539\u53d8\uff08DNS\u57df\u540d\u7684\u4f5c\u7528\u7b49\u4ef7\u4e8e\u4e3b\u673a\u540d\u3001\u4e92\u8054\u7f51\u57df\u540d\u6216IP\u5730\u5740\uff09\u3002Service\u8fd8\u63d0\u4f9b\u4e86\u8d1f\u8f7d\u5747\u8861\u5668\u529f\u80fd\uff0c\u5c06\u5ba2\u6237\u7aef\u8bf7\u6c42\u8d1f\u8f7d\u5206\u53d1\u5230\u540e\u7aef\u63d0\u4f9b\u5177\u4f53\u670d\u52a1\u7684\u5404\u4e2aPod\u4e0a\uff0cService\u5b9e\u73b0\u7684\u662f\u5fae\u670d\u52a1\u67b6\u6784\u4e2d\u7684\u51e0\u4e2a\u6838\u5fc3\u529f\u80fd\uff1a<strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u5168\u81ea\u52a8\u670d\u52a1\u6ce8\u518c\uff0c\u670d\u52a1\u53d1\u73b0\uff0c\u670d\u52a1\u8d1f\u8f7d\u5747\u8861<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">YAML\u683c\u5f0f\u7684Service\u5b9a\u4e49\u6587\u4ef6\u7684\u5b8c\u6574\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"806\" height=\"733\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/54.png\" alt=\"\" class=\"wp-image-5049\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/54.png 806w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/54-300x273.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/54-768x698.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/54-600x546.png 600w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u4e00\u3001 Service\u7684\u57fa\u672c\u7528\u6cd5\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u5728\u547d\u540d\u7a7a\u95f4update\u4e0a\u521b\u5efa2\u4e2a\u526f\u672c\u7684nginx\u5e94\u7528\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"741\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/55.png\" alt=\"\" class=\"wp-image-5051\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/55.png 937w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/55-300x237.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/55-768x607.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/55-600x474.png 600w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u6839\u636e\u5bb9\u5668\u6807\u7b7e\u67e5\u770b\u5bb9\u5668\u7684PodIP\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"963\" height=\"441\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/56.png\" alt=\"\" class=\"wp-image-5052\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/56.png 963w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/56-300x137.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/56-768x352.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/56-600x275.png 600w\" sizes=\"auto, (max-width: 963px) 100vw, 963px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u96c6\u7fa4\u5185\u90e8\u76f4\u63a5\u901a\u8fc7\u4e24\u4e2apodIP\u5373\u53ef\u8bbf\u95ee\u670d\u52a1\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"790\" height=\"311\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/57.png\" alt=\"\" class=\"wp-image-5053\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/57.png 790w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/57-300x118.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/57-768x302.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/57-600x236.png 600w\" sizes=\"auto, (max-width: 790px) 100vw, 790px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u76f4\u63a5\u901a\u8fc7Pod\u7684IP\u5730\u5740\u548c\u7aef\u53e3\u53f7\u53ef\u4ee5\u8bbf\u95ee\u5230\u5bb9\u5668\u5e94\u7528\u5185\u7684\u670d\u52a1\uff0c\u4f46\u662fPod\u7684IP\u5730\u5740\u662f<strong>\u4e0d\u53ef\u9760\u7684<\/strong>\uff0c\u4f8b\u5982\u5f53Pod\u6240\u5728\u7684Node\u53d1\u751f\u6545\u969c\u65f6\uff0cPod\u5c06\u88abKubernetes\u91cd\u65b0\u8c03\u5ea6\u5230\u53e6\u4e00\u4e2aNode\uff0cPod\u7684IP\u5730\u5740\u5c06\u53d1\u751f\u53d8\u5316\u3002\u66f4\u91cd\u8981\u7684\u662f\uff0c\u5982\u679c\u5bb9\u5668\u5e94\u7528\u672c\u8eab\u662f\u5206\u5e03\u5f0f\u7684\u90e8\u7f72\u65b9\u5f0f\uff0c\u901a\u8fc7\u591a\u4e2a\u5b9e\u4f8b\u5171\u540c\u63d0\u4f9b\u670d\u52a1\uff0c\u5c31\u9700\u8981\u5728\u8fd9\u4e9b\u5b9e\u4f8b\u7684\u524d\u7aef\u8bbe\u7f6e\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668\u6765\u5b9e\u73b0\u8bf7\u6c42\u7684\u5206\u53d1\u3002Kubernetes\u4e2d\u7684<strong>Service\u5c31\u662f\u7528\u4e8e\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\u7684\u6838\u5fc3\u7ec4\u4ef6<\/strong>\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\u3001\u521b\u5efaservice:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u8f91service\u7684yaml\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"797\" height=\"300\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/58.png\" alt=\"\" class=\"wp-image-5054\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/58.png 797w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/58-300x113.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/58-768x289.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/58-600x226.png 600w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\uff1a\u4e0a\u56fe\u4e2d8081\u8868\u793aservice\u7684\u7aef\u53e3\uff0ctargetPort\u8868\u793a\u5bb9\u5668\u5185\u90e8\u7aef\u53e3\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6etargetPort\uff0c\u9ed8\u8ba4\u7684targetPort\u7aef\u53e3\u4e0eservice\u7aef\u53e3\u76f8\u540c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u8be5service\u5e76\u67e5\u770b\u8be5service\u7684IP\u5730\u5740\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"893\" height=\"226\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/59.png\" alt=\"\" class=\"wp-image-5055\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/59.png 893w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/59-300x76.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/59-768x194.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/59-600x152.png 600w\" sizes=\"auto, (max-width: 893px) 100vw, 893px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u4e0b\u6765\u901a\u8fc7service\u7684IP\u548c\u7aef\u53e3\u5728\u4efb\u610f\u8282\u70b9\u5373\u53ef\u8bbf\u95ee\u670d\u52a1\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"339\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/60.png\" alt=\"\" class=\"wp-image-5056\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/60.png 807w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/60-300x126.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/60-768x323.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/60-600x252.png 600w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u901a\u8fc7service\u7684IP\u548c\u7aef\u53e3\u8bbf\u95ee\u4f1a\u88ab\u81ea\u52a8\u8d1f\u8f7d\u5206\u53d1\u5230\u540e\u9762\u7684\u4e24\u4e2apod\u4e0a\uff0c \u76ee\u524dKubernetes \u63d0\u4f9b\u4e86\u4e24\u79cd\u8d1f\u8f7d\u5206\u53d1\u7b56\u7565\uff1aRoundRobin\u548cSessionAffinity\uff0c\u5177\u4f53\u8bf4\u660e\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> RoundRobin\uff1a\u8f6e\u8be2\u6a21\u5f0f\uff0c\u5373\u8f6e\u8be2\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230\u540e\u7aef\u7684\u5404\u4e2aPod \u4e0a\u3002 <\/li>\n\n\n\n<li> SessionAffinity\uff1a\u57fa\u4e8e\u5ba2\u6237\u7aefIP\u5730\u5740\u8fdb\u884c\u4f1a\u8bdd\u4fdd\u6301\u7684\u6a21\u5f0f\uff0c\u5373\u7b2c 1\u6b21\u5c06\u67d0\u4e2a\u5ba2\u6237\u7aef\u53d1\u8d77\u7684\u8bf7\u6c42\u8f6c\u53d1\u5230\u540e\u7aef\u7684\u67d0\u4e2aPod\u4e0a\uff0c\u4e4b\u540e\u4ece\u76f8\u540c\u7684\u5ba2\u6237\u7aef\u53d1\u8d77\u7684\u8bf7\u6c42\u90fd\u5c06\u88ab\u8f6c\u53d1\u5230\u540e\u7aef\u76f8\u540c\u7684Pod\u4e0a\u3002 <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cKubernetes\u91c7\u7528RoundRobin\u6a21\u5f0f\u5bf9\u5ba2\u6237\u7aef\u8bf7\u6c42\u8fdb\u884c\u8d1f\u8f7d\u5206\u53d1\uff0c\u4f46\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6eservice.spec.sessionAffinity=ClientIP\u6765\u542f\u7528SessionAffinity\u7b56\u7565\u3002\u8fd9\u6837\uff0c\u540c\u4e00\u4e2a\u5ba2\u6237\u7aefIP\u53d1\u6765\u7684\u8bf7\u6c42\u5c31\u4f1a\u88ab\u8f6c\u53d1\u5230\u540e\u7aef\u56fa\u5b9a\u7684\u67d0\u4e2aPod\u4e0a\u4e86\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7Service\u7684\u5b9a\u4e49\uff0cKubernetes\u5b9e\u73b0\u4e86\u4e00\u79cd\u5206\u5e03\u5f0f\u5e94\u7528\u7edf\u4e00\u5165\u53e3\u7684\u5b9a\u4e49\u548c\u8d1f\u8f7d\u5747\u8861\u673a\u5236\u3002Service\u8fd8\u53ef\u4ee5\u8fdb\u884c\u5176\u4ed6\u7c7b\u578b\u7684\u8bbe\u7f6e\uff0c\u4f8b\u5982\u8bbe\u7f6e\u591a\u4e2a\u7aef\u53e3\u53f7\u3001\u76f4\u63a5\u8bbe\u7f6e\u4e3a\u96c6\u7fa4\u5916\u90e8\u670d\u52a1\uff0c\u6216\u5b9e\u73b0\u4e3aHeadless Service\uff08\u65e0\u5934 \u670d\u52a1\uff09\u6a21\u5f0f <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2aService\u5bf9\u5e94\u7684\u201c\u540e\u7aef\u201d\u7531Pod\u7684IP\u548c\u5bb9\u5668\u7aef\u53e3\u53f7\u7ec4\u6210\uff0c\u5373\u4e00\u4e2a\u5b8c\u6574\u7684\u201cIP\uff1aPort\u201d\u8bbf\u95ee\u5730\u5740\uff0c\u8fd9\u5728Kubernetes\u7cfb\u7edf\u4e2d\u53eb\u4f5cEndpoint\uff0c\u901a\u8fc7kubectl describe svc service-nginx -n update\u53ef\u4ee5\u67e5\u770b\u540e\u7aef\u670d\u52a1\u5217\u8868<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3\u3001 \u591a\u7aef\u53e3Service \uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6709\u65f6\u4e00\u4e2a\u5bb9\u5668\u5e94\u7528\u4e5f\u53ef\u80fd\u63d0\u4f9b\u591a\u4e2a\u7aef\u53e3\u7684\u670d\u52a1\uff0c\u90a3\u4e48\u5728Service\u7684\u5b9a \u4e49\u4e2d\u4e5f\u53ef\u4ee5\u76f8\u5e94\u5730\u8bbe\u7f6e\u4e3a\u5c06\u591a\u4e2a\u7aef\u53e3\u5bf9\u5e94\u5230\u591a\u4e2a\u5e94\u7528\u670d\u52a1\u3002\u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0cService\u8bbe\u7f6e\u4e86\u4e24\u4e2a\u7aef\u53e3\u53f7\uff0c\u5e76\u4e14\u4e3a\u6bcf\u4e2a\u7aef\u53e3\u53f7\u90fd\u8fdb\u884c\u4e86\u547d\u540d\uff1a <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"431\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/61.png\" alt=\"\" class=\"wp-image-5057\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/61.png 754w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/61-300x171.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/61-600x343.png 600w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u6709\u4e00\u79cd\u60c5\u51b5\u662f\u540c\u4e00\u4e2a\u7aef\u53e3\u5bf9\u5e94\u4e0d\u540c\u7684\u534f\u8bae\uff0c\u4f8b\u598253\u7aef\u53e3\uff0c\u5373\u53ef\u5bf9\u5e94TCP\uff0c\u4e5f\u53ef\u4ee5\u5bf9\u5e94UDP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001service\u901a\u8fc7\u540d\u79f0\u8bbf\u95ee\u76ee\u6807\u7aef\u53e3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(1)\u3001\u5b9a\u4e49pod\u6587\u4ef6\uff0c\u5c06nginx\u7aef\u53e3\u6539\u4e3a8030\uff0c\u5b9a\u4e49\u7aef\u53e3\u540d\u4e3anginx-port\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"490\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/1-2.png\" alt=\"\" class=\"wp-image-10905\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/1-2.png 710w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/1-2-300x207.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/1-2-600x414.png 600w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(2)\u3001\u67e5\u770bpod\u7684IP\u5730\u5740\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"125\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/2-2.png\" alt=\"\" class=\"wp-image-10906\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/2-2.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/2-2-300x53.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/2-2-600x106.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(3)\u3001\u901a\u8fc7IP\u548c\u7aef\u53e3\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"295\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/4-1.png\" alt=\"\" class=\"wp-image-10909\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/4-1.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/4-1-300x125.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/4-1-600x250.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(4)\u3001\u5b9a\u4e49service\u6587\u4ef6\uff0c\u5e76\u5728targetPort\u4e2d\u6307\u5b9a\u76ee\u6807\u7aef\u53e3\u540d\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"283\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/5-2.png\" alt=\"\" class=\"wp-image-10911\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/5-2.png 710w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/5-2-300x120.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/5-2-600x239.png 600w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(5)\u3001\u67e5\u770bservice\u7684IP\u4ee5\u53ca\u7aef\u53e3\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"139\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/6-2.png\" alt=\"\" class=\"wp-image-10913\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/6-2.png 710w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/6-2-300x59.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/6-2-600x117.png 600w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(6)\u3001\u901a\u8fc7service\u7684IP\u548c\u7aef\u53e3\u8fdb\u884c\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"283\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/7-2.png\" alt=\"\" class=\"wp-image-10914\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/7-2.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/7-2-300x120.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/12\/7-2-600x240.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\uff1a\u901a\u8fc7\u7aef\u53e3\u540d\u7684\u65b9\u5f0f\u8bbf\u95eepod\u7684\u597d\u5904\u662f\uff0c\u65e0\u8bbapod\u7684\u7aef\u53e3\u5982\u4f55\u53d8\u5316\uff0c\u90fd\u4e0d\u9700\u8981\u91cd\u65b0\u5b9a\u4e49service\uff0c\u53ea\u8981\u7aef\u53e3\u540d\u4e0d\u53d8\u5373\u53ef<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u4e8c\u3001Service\u7684\u8d1f\u8f7d\u5747\u8861\u673a\u5236<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u4e00\u4e2aService\u5bf9\u8c61\u5728Kubernetes\u96c6\u7fa4\u4e2d\u88ab\u5b9a\u4e49\u51fa\u6765\u65f6\uff0c\u96c6\u7fa4\u5185\u7684\u5ba2\u6237\u7aef\u5e94\u7528\u5c31\u53ef\u4ee5\u901a\u8fc7\u670d\u52a1IP\u8bbf\u95ee\u5230\u5177\u4f53\u7684Pod\u5bb9\u5668\u63d0\u4f9b\u7684\u670d\u52a1\u4e86\u3002<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>\u4ece\u670d\u52a1IP\u5230\u540e\u7aefPod\u7684\u8d1f\u8f7d\u5747\u8861\u673a\u5236\uff0c\u5219\u662f\u7531\u6bcf\u4e2aNode\u4e0a\u7684kube-proxy\u8d1f\u8d23\u5b9e\u73b0\u7684<\/strong><\/mark><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">(iptables\/ipvs\u89c4\u5219)<\/mark><\/strong>\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"386\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/10.png\" alt=\"\" class=\"wp-image-19443\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/10.png 735w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/10-300x158.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/10-600x315.png 600w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u8282\u5bf9kube-proxy\u7684\u4ee3\u7406\u6a21\u5f0f\u3001\u4f1a\u8bdd\u4fdd\u6301\u673a\u5236\u548c\u6d41\u91cf\u7b56\u7565\u8fdb\u884c\u8bf4\u660e\u3002<\/p>\n\n\n\n<p class=\"has-normal-font-size wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">1<strong>\u3001kube-proxy\u7684\u4ee3\u7406\u6a21\u5f0f<\/strong>\uff1a<\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u524dkube-proxy\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u4ee3\u7406\u6a21\u5f0f\uff08\u901a\u8fc7\u542f\u52a8\u53c2\u6570&#8211;proxy-mode\u8bbe\u7f6e\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(1)\u3001iptables\u6a21\u5f0f(\u9002\u7528\u4e8eLinux\u7cfb\u7edf)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">iptables\u6a21\u5f0f\u4e0b\uff0ckube-proxy\u901a\u8fc7\u8bbe\u7f6eLinux Kernel\u7684iptables\u89c4\u5219\u5b9e\u73b0\u4eceservice\u5230\u540e\u7aefpod\u7684\u8d1f\u8f7d\u5206\u53d1\u89c4\u5219,\u7531\u4e8e\u4f7f\u7528Netfilter\u673a\u5236\uff0c\u6d41\u91cf\u8f6c\u53d1\u6548\u7387\u5f88\u9ad8\uff0c\u5f88\u7a33\u5b9a\uff0c\u4f46\u662fiptables\u89c4\u5219\u4e0d\u5177\u5907\u540e\u7aef\u5065\u5eb7\u68c0\u67e5\u529f\u80fd\uff0c\u5982\u679c\u540e\u7aefpod\u6545\u969c\uff0c\u8bf7\u6c42\u5c31\u4f1a\u5931\u8d25\uff0c\u56e0\u6b64\u540e\u7aefpod\u9700\u8981\u81ea\u884c\u505a\u5065\u5eb7\u68c0\u67e5\uff0ckubernetes\u4f1a\u4fdd\u8bc1\u53ea\u6709\u5904\u4e8eReady\u72b6\u6001\u7684pod\u624d\u4f1a\u6dfb\u52a0\u5230\u540e\u7aef\u5217\u8868\u4e2d\uff0c\u6bcf\u6b21\u65b0\u5efaservice\u6216\u8005\u540e\u7aefPod\u53d1\u751f\u53d8\u5316\uff0ckube-proxy\u90fd\u4f1a\u91cd\u65b0\u5237\u65b0iptables\u89c4\u5219\uff0c\u5982\u679c\u5927\u89c4\u6a21\u96c6\u7fa4\uff0c\u4f1a\u964d\u4f4e\u6027\u80fd\uff0c\u53ef\u901a\u8fc7kube-proxy\u7684\u914d\u7f6e\u8d44\u6e90\u5bf9\u8c61kubeproxyconfiguration\u4e2d\u914d\u7f6e\u5982\u4e0b\u53c2\u6570\u8c03\u6574iptables\u89c4\u5219\u540c\u6b65\u884c\u4e3a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"140\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/11.png\" alt=\"\" class=\"wp-image-19447\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/11.png 646w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/11-300x65.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/11-600x130.png 600w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>minSyncPeriod\uff1a\u540c\u6b65iptables\u89c4\u5219\u7684\u6700\u77ed\u65f6\u95f4\u95f4\u9694\uff0c\u9ed8\u8ba4\u4e3a1,\u5982\u679c\u914d\u7f6e0\u8868\u793a\u7acb\u5373\u540c\u6b65<\/li>\n\n\n\n<li>syncPeriod\uff1a\u540c\u6b65\u65f6\u95f4\u95f4\u9694\uff0c\u7528\u4e8e\u4e0eservice\u548cendpoint\u53d8\u5316\u65e0\u5173\u7684iptables\u89c4\u5219\u540c\u6b65<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(2)\u3001IPVS\u6a21\u5f0f(\u9002\u7528Linux\u7cfb\u7edf)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728ipvs\u6a21\u5f0f\u4e0b\uff0ckube-proxy\u901a\u8fc7Linux \u5185\u6838\u7684netlink\u63a5\u53e3\u8bbe\u7f6eipvs\u89c4\u5219\uff0cipvs\u4f7f\u7528\u4e86\u6563\u5217\u8868\u4f5c\u4e3a\u5e95\u5c42\u6570\u636e\u7ed3\u6784\uff0c\u5e76\u4e14\u5de5\u4f5c\u5728\u5185\u6838\u7a7a\u95f4\uff0c\u56e0\u6b64ipvs\u6bd4iptables\u8f6c\u53d1\u6027\u80fd\u66f4\u9ad8\uff0c\u5ef6\u8fdf\u66f4\u4f4e\uff0c\u540c\u6b65service\u548cendpoint\u89c4\u5219\u7684\u6548\u7387\u66f4\u9ad8\uff0c\u652f\u6301\u66f4\u9ad8\u7684\u7f51\u7edc\u541e\u5410\u91cf\uff0cipvs\u6a21\u5f0f\u9700\u8981\u5728\u5728Linux Kernel\u5f00\u542fIPVS\u5185\u6838\u6a21\u5757\uff0c\u5982\u679c\u68c0\u6d4b\u4e3a\u6ca1\u6709\u5f00\u542f\u4f1a\u81ea\u52a8\u5207\u6362\u5230iptables\u6a21\u5757<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ipvs\u6a21\u5f0f\u652f\u6301\u66f4\u591a\u7684\u8d1f\u8f7d\u5747\u8861\u7b56\u7565\uff0c\u5982\u4e0b\u6240\u8ff0\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rr\uff1around-robin\uff0c\u8f6e\u8be2\u3002<\/li>\n\n\n\n<li>wrr\uff1a\u52a0\u6743\u8f6e\u8be2<\/li>\n\n\n\n<li>lc\uff1aleast connection\uff0c\u6700\u5c0f\u8fde\u63a5\u6570\u3002<\/li>\n\n\n\n<li>wlc\uff1a\u52a0\u6743\u6700\u5c0f\u8fde\u63a5\u6570<\/li>\n\n\n\n<li>dh\uff1adestination hashing\uff0c\u76ee\u7684\u5730\u5740\u54c8\u5e0c\u3002<\/li>\n\n\n\n<li>sh\uff1asource hashing\uff0c\u6e90\u5730\u5740\u54c8\u5e0c<\/li>\n\n\n\n<li>sed\uff1ashortest expected delay\uff0c\u6700\u77ed\u671f\u671b\u5ef6\u65f6<\/li>\n\n\n\n<li>nq\uff1anever queue\uff0c\u6c38\u4e0d\u6392\u961f<\/li>\n\n\n\n<li>lblc\uff1a\u57fa\u4e8e\u5730\u57df\u7684\u6700\u5c0f\u8fde\u63a5\u6570<\/li>\n\n\n\n<li>lblcr\uff1a\u5e26\u526f\u672c\u7684\u57fa\u4e8e\u5730\u57df\u7684\u6700\u5c0f\u8fde\u63a5\u6570<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(3)\u3001kernelspace\u6a21\u5f0f(\u9002\u7528\u4e8ewindows\u7cfb\u7edf)<\/p>\n\n\n\n<p class=\"has-normal-font-size wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">2\u3001\u4f1a\u8bdd\u4fdd\u6301\uff1a<\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> Service\u8d44\u6e90\u8fd8\u652f\u6301Session affinity\uff08\u7c98\u6027\u4f1a\u8bdd\uff09\u673a\u5236\uff0c\u53ef\u4ee5\u5c06\u6765\u81ea\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u7684\u8bf7\u6c42\u59cb\u7ec8\u8f6c\u53d1\u81f3\u540c\u4e00\u4e2a\u540e\u7aef\u7684Pod\u5bf9\u8c61\uff0c\u8fd9\u610f\u5473\u7740\u5b83\u4f1a\u5f71\u54cd\u8c03\u5ea6\u7b97\u6cd5\u7684\u6d41\u91cf\u5206\u53d1\u529f\u7528\uff0c\u8fdb\u800c\u964d\u4f4e\u5176\u8d1f\u8f7d\u5747\u8861\u7684\u6548\u679c\u3002\u56e0\u6b64\uff0c\u5f53\u5ba2\u6237\u7aef\u8bbf\u95eePod\u4e2d\u7684\u5e94\u7528\u7a0b\u5e8f\u65f6\uff0c\u5982\u679c\u6709\u57fa\u4e8e\u5ba2\u6237\u7aef\u8eab\u4efd\u4fdd\u5b58\u67d0\u4e9b\u79c1\u6709\u4fe1\u606f\uff0c\u5e76\u57fa\u4e8e\u8fd9\u4e9b\u79c1\u6709\u4fe1\u606f\u8ffd\u8e2a\u7528\u6237\u7684\u6d3b\u52a8\u7b49\u4e00\u7c7b\u7684\u9700\u6c42\u65f6\uff0c\u90a3\u4e48\u5e94\u8be5\u542f\u7528session affinity\u673a\u5236\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service affinity\u7684\u6548\u679c\u4ec5\u4ec5\u5728\u4e00\u6bb5\u65f6\u95f4\u5185\u751f\u6548\uff0c\u9ed8\u8ba4\u503c\u4e3a10800\u79d2(3\u4e2a\u5c0f\u65f6)\uff0c\u8d85\u51fa\u65f6\u957f\uff0c\u5ba2\u6237\u7aef\u518d\u6b21\u8bbf\u95ee\u4f1a\u91cd\u65b0\u8c03\u5ea6\u3002\u8be5\u673a\u5236\u4ec5\u80fd\u57fa\u4e8e\u5ba2\u6237\u7aefIP\u5730\u5740\u8bc6\u522b\u5ba2\u6237\u7aef\u8eab\u4efd\uff0c\u5b83\u4f1a\u5c06\u7ecf\u7531\u540c\u4e00\u4e2aNAT\u670d\u52a1\u5668\u8fdb\u884c\u539f\u5730\u5740\u8f6c\u6362\u7684\u6240\u6709\u5ba2\u6237\u7aef\u8bc6\u522b\u4e3a\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\uff0c\u7531\u6b64\u53ef\u77e5\uff0c\u5176\u8c03\u5ea6\u7684\u6548\u679c\u5e76\u4e0d\u7406\u60f3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">service\u901a\u8fc7 sessionAffinity \u5b57\u6bb5\u6765\u5b9e\u73b0pod\u4f1a\u8bdd\u4fdd\u6301\uff0c \u652f\u6301ClientIP\u548cNone \u4e24\u79cd\u65b9\u5f0f\uff0c\u9ed8\u8ba4\u662fNone\uff08\u968f\u673a\u8c03\u5ea6\uff09 ClientIP\u662f\u6765\u81ea\u4e8e\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u7684\u8bf7\u6c42\u8c03\u5ea6\u5230\u540c\u4e00\u4e2apod\u4e2d \uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"647\" height=\"387\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/13.png\" alt=\"\" class=\"wp-image-19455\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/13.png 647w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/13-300x179.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/13-600x359.png 600w\" sizes=\"auto, (max-width: 647px) 100vw, 647px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u4e09\u3001 \u4ece\u96c6\u7fa4\u5916\u90e8\u8bbf\u95eePod\u6216Service\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8ePod\u548cService\u90fd\u662fKubernetes\u96c6\u7fa4\u8303\u56f4\u5185\u7684\u865a\u62df\u6982\u5ff5\uff0c\u6240\u4ee5\u96c6\u7fa4\u5916\u7684\u5ba2\u6237\u7aef\u7cfb\u7edf\u65e0\u6cd5\u901a\u8fc7Pod\u7684IP\u5730\u5740\u6216\u8005Service\u7684\u865a\u62dfIP\u5730\u5740\u548c\u865a\u62df\u7aef\u53e3\u53f7\u8bbf\u95ee\u5b83\u4eec\u3002\u4e3a\u4e86\u8ba9\u5916\u90e8\u5ba2\u6237\u7aef\u53ef\u4ee5\u8bbf\u95ee\u8fd9\u4e9b\u670d\u52a1\uff0c\u53ef\u4ee5\u5c06Pod\u6216 Service\u7684\u7aef\u53e3\u53f7\u6620\u5c04\u5230\u5bbf\u4e3b\u673a\uff0c\u4ee5\u4f7f\u5ba2\u6237\u7aef\u5e94\u7528\u80fd\u591f\u901a\u8fc7\u7269\u7406\u673a\u8bbf\u95ee\u5bb9\u5668\u5e94\u7528\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1\u3001 \u5c06\u5bb9\u5668\u5e94\u7528\u7684\u7aef\u53e3\u53f7\u6620\u5c04\u5230\u7269\u7406\u673a\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728Pod\u8d44\u6e90\u5b9a\u4e49\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7aef\u53e3\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"777\" height=\"275\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/62.png\" alt=\"\" class=\"wp-image-5059\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/62.png 777w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/62-300x106.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/62-768x272.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/62-600x212.png 600w\" sizes=\"auto, (max-width: 777px) 100vw, 777px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efapod\uff0c\u7136\u540e\u901a\u8fc7\u4efb\u610f\u4e00\u4e2anode\u8282\u70b9\u76848088\u7aef\u53e3\u5373\u53ef\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"383\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/1-1.png\" alt=\"\" class=\"wp-image-5060\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/1-1.png 795w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/1-1-300x145.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/1-1-768x370.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/1-1-600x289.png 600w\" sizes=\"auto, (max-width: 795px) 100vw, 795px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u53ef\u4ee5\u8bbe\u7f6ePod\u7ea7\u522b\u7684hostNetwork=true\uff0c\u8be5Pod\u4e2d\u6240\u6709\u5bb9\u5668\u7684\u7aef\u53e3\u53f7\u90fd\u5c06\u88ab\u76f4\u63a5\u6620\u5c04\u5230\u7269\u7406\u673a\u4e0a\u3002\u5728\u8bbe\u7f6ehostNetwork=true\u65f6\u9700\u8981\u6ce8\u610f\uff0c\u5728\u5bb9\u5668\u7684ports\u5b9a\u4e49\u90e8\u5206\u5982\u679c\u4e0d\u6307\u5b9ahostPort\uff0c\u5219\u9ed8\u8ba4hostPort\u7b49\u4e8e containerPort\uff0c\u5982\u679c\u6307\u5b9a\u4e86hostPort\uff0c\u5219hostPort\u5fc5\u987b\u7b49\u4e8econtainerPort\u7684 \u503c\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"292\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/2-1.png\" alt=\"\" class=\"wp-image-5061\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/2-1.png 764w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/2-1-300x115.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/2-1-600x229.png 600w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u8282\u70b9IP\u548c80\u7aef\u53e3\u5373\u53ef\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"293\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/3-2.png\" alt=\"\" class=\"wp-image-5062\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/3-2.png 799w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/3-2-300x110.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/3-2-768x282.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/3-2-600x220.png 600w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\u3001 \u5c06Service\u7684\u7aef\u53e3\u53f7\u6620\u5c04\u5230\u7269\u7406\u673a\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <\/strong>\u901a\u8fc7\u8bbe\u7f6enodePort\u6620\u5c04\u5230\u7269\u7406\u673a\uff0c\u540c\u65f6\u8bbe\u7f6eService\u7684\u7c7b\u578b\u4e3a NodePort\uff0c\u5982\u56fe\uff1a <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"396\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/4-1.png\" alt=\"\" class=\"wp-image-5065\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/4-1.png 849w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/4-1-300x140.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/4-1-768x358.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/4-1-600x280.png 600w\" sizes=\"auto, (max-width: 849px) 100vw, 849px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u521b\u5efa\u7684service\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"160\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/5-1.png\" alt=\"\" class=\"wp-image-5066\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/5-1.png 876w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/5-1-300x55.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/5-1-768x140.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/5-1-600x110.png 600w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\u5728\u5916\u90e8\u6d4f\u89c8\u5668\u901a\u8fc7\u4efb\u610f\u4e00\u4e2a\u8282\u70b9\u548c\u7aef\u53e3\u90fd\u53ef\u4ee5\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"882\" height=\"345\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/6-1.png\" alt=\"\" class=\"wp-image-5067\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/6-1.png 882w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/6-1-300x117.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/6-1-768x300.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/6-1-600x235.png 600w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u6837\uff0c\u901a\u8fc7\u8be5Service\u7684\u8bbf\u95ee\u4e5f\u5c06\u88ab\u8d1f\u8f7d\u5206\u53d1\u5230\u540e\u7aef\u7684\u591a\u4e2aPod\u4e0a <\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cNode\u7684kube-proxy\u4f1a\u5728\u5168\u90e8\u7f51\u5361\uff080.0.0.0\uff09\u4e0a\u7ed1\u5b9aNodePort\u7aef\u53e3\u53f7\u3002\u4eceKubernetes 1.10\u7248\u672c\u5f00\u59cb\uff0ckube-proxy\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u7279\u5b9a\u7684IP\u5730\u5740\u5c06NodePort\u7ed1\u5b9a\u5230\u7279\u5b9a\u7684\u7f51\u5361\u4e0a\uff0c\u800c\u65e0\u987b\u7ed1\u5b9a\u5728\u5168\u90e8\u7f51\u5361\u4e0a\uff0c\u5176\u8bbe\u7f6e\u65b9\u5f0f\u4e3a\u914d\u7f6e\u542f\u52a8\u53c2\u6570\u201c&#8211;nodeport-addresses\u201d\uff0c\u6307\u5b9a\u9700\u8981\u7ed1\u5b9a\u7684\u7f51\u5361IP\u5730\u5740\uff0c\u591a\u4e2a\u5730\u5740\u4e4b\u95f4\u4f7f\u7528\u9017\u53f7\u5206\u9694\u3002\u4f8b\u5982\u4ec5\u572810.0.0.0\u548c192.168.18.0\u5bf9\u5e94\u7684\u7f51\u5361\u4e0a\u7ed1\u5b9aNodePort\u7aef\u53e3\u53f7\uff0c\u5bf9\u5176\u4ed6IP\u5730\u5740\u5bf9\u5e94\u7684\u7f51\u5361\u4e0d\u4f1a\u8fdb\u884c\u7ed1\u5b9a\uff0c\u914d\u7f6e\u5982\u4e0b: &#8211;nodeport-addresses=10.0.0.0\/8\uff0c192.168.18.0\/24 (\u53ef\u901a\u8fc7kubect edit cm kube-proxy -n kube-system\u67e5\u770bnodeport-addresses\u7684\u914d\u7f6e\u5730\u5740)<\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">NodePort \u9ed8\u8ba4\u8303\u56f4\u662f 30000-32767\uff0c\u53ef\u4ee5\u6839\u636e\u9700\u8981\u8fdb\u884c\u4fee\u6539<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u56db\u3001\u5c06\u5916\u90e8\u670d\u52a1\u5b9a\u4e49\u4e3aService<\/strong>(\u4ece\u96c6\u7fa4\u8bbf\u95ee\u5916\u90e8\u7684\u5e94\u7528)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u666e\u901a\u7684Service\u901a\u8fc7Label Selector\u5bf9\u540e\u7aefEndpoint\u5217\u8868\u8fdb\u884c\u4e86\u4e00\u6b21\u62bd\u8c61\uff0c\u5982\u679c\u540e\u7aef\u7684Endpoint\u4e0d\u662f\u7531Pod\u526f\u672c\u96c6\u63d0\u4f9b\u7684\uff0c\u5219Service\u8fd8\u53ef\u4ee5\u62bd\u8c61\u5b9a\u4e49\u4efb\u610f\u5176\u4ed6\u670d\u52a1\uff0c\u5c06\u4e00\u4e2aKubernetes\u96c6\u7fa4\u5916\u90e8\u7684\u5df2\u77e5\u670d\u52a1\u5b9a\u4e49\u4e3aKubernetes\u5185\u7684\u4e00\u4e2aService\uff0c\u4f9b\u96c6\u7fa4\u5185\u7684\u5176\u4ed6\u5e94\u7528\u8bbf\u95ee\uff0c\u5e38\u89c1\u7684\u5e94\u7528\u573a\u666f\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5df2\u90e8\u7f72\u7684\u4e00\u4e2a\u96c6\u7fa4\u5916\u670d\u52a1\uff0c\u4f8b\u5982\u6570\u636e\u5e93\u670d\u52a1\u3001\u7f13\u5b58\u670d\u52a1\u7b49\uff1b<\/li>\n\n\n\n<li>\u5176\u4ed6Kubernetes\u96c6\u7fa4\u7684\u67d0\u4e2a\u670d\u52a1\uff1b<\/li>\n\n\n\n<li>\u8fc1\u79fb\u8fc7\u7a0b\u4e2d\u5bf9\u67d0\u4e2a\u670d\u52a1\u8fdb\u884cKubernetes\u5185\u7684\u670d\u52a1\u540d\u8bbf\u95ee\u673a\u5236\u7684\u9a8c\u8bc1\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u8fd9\u79cd\u5e94\u7528\u573a\u666f\uff0c\u7528\u6237\u5728\u521b\u5efaService\u8d44\u6e90\u5bf9\u8c61\u65f6\u4e0d\u8bbe\u7f6eLabelSelector\uff08\u540e\u7aefPod\u4e5f\u4e0d\u5b58\u5728\uff09\uff0c\u540c\u65f6\u518d\u5b9a\u4e49\u4e00\u4e2a\u4e0eService\u5173\u8054\u7684Endpoint\u8d44\u6e90\u5bf9\u8c61\uff0c\u5728Endpoint\u4e2d\u8bbe\u7f6e\u5916\u90e8\u670d\u52a1\u7684IP\u5730\u5740\u548c\u7aef\u53e3\u53f7\uff0c\u4e0b\u9762\u4f8b\u5b50\u8868\u793a\u901a\u8fc7service\u8bbf\u95ee\u5916\u90e8\u7684\u540e\u7aef\u670d\u52a1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u9996\u5148\u5728\u670d\u52a1\u5668\u4e0a\u5b89\u88c5Nginx\u670d\u52a1(\u4e0d\u662f\u5728K8S\u96c6\u7fa4\u4e2d)\uff0c\u7aef\u53e3\u4e3a8096\uff0c\u8bbf\u95ee\u7ed3\u679c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"714\" height=\"67\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/2-2.png\" alt=\"\" class=\"wp-image-11422\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/2-2.png 714w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/2-2-300x28.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/2-2-600x56.png 600w\" sizes=\"auto, (max-width: 714px) 100vw, 714px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u5728\u547d\u540d\u7a7a\u95f4gongguan\u4e2d\u5b9a\u4e49service\uff0c\u4e0d\u6307\u5b9alabelselector\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"250\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/1-2.png\" alt=\"\" class=\"wp-image-11420\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/1-2.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/1-2-300x106.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/1-2-600x212.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u5b9a\u4e49\u7684service\uff0c\u6ca1\u6709\u6307\u5b9alabelselector\uff0c\u76ee\u6807\u7aef\u53e3\u4e3a8096\uff0c\u7531\u4e8e\u8fd9\u4e2aservice\u6ca1\u6709labelselector\uff0c\u56e0\u6b64\u4e0d\u4f1a\u521b\u5efa\u76f8\u5173\u7684Endpoints\u5bf9\u8c61\uff0c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u624b\u52a8\u5b9a\u4e49\u540e\u7aef\u670d\u52a1\uff0c\u4e5f\u5c31\u662fEndpoints\uff0c\u540d\u79f0\u4e0eService\u540d\u79f0\u4fdd\u6301\u4e00\u81f4\uff0c\u76ee\u6807\u5730\u5740\u548c\u7aef\u53e3\u6307\u5411\u5916\u90e8\u7684\u5e94\u7528\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"218\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/3-2.png\" alt=\"\" class=\"wp-image-11424\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/3-2.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/3-2-300x92.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/3-2-600x185.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\u610f\uff1a\u540c\u540d\u7684Service\u548cEndpoint\u4f1a\u81ea\u52a8\u5efa\u7acb\u94fe\u63a5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u67e5\u770b\u521b\u5efa\u597d\u7684service\u548cendpoint\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"169\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/4-2.png\" alt=\"\" class=\"wp-image-11425\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/4-2.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/4-2-300x72.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/4-2-600x143.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u901a\u8fc7service\u6765\u8bbf\u95ee\u5916\u90e8\u540e\u7aef\u670d\u52a1\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"77\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/5-2.png\" alt=\"\" class=\"wp-image-11426\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/5-2.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/5-2-300x33.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/5-2-600x65.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u4e94\u3001Kubernetes\u7684\u670d\u52a1\u53d1\u73b0\u673a\u5236<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u670d\u52a1\u53d1\u73b0\u673a\u5236\u6307\u5ba2\u6237\u7aef\u5e94\u7528\u5728\u4e00\u4e2aKubernetes\u96c6\u7fa4\u4e2d\u5982\u4f55\u83b7\u77e5\u540e\u7aef\u670d\u52a1\u7684\u8bbf\u95ee\u5730\u5740\u3002Kubernetes\u63d0\u4f9b\u4e86\u4e24\u79cd\u673a\u5236\u4f9b\u5ba2\u6237\u7aef\u5e94\u7528\u4ee5\u56fa\u5b9a\u7684\u65b9\u5f0f\u83b7\u53d6\u540e\u7aef\u670d\u52a1\u7684\u8bbf\u95ee\u5730\u5740\uff1a\u73af\u5883\u53d8\u91cf\u65b9\u5f0f\u548cDNS\u65b9\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1<strong>\u3001\u73af\u5883\u53d8\u91cf\u65b9\u5f0f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e00\u4e2aPod\u8fd0\u884c\u8d77\u6765\u7684\u65f6\u5019\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u4e3a\u5176\u5bb9\u5668\u8fd0\u884c\u73af\u5883\u6ce8\u5165\u6240\u6709\u96c6\u7fa4\u4e2d\u6709\u6548Service\u7684\u4fe1\u606f\u3002Service\u7684\u76f8\u5173\u4fe1\u606f\u5305\u62ec\u670d\u52a1IP\u3001\u670d\u52a1\u7aef \u53e3 \u53f7 \u3001 \u5404 \u7aef \u53e3 \u53f7 \u76f8 \u5173 \u7684 \u534f \u8bae \u7b49 \uff0c \u901a \u8fc7{SVCNAME}SERVICE_HOST\u548c{SVCNAME}_SERVICE_PORT\u683c\u5f0f \u8fdb\u884c\u8bbe\u7f6e\u3002\u5176\u4e2d\uff0cSVCNAME\u7684\u547d\u540d\u89c4\u5219\u4e3a\uff1a\u5c06Service\u7684name\u5b57\u7b26\u4e32 \u8f6c\u6362\u4e3a\u5168\u5927\u5199\u5b57\u6bcd\uff0c\u5c06\u4e2d\u6a2a\u7ebf\u201c-\u201d\u66ff\u6362\u4e3a\u4e0b\u753b\u7ebf\u201c\u201d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u5f53\u524d\u9ed8\u8ba4\u547d\u540d\u7a7a\u95f4\u4e2d\u7684service\u4fe1\u606f\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"113\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/2-2.png\" alt=\"\" class=\"wp-image-6274\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/2-2.png 703w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/2-2-300x48.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/2-2-600x96.png 600w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2a\u65b0\u7684Pod\u5e76\u8fdb\u5165pod\u5185\u90e8(\u5ba2\u6237\u7aef)\uff0c\u53ef\u4ee5\u770b\u5230\u7cfb\u7edf\u81ea\u52a8\u8bbe\u7f6e\u7684\u73af\u5883\u53d8\u91cf\u4fe1\u606f\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"498\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/3-2.png\" alt=\"\" class=\"wp-image-6276\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/3-2.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/3-2-300x212.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/3-2-600x423.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\u5728\u5ba2\u6237\u7aef(pod\u5185\u90e8)\u53ef\u4ee5\u6839\u636eservice\u76f8\u5173\u73af\u5883\u53d8\u91cf\u89c4\u5219\u8bbf\u95ee\u76ee\u6807\u670d\u52a1\u7684\u5730\u5740\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"63\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/4-2.png\" alt=\"\" class=\"wp-image-6278\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/4-2.png 703w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/4-2-300x27.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/4-2-600x54.png 600w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\u3001DNS\u65b9\u5f0f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service\u4e0d\u4ec5\u5177\u6709\u6807\u51c6\u7f51\u7edc\u534f\u8bae\u7684IP\u5730\u5740\uff0c\u540c\u65f6\u8fd8\u4ee5DNS\u57df\u540d\u5f62\u5f0f\u5b58\u5728\uff0cService\u7684DNS\u57df \u540d\u8868\u793a\u65b9\u6cd5\u4e3a&lt;servicename>.&lt;namespace>.svc.&lt;clusterDomain>\uff0c\u5176\u4e2d servicename\u4e3a\u670d\u52a1\u7684\u540d\u79f0\uff0cnamespace\u4e3a\u5176\u6240\u5728namespace\u7684\u540d\u79f0\uff0c clusterdomain\u4e3aKubernetes\u96c6\u7fa4\u8bbe\u7f6e\u7684\u57df\u540d\u540e\u7f00\uff08\u4f8b\u5982cluster.local\uff09\uff0c \u670d\u52a1\u540d\u79f0\u7684\u547d\u540d\u89c4\u5219\u9075\u5faaRFC 1123\u89c4\u8303\u7684\u8981\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u5ba2\u6237\u7aef\u5e94\u7528\u6765\u8bf4\uff0cDNS\u57df\u540d\u683c\u5f0f\u7684Service\u540d\u79f0\u63d0\u4f9b\u7684\u662f\u7a33\u5b9a \u3001 \u4e0d \u53d8 \u7684 \u8bbf \u95ee \u5730 \u5740 \uff0c \u53ef \u4ee5 \u5927 \u5927 \u7b80 \u5316 \u5ba2 \u6237 \u7aef \u5e94 \u7528 \u7684 \u914d \u7f6e \uff0c \u662fKubernetes\u96c6\u7fa4\u4e2d\u63a8\u8350\u7684\u4f7f\u7528\u65b9\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53Service\u4ee5DNS\u57df\u540d\u5f62\u5f0f\u8fdb\u884c\u8bbf\u95ee\u65f6\uff0c\u5c31\u9700\u8981\u5728Kubernetes\u96c6\u7fa4\u4e2d\u5b58\u5728\u4e00\u4e2aDNS\u670d\u52a1\u5668\u6765\u5b8c\u6210\u57df\u540d\u5230ClusterIP\u5730\u5740\u7684\u89e3\u6790\u5de5\u4f5c\u4e86\uff0c\u7ecf\u8fc7\u591a\u5e74\u7684\u53d1\u5c55\uff0c\u76ee\u524d\u7531CoreDNS\u4f5c\u4e3aKubernetes\u96c6\u7fa4\u7684\u9ed8\u8ba4DNS\u670d\u52a1\u5668\u63d0\u4f9b\u57df\u540d\u89e3\u6790\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u516d\u3001Headless Service\u7684\u6982\u5ff5\u548c\u5e94\u7528\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u67d0\u4e9b\u5e94\u7528\u573a\u666f\u4e2d\uff0c\u5ba2\u6237\u7aef\u5e94\u7528\u4e0d\u9700\u8981\u901a\u8fc7Kubernetes\u5185\u7f6eService\u5b9e\u73b0\u7684\u8d1f\u8f7d\u5747\u8861\u529f\u80fd\uff0c\u6216\u8005\u9700\u8981\u81ea\u884c\u5b8c\u6210\u5bf9\u670d\u52a1\u540e\u7aef\u5404\u5b9e\u4f8b\u7684\u670d\u52a1\u53d1\u73b0\u673a\u5236\uff0c\u6216\u8005\u9700\u8981\u81ea\u884c\u5b9e\u73b0\u8d1f\u8f7d\u5747\u8861\u529f\u80fd\uff0c\u6b64\u65f6\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u4e00\u79cd\u7279\u6b8a\u7684\u540d\u4e3a\u201cHeadless\u201d\u7684\u670d\u52a1\u6765\u5b9e\u73b0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Headless Service \u7684 \u6982 \u5ff5 \u662f \u8fd9 \u79cd \u670d \u52a1 \u6ca1 \u6709 \u5165 \u53e3 \u8bbf \u95ee \u5730 \u5740 \uff08 \u65e0ClusterIP\u5730\u5740\uff09\uff0ckube-proxy\u4e0d\u4f1a\u4e3a\u5176\u521b\u5efa\u8d1f\u8f7d\u8f6c\u53d1\u89c4\u5219\uff0c\u800c\u670d\u52a1\u540d\uff08DNS\u57df\u540d\uff09\u7684\u89e3\u6790\u673a\u5236\u53d6\u51b3\u4e8e\u8be5Headless Service\u662f\u5426\u8bbe\u7f6e\u4e86LabelSelector\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1\u3001Headless Service\u8bbe\u7f6e\u4e86Label Selector<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679cHeadless Service\u8bbe\u7f6e\u4e86Label Selector\uff0cKubernetes\u5219\u5c06\u6839\u636eLabel Selector\u67e5\u8be2\u540e\u7aefPod\u5217\u8868\uff0c\u81ea\u52a8\u521b\u5efaEndpoint\u5217\u8868\uff0c\u5c06\u670d\u52a1\u540d\uff08DNS\u57df\u540d\uff09\u7684\u89e3\u6790\u673a\u5236\u8bbe\u7f6e\u4e3a\uff1a\u5f53\u5ba2\u6237\u7aef\u8bbf\u95ee\u8be5\u670d\u52a1\u540d\u65f6\uff0c\u5f97\u5230\u7684\u662f\u5168\u90e8Endpoint\u5217\u8868\uff08\u800c\u4e0d\u662f\u4e00\u4e2a\u786e\u5b9a\u7684IP\u5730\u5740\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uff081\uff09\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u5177\u67093\u4e2a\u526f\u672c\u7684\u8fd0\u884cNginx\u5bb9\u5668\u7684pod\uff0c\u6807\u7b7e\u4e3aapp:nginx1\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"365\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/6-2.png\" alt=\"\" class=\"wp-image-6283\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/6-2.png 702w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/6-2-300x156.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/6-2-600x312.png 600w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"169\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/7-2.png\" alt=\"\" class=\"wp-image-6284\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/7-2.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/7-2-300x72.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/7-2-600x143.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uff082\uff09\u521b\u5efa\u4e00\u4e2aHeadless Service\uff0c\u65e0ClusterIP\uff0c\u56e0\u6b64\u8bbe\u7f6e\u4e3aNone\uff0c\u6839\u636e\u6807\u7b7e\u67e5\u627e\u540e\u7aefpod\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"705\" height=\"251\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/8-2.png\" alt=\"\" class=\"wp-image-6288\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/8-2.png 705w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/8-2-300x107.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/8-2-600x214.png 600w\" sizes=\"auto, (max-width: 705px) 100vw, 705px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u540e\uff0c\u67e5\u770b\u8be5service\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u53ef\u4ee5\u770b\u5230\u540e\u7aef\u7684Endpoint\u5217\u8868\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"705\" height=\"251\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/9-1.png\" alt=\"\" class=\"wp-image-6289\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/9-1.png 705w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/9-1-300x107.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/9-1-600x214.png 600w\" sizes=\"auto, (max-width: 705px) 100vw, 705px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7nslookup\u5de5\u5177\u5bf9headless service\u540d\u79f0\u8fdb\u884c\u89e3\u6790\uff0c\u53ef\u4ee5\u770b\u5230DNS\u7cfb\u7edf\u8fd4\u56de\u5168\u90e8\u7684Endpoints\u7684IP\u5730\u5740\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"170\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/5-2.png\" alt=\"\" class=\"wp-image-6291\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/5-2.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/5-2-300x72.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/5-2-600x144.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">headless-service.default.svc.cluster.local\uff1a\u5168\u9650\u5b9a\u57df\u540d\uff0c\u683c\u5f0f\uff1aheadless-service.&lt;namespace&gt;.svc.cluster.local<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uff083\uff09\u4fee\u6539Pod\u4e2d\u7684Nginx\u9ed8\u8ba4\u9875\u9762\uff0c\u589e\u52a0Pod\u7684IP\u5730\u5740\uff0c\u7136\u540e\u5728\u5ba2\u6237\u7aef(\u53ef\u4ee5\u662f\u5176\u4ed6Pod)\uff0c\u901a\u8fc7\u5168\u9650\u5b9a\u57df\u540d\u6216\u8005DNS\u670d\u52a1\u540d(headless-service)\u8bbf\u95ee3\u904d\uff0c\u89c2\u5bdf\u7ed3\u679c\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"396\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/10-1.png\" alt=\"\" class=\"wp-image-6294\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/10-1.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/10-1-300x168.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/10-1-600x336.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"394\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/11-1.png\" alt=\"\" class=\"wp-image-6295\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/11-1.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/11-1-300x167.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/11-1-600x335.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"393\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/12-2.png\" alt=\"\" class=\"wp-image-6296\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/12-2.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/12-2-300x166.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/12-2-600x333.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7DNS\u670d\u52a1\u540d\u8bbf\u95ee\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"405\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/13-1.png\" alt=\"\" class=\"wp-image-6299\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/13-1.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/13-1-300x171.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/01\/13-1-600x343.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u4ece\u4e0a\u56fe\u4e2d\u53ef\u4ee5\u53d1\u73b0\uff0c\u6bcf\u6b21\u8bbf\u95ee\u90fd\u8def\u7531\u5230\u4e0d\u540c\u7684\u5730\u5740\uff0c\u8bf7\u6c42\u4e0d\u540c\u7684\u540e\u7aefPod<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\u3001Headless Service\u6ca1\u6709\u8bbe\u7f6eLabel Selector<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679cHeadless Service\u6ca1\u6709\u8bbe\u7f6eLabel Selector\uff0c\u5219Kubernetes\u5c06\u4e0d\u4f1a\u81ea\u52a8\u521b\u5efa\u5bf9\u5e94\u7684Endpoint\u5217\u8868\u3002DNS\u7cfb\u7edf\u4f1a\u6839\u636e\u4e0b\u5217\u6761\u4ef6\u5c1d\u8bd5\u5bf9\u8be5\u670d\u52a1\u540d\u8bbe\u7f6eDNS\u8bb0\u5f55\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5982\u679cService\u7684\u7c7b\u578b\u4e3aExternalName\uff0c\u5219\u5bf9\u670d\u52a1\u540d\u7684\u8bbf\u95ee\u5c06\u76f4\u63a5\u88abDNS\u7cfb\u7edf\u8f6c\u6362\u4e3aService\u8bbe\u7f6e\u7684\u5916\u90e8\u540d\u79f0\uff08externalName\uff09\uff1b<\/li>\n\n\n\n<li>\u5982\u679c\u7cfb\u7edf\u4e2d\u5b58\u5728\u4e0eService\u540c\u540d\u7684Endpoint\u5b9a\u4e49\uff0c\u5219\u670d\u52a1\u540d\u5c06\u88ab\u89e3\u6790\u4e3aEndpoint\u5b9a\u4e49\u4e2d\u7684\u5217\u8868\uff0c\u9002\u7528\u4e8e\u975eExternalName \u7c7b\u578b\u7684Service\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u4e03\u3001\u7aef\u70b9\u5206\u7247\u4e0e\u670d\u52a1\u62d3\u6251\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service\u7684\u540e\u7aef\u662f\u4e00\u7ec4Endpoint\u5217\u8868\uff0c\u4e3a\u5ba2\u6237\u7aef\u5e94\u7528\u63d0\u4f9b\u4e86\u6781\u5927\u7684\u4fbf\u5229\u3002\u4f46\u662f\u968f\u7740\u96c6\u7fa4\u89c4\u6a21\u7684\u6269\u5927\u53caService\u6570\u91cf\u7684\u589e\u52a0\uff0c\u7279\u522b\u662fService\u540e\u7aefEndpoint\u6570\u91cf\u7684\u589e\u52a0\uff0ckube-proxy\u9700\u8981\u7ef4\u62a4\u7684\u8d1f\u8f7d\u5206\u53d1\u89c4\u5219\uff08\u4f8b\u5982iptables\u89c4\u5219\u6216ipvs\u89c4\u5219\uff09\u7684\u6570\u91cf\u4e5f\u4f1a\u6025\u5267\u589e\u52a0\uff0c\u5bfc\u81f4\u540e\u7eed\u5bf9Service\u540e\u7aefEndpoint\u7684\u6dfb\u52a0\u3001\u5220\u9664\u7b49\u66f4\u65b0\u64cd\u4f5c\u7684\u6210\u672c\u6025\u5267\u4e0a\u5347\u3002\u5047\u8bbe\u5728Kubernetes\u96c6\u7fa4\u4e2d\u670910000\u4e2aEndpoint\u8fd0\u884c\u5728\u5927\u7ea65000\u4e2aNode\u4e0a\uff0c\u5219\u5bf9\u5355\u4e2aPod\u7684\u66f4\u65b0\u5c06\u9700\u8981\u603b\u8ba1\u7ea65GB\u7684\u6570\u636e\u4f20\u8f93\uff0c\u8fd9\u4e0d\u4ec5\u5bf9\u96c6\u7fa4\u5185\u7684\u7f51\u7edc\u5e26\u5bbd\u6d6a\u8d39\u5de8\u5927\uff0c\u800c\u4e14\u5bf9Master\u7684\u51b2\u51fb\u975e\u5e38\u5927\uff0c\u4f1a\u5f71\u54cdKubernetes\u96c6\u7fa4\u7684\u6574\u4f53\u6027\u80fd\uff0c\u5728Deployment\u4e0d\u65ad\u8fdb\u884c\u6eda\u52a8\u5347\u7ea7\u64cd\u4f5c\u7684\u60c5\u51b5\u4e0b\u5c24\u4e3a\u7a81\u51fa\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7aef\u70b9\u5206\u7247\uff08Endpoint Slices\uff09\u901a\u8fc7\u5bf9Endpoint\u8fdb\u884c\u5206\u7247\u7ba1\u7406\u6765\u5b9e\u73b0\u964d\u4f4eMaster\u548c\u5404Node\u4e4b\u95f4\u7684\u7f51\u7edc\u4f20\u8f93\u6570\u636e\u91cf\u53ca\u63d0\u9ad8\u6574\u4f53\u6027\u80fd\u7684\u76ee\u6807\u3002\u5bf9\u4e8eDeployment\u7684\u6eda\u52a8\u5347\u7ea7\uff0c\u53ef\u4ee5\u5b9e\u73b0\u4ec5\u66f4\u65b0\u90e8\u5206Node\u4e0a\u7684Endpoint\u4fe1\u606f\uff0cMaster\u4e0eNode\u4e4b\u95f4\u7684\u6570\u636e\u4f20\u8f93\u91cf\u53ef\u4ee5\u51cf\u5c11100\u500d\u5de6\u53f3\uff0c\u80fd\u591f\u5927\u5927\u63d0\u9ad8\u7ba1\u7406\u6548\u7387\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001<strong>\u7aef\u70b9\u5206\u7247\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eceKubernetes1.17\u7248\u672c\u5f00\u59cb\uff0cEndpointSlice\u673a\u5236\u9ed8\u8ba4\u662f\u542f\u7528\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u4f8b\u5b50\u5df2\u7ecf\u5728\u547d\u540d\u7a7a\u95f4gongguan \u4e2d\u521b\u5efa\u4e86pod\u548cservice\uff0c\u73b0\u5728\u67e5\u770b\u5176\u4e2d\u521b\u5efa\u7684\u7aef\u70b9\u5206\u7247\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"95\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/03\/2-7.png\" alt=\"\" class=\"wp-image-7930\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/03\/2-7.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/03\/2-7-300x40.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/03\/2-7-600x81.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u516b\u3001 Ingress\uff1aHTTP 7\u5c42\u8def\u7531\u673a\u5236\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service\u7684\u8868\u73b0\u5f62\u5f0f\u4e3a IP:Port\uff0c\u5373\u5de5\u4f5c\u5728TCP\/IP\u5c42\u3002\u800c\u5bf9\u4e8e\u57fa\u4e8eHTTP\u7684\u670d\u52a1\u6765\u8bf4\uff0c\u4e0d\u540c\u7684URL\u5730\u5740\u7ecf\u5e38\u5bf9\u5e94\u5230\u4e0d\u540c\u7684\u540e\u7aef\u670d\u52a1\u6216\u8005\u865a\u62df\u670d\u52a1\u5668\uff08Virtual Host\uff09\uff0c \u8fd9\u4e9b\u5e94\u7528\u5c42\u7684\u8f6c\u53d1\u673a\u5236\u4ec5\u901a\u8fc7Kubernetes\u7684Service\u673a\u5236\u662f\u65e0\u6cd5\u5b9e\u73b0\u7684\u3002  \u4eceKubernetes 1.1\u7248\u672c\u5f00\u59cb\u65b0\u589eIngress\u8d44\u6e90\u5bf9\u8c61\uff0c\u7528\u4e8e\u5c06\u4e0d\u540cURL\u7684\u8bbf\u95ee \u8bf7\u6c42\u8f6c\u53d1\u5230\u540e\u7aef\u4e0d\u540c\u7684Service\uff0c\u4ee5\u5b9e\u73b0HTTP\u5c42\u7684\u4e1a\u52a1\u8def\u7531\u673a\u5236\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes\u4f7f\u7528\u4e86\u4e00\u4e2aIngress\u7b56\u7565\u5b9a\u4e49\u548c\u4e00\u4e2a\u5177\u4f53\u7684Ingress Controller\uff0c \u4e24\u8005\u7ed3\u5408\u5e76\u5b9e\u73b0\u4e86\u4e00\u4e2a\u5b8c\u6574\u7684Ingress\u8d1f\u8f7d\u5747\u8861\u5668\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528Ingress\u8fdb\u884c\u8d1f\u8f7d\u5206\u53d1\u65f6\uff0cIngress Controller\u57fa\u4e8eIngress\u89c4\u5219\u5c06\u5ba2\u6237\u7aef\u8bf7\u6c42\u76f4\u63a5\u8f6c\u53d1\u5230Service\u5bf9\u5e94\u7684\u540e\u7aefEndpoint\uff08Pod\uff09\u4e0a\uff0c\u8fd9\u6837\u4f1a\u8df3\u8fc7kube-proxy\u7684\u8f6c\u53d1\u529f\u80fd\uff0c<strong>kube-proxy\u4e0d\u518d\u8d77\u4f5c\u7528<\/strong>\u3002\u5982\u679cIngress Controller\u63d0\u4f9b\u7684\u662f\u5bf9\u5916\u670d\u52a1\uff0c\u5219\u5b9e\u9645\u4e0a\u5b9e\u73b0\u7684\u662f\u8fb9\u7f18\u8def\u7531\u5668\u7684\u529f\u80fd\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u56fe\u663e\u793a\u4e86\u4e00\u4e2a\u5178\u578b\u7684HTTP\u5c42\u8def\u7531\u7684\u4f8b\u5b50\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"444\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/7-1.png\" alt=\"\" class=\"wp-image-5069\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/7-1.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/7-1-300x188.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/7-1-600x376.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li> \u5bf9http:\/\/mywebsite.com\/api\u7684\u8bbf\u95ee\u5c06\u88ab\u8def\u7531\u5230\u540e\u7aef\u540d\u4e3aapi\u7684 Service<\/li>\n\n\n\n<li> \u5bf9http:\/\/mywebsite.com\/web\u7684\u8bbf\u95ee\u5c06\u88ab\u8def\u7531\u5230\u540e\u7aef\u540d\u4e3aweb\u7684 Service<\/li>\n\n\n\n<li> \u5bf9http:\/\/mywebsite.com\/docs\u7684\u8bbf\u95ee\u5c06\u88ab\u8def\u7531\u5230\u540e\u7aef\u540d\u4e3adocs\u7684 Service <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4f7f\u7528Ingress\uff0c\u9700\u8981\u521b\u5efaIngress Controller\uff08\u5e26\u4e00\u4e2a\u9ed8\u8ba4backend\u670d \u52a1\uff09\u548cIngress\u7b56\u7565\u8bbe\u7f6e\u6765\u5171\u540c\u5b8c\u6210\u3002\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u5206\u4e09\u6b65\u8bf4\u660e Ingress Controller\u548cIngress\u7b56\u7565\u7684\u914d\u7f6e\u65b9\u6cd5\uff0c\u4ee5\u53ca\u5ba2\u6237\u7aef\u5982\u4f55\u8bbf\u95eeIngress \u63d0\u4f9b\u7684\u670d\u52a1\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> ingress\u7531\u4e24\u90e8\u5206\u7ec4\u6210:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> ingress controller\uff1a\u5c06\u65b0\u52a0\u5165\u7684Ingress\u8f6c\u5316\u6210Nginx\u7684\u914d\u7f6e\u6587\u4ef6\u5e76\u4f7f\u4e4b\u751f\u6548<\/li>\n\n\n\n<li>  ingress\u670d\u52a1\uff1a\u5c06Nginx\u7684\u914d\u7f6e\u62bd\u8c61\u6210\u4e00\u4e2aIngress\u5bf9\u8c61\uff0c\u6bcf\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u670d\u52a1\u53ea\u9700\u5199\u4e00\u4e2a\u65b0\u7684Ingress\u7684yaml\u6587\u4ef6\u5373\u53ef <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u57fa\u4e8e<code>nginx\u670d\u52a1\u7684ingress controller<\/code>\u6839\u636e\u4e0d\u540c\u7684\u5f00\u53d1\u516c\u53f8\uff0c\u53c8\u5206\u4e3a<code>k8s\u793e\u533a\u7684ingress-nginx<\/code>\u548c<code>nginx\u516c\u53f8\u7684nginx-ingress<\/code>\uff0c\u672c\u4f8b\u5b50\u4e2d\u4f7f\u7528k8s\u793e\u533a\u7248\u672c\u7684Ingress-Nginx<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">kubernetes\u5b98\u65b9\u7ef4\u62a4\u7684ingress\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ingress-nginx\u7684\u5b98\u65b9\u6587\u6863\uff1ahttps:\/\/kubernetes.github.io\/ingress-nginx\/user-guide\/nginx-configuration\/annotations\/#rewrite\nIngress-nginx Github\uff1ahttps:\/\/github.com\/kubernetes\/ingress-nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx-ingress\uff1anginx\u5b98\u65b9\u7ef4\u62a4\u7684ingress<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx-ingress\u7684\u5b98\u65b9\u6587\u6863\uff1ahttps:\/\/docs.nginx.com\/nginx-ingress-controller\/configuration\/ingress-resources\/advanced-configuration-with-annotations\/\nNginx-ingress Github\uff1ahttps:\/\/github.com\/nginxinc\/kubernetes-ingress\/blob\/master\/docs\/nginx-ingress-controllers.md<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ingress\u5177\u4f53\u7684\u5de5\u4f5c\u539f\u7406\u5982\u4e0b\uff1a <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> ingress contronler\u901a\u8fc7\u4e0ek8s\u7684api\u8fdb\u884c\u4ea4\u4e92\uff0c\u52a8\u6001\u7684\u53bb\u611f\u77e5k8s\u96c6\u7fa4\u4e2dingress\u670d\u52a1\u89c4\u5219\u7684\u53d8\u5316\uff0c\u7136\u540e\u8bfb\u53d6\u5b83\uff0c\u5e76\u6309\u7167\u5b9a\u4e49\u7684ingress\u89c4\u5219\uff0c\u8f6c\u53d1\u5230k8s\u96c6\u7fa4\u4e2d\u5bf9\u5e94\u7684service\u3002 <\/li>\n\n\n\n<li> ingress\u89c4\u5219\u5199\u660e\u4e86\u54ea\u4e2a\u57df\u540d\u5bf9\u5e94k8s\u96c6\u7fa4\u4e2d\u7684\u54ea\u4e2aservice\uff0c\u7136\u540e\u518d\u6839\u636eingress-controller\u4e2d\u7684nginx\u914d\u7f6e\u6a21\u677f\uff0c\u751f\u6210\u4e00\u6bb5\u5bf9\u5e94\u7684nginx\u914d\u7f6e <\/li>\n\n\n\n<li> \u7136\u540e\u518d\u628a\u8be5\u914d\u7f6e\u52a8\u6001\u7684\u5199\u5230ingress-controller\u7684pod\u91cc\uff0c\u8be5ingress-controller\u7684pod\u91cc\u9762\u8fd0\u884c\u7740\u4e00\u4e2anginx\u670d\u52a1\uff0c\u63a7\u5236\u5668\u4f1a\u628a\u751f\u6210\u7684nginx\u914d\u7f6e\u5199\u5165\u5230nginx\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u7136\u540ereload\u4e00\u4e0b\uff0c\u4f7f\u5176\u914d\u7f6e\u751f\u6548,\u4ee5\u6b64\u6765\u8fbe\u5230\u57df\u540d\u5206\u914d\u7f6e\u53ca\u52a8\u6001\u66f4\u65b0\u7684\u6548\u679c <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">ingress\u53ef\u4ee5\u89e3\u51b3\u7684\u95ee\u9898\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u52a8\u6001\u914d\u7f6e\u670d\u52a1\uff1a \u5982\u679c\u6309\u7167\u4f20\u7edf\u65b9\u5f0f, \u5f53\u65b0\u589e\u52a0\u4e00\u4e2a\u670d\u52a1\u65f6, \u6211\u4eec\u53ef\u80fd\u9700\u8981\u5728\u6d41\u91cf\u5165\u53e3\u52a0\u4e00\u4e2a\u53cd\u5411\u4ee3\u7406\u6307\u5411\u6211\u4eec\u65b0\u7684k8s\u670d\u52a1. \u800c\u5982\u679c\u7528\u4e86Ingress, \u53ea\u9700\u8981\u914d\u7f6e\u597d\u8fd9\u4e2a\u670d\u52a1, \u5f53\u670d\u52a1\u542f\u52a8\u65f6, \u4f1a\u81ea\u52a8\u6ce8\u518c\u5230Ingress\u7684\u4e2d, \u4e0d\u9700\u8981\u800c\u5916\u7684\u64cd\u4f5c\u3002 <\/li>\n\n\n\n<li>\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u7aef\u53e3\u66b4\u9732\uff1a\u914d\u7f6e\u8fc7k8s\u7684\u90fd\u6e05\u695a, \u7b2c\u4e00\u6b65\u662f\u8981\u5173\u95ed\u9632\u706b\u5899\u7684, \u4e3b\u8981\u539f\u56e0\u662fk8s\u7684\u5f88\u591a\u670d\u52a1\u4f1a\u4ee5NodePort\u65b9\u5f0f\u6620\u5c04\u51fa\u53bb, \u8fd9\u6837\u5c31\u76f8\u5f53\u4e8e\u7ed9\u5bbf\u4e3b\u673a\u6253\u4e86\u5f88\u591a\u5b54, \u65e2\u4e0d\u5b89\u5168\u4e5f\u4e0d\u4f18\u96c5. \u800cIngress\u53ef\u4ee5\u907f\u514d\u8fd9\u4e2a\u95ee\u9898, \u9664\u4e86Ingress\u81ea\u8eab\u670d\u52a1\u53ef\u80fd\u9700\u8981\u6620\u5c04\u51fa\u53bb, \u5176\u4ed6\u670d\u52a1\u90fd\u4e0d\u8981\u7528NodePort\u65b9\u5f0f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1\u3001 \u90e8\u7f72Ingress Controller(DaemonSet\u7684\u65b9\u5f0f)\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u539f\u59cb\u6587\u4ef6\u4f7f\u7528\u7684\u662fdeployment\uff0creplicate \u4e3a 1\uff0c\u8fd9\u6837\u5c06\u4f1a\u5728\u67d0\u4e00\u53f0\u8282\u70b9\u4e0a\u542f\u52a8\u5bf9\u5e94\u7684nginx-ingress-controller pod\u3002\u5916\u90e8\u6d41\u91cf\u8bbf\u95ee\u81f3\u8be5\u8282\u70b9\uff0c\u7531\u8be5\u8282\u70b9\u8d1f\u8f7d\u5206\u62c5\u81f3\u5185\u90e8\u7684service \uff0c\u4e3a\u4e86\u9632\u6b62\u5355\u70b9\u6545\u969c\uff0c\u6539\u4e3aDaemonSet\u7136\u540e\u5220\u6389replicate \uff0c\u914d\u5408\u4eb2\u548c\u6027\u90e8\u7f72\u5728\u6307\u5b9a\u8282\u70b9\u4e0a\u542f\u52a8nginx-ingress-controller pod\uff0c\u786e\u4fdd\u6709\u591a\u4e2a\u8282\u70b9\u542f\u52a8nginx-ingress-controller pod\uff0c\u540e\u7eed\u5c06\u8fd9\u4e9b\u8282\u70b9\u52a0\u5165\u5230\u5916\u90e8\u786c\u4ef6\u8d1f\u8f7d\u5747\u8861\u7ec4\u5b9e\u73b0\u9ad8\u53ef\u7528\u6027\u3002<\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">deployment\u548cdaemonset\u533a\u522b\uff1adeployment\u521b\u5efa\u7684Pod\u53ef\u4ee5\u4e00\u4e2a\u8282\u70b9\u4e0a\u8fd0\u884c\u591a\u4e2a\uff0cdaemonset\u521b\u5efa\u7684Pod\uff0c\u4e00\u4e2a\u8282\u70b9\u53ea\u80fd\u8fd0\u884c\u4e00\u4e2a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.1 \u6dfb\u52a0hostNetwork\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">true\uff1a\u6dfb\u52a0\u8be5\u5b57\u6bb5\uff0c\u66b4\u9732nginx-ingress-controller pod\u7684\u670d\u52a1\u7aef\u53e3(80)\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"348\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/8-1.png\" alt=\"\" class=\"wp-image-5071\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/8-1.png 820w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/8-1-300x127.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/8-1-768x326.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/8-1-600x255.png 600w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">1.2 \u6dfb\u52a0\u4eb2\u548c\u6027\u5c5e\u6027(\u8282\u70b9\u5b9a\u5411\u9009\u62e9)\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u4e3a\u8282\u70b9\u6dfb\u52a0\u6807\u7b7e\uff0c\u53ea\u6709\u5177\u6709\u6807\u7b7eingress-nginx-ready=true\u7684\u8282\u70b9\u624d\u4f1a\u90e8\u7f72DaemonSet\n#\u4e0b\u9762\u53ea\u7ed9Node\u8282\u70b9\u6253\u6807\u7b7e\nkubectl label nodes k8s-node1 ingress-nginx-ready=true\nkubectl label nodes k8s-node2 ingress-nginx-ready=true<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">1.3\uff0c\u4fee\u6539mandatory.yaml\u6587\u4ef6\uff0c\u6dfb\u52a0\u8282\u70b9\u9009\u62e9\u6807\u7b7e\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"266\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/9-1.png\" alt=\"\" class=\"wp-image-5072\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/9-1.png 807w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/9-1-300x99.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/9-1-768x253.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/9-1-600x198.png 600w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">1.4 \u4fee\u6539\u63a7\u5236\u5668\u4e3aDemonSet\uff0c\u526f\u672c\u6570\u6ce8\u91ca\u6389\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"814\" height=\"385\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/10-1.png\" alt=\"\" class=\"wp-image-5073\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/10-1.png 814w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/10-1-300x142.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/10-1-768x363.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/10-1-600x284.png 600w\" sizes=\"auto, (max-width: 814px) 100vw, 814px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">1.5 1.23.5\u7248\u672c\u7684deploy.yaml\u9700\u8981\u4fee\u6539type\u7c7b\u578b\u4e3aClusterIP\uff0c\u5e76\u6ce8\u91caexternalTrafficPolicy: Local\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"400\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/6.png\" alt=\"\" class=\"wp-image-7969\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/6.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/6-300x170.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/6-600x340.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u9002\u7528\u4e8ek8s 1.20.8\u7684\u5b8c\u6574\u7684mandatory.yaml\u7684\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: Namespace\nmetadata:\n  name: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\n\n---\n\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  name: nginx-configuration\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\n\n---\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  name: tcp-services\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\n\n---\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  name: udp-services\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\n\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: nginx-ingress-serviceaccount\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\n\n---\n#apiVersion: rbac.authorization.k8s.io\/v1beta1\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRole\nmetadata:\n  name: nginx-ingress-clusterrole\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - \"extensions\"\n      - \"networking.k8s.io\"\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"extensions\"\n      - \"networking.k8s.io\"\n    resources:\n      - ingresses\/status\n    verbs:\n      - update\n\n---\n#apiVersion: rbac.authorization.k8s.io\/v1beta1\napiVersion: rbac.authorization.k8s.io\/v1\nkind: Role\nmetadata:\n  name: nginx-ingress-role\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n    resourceNames:\n      # Defaults to \"&lt;election-id&gt;-&lt;ingress-class&gt;\"\n      # Here: \"&lt;ingress-controller-leader&gt;-&lt;nginx&gt;\"\n      # This has to be adapted if you change either parameter\n      # when launching the nginx-ingress-controller.\n      - \"ingress-controller-leader-nginx\"\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n    verbs:\n      - create\n  - apiGroups:\n      - \"\"\n    resources:\n      - endpoints\n    verbs:\n      - get\n\n---\napiVersion: rbac.authorization.k8s.io\/v1\nkind: RoleBinding\nmetadata:\n  name: nginx-ingress-role-nisa-binding\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: nginx-ingress-role\nsubjects:\n  - kind: ServiceAccount\n    name: nginx-ingress-serviceaccount\n    namespace: ingress-nginx\n\n---\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: nginx-ingress-clusterrole-nisa-binding\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: nginx-ingress-clusterrole\nsubjects:\n  - kind: ServiceAccount\n    name: nginx-ingress-serviceaccount\n    namespace: ingress-nginx\n\n---\n\napiVersion: apps\/v1\nkind: DaemonSet\nmetadata:\n  name: nginx-ingress-controller\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nspec:\n#  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io\/name: ingress-nginx\n      app.kubernetes.io\/part-of: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io\/name: ingress-nginx\n        app.kubernetes.io\/part-of: ingress-nginx\n      annotations:\n        prometheus.io\/port: \"10254\"\n        prometheus.io\/scrape: \"true\"\n    spec:\n      hostNetwork: true\n      # wait up to five minutes for the drain of connections\n      terminationGracePeriodSeconds: 300\n      serviceAccountName: nginx-ingress-serviceaccount\n      nodeSelector:\n        kubernetes.io\/os: linux\n        ingress-nginx-ready: 'true'     #\u591a\u4e2a\u8282\u70b9\u6253\u4e0a\u6b64\u6807\u7b7e\uff0c\u6bcf\u4e2a\u8282\u70b9\u90fd\u4f1a\u8fd0\u884c\u4e00\u4e2aingress-controller\uff0c\u5b9e\u73b0\u9ad8\u53ef\u7528\n      containers:\n        - name: nginx-ingress-controller\n          image: registry.aliyuncs.com\/google_containers\/nginx-ingress-controller:0.30.0\n          args:\n            - \/nginx-ingress-controller\n            - --configmap=$(POD_NAMESPACE)\/nginx-configuration\n            - --tcp-services-configmap=$(POD_NAMESPACE)\/tcp-services\n            - --udp-services-configmap=$(POD_NAMESPACE)\/udp-services\n            - --publish-service=$(POD_NAMESPACE)\/ingress-nginx\n            - --annotations-prefix=nginx.ingress.kubernetes.io\n          securityContext:\n            allowPrivilegeEscalation: true\n            capabilities:\n              drop:\n                - ALL\n              add:\n                - NET_BIND_SERVICE\n            # www-data -&gt; 101\n            runAsUser: 101\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n            - name: https\n              containerPort: 443\n              protocol: TCP\n          livenessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: \/healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 10\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: \/healthz\n              port: 10254\n              scheme: HTTP\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 10\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - \/wait-shutdown\n\n---\n\napiVersion: v1\nkind: LimitRange\nmetadata:\n  name: ingress-nginx\n  namespace: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/part-of: ingress-nginx\nspec:\n  limits:\n  - min:\n      memory: 90Mi\n      cpu: 100m\n    type: Container\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">1.5 \u6267\u884c\u547d\u4ee4kubectl create -f mandatory\u521b\u5efa\u6b64ingress\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"151\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1-1024x151.png\" alt=\"\" class=\"wp-image-5076\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1-1024x151.png 1024w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1-300x44.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1-768x113.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1-600x89.png 600w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/11-1.png 1179w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece\u4e0a\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0cingress\u5df2\u7ecf\u521b\u5efa\u6210\u529f\uff0c\u56e0\u4e3a\u8bbe\u7f6e\u4e86hostNetwork=true\uff0c\u56e0\u6b64podIp\u548c\u5bbf\u4e3b\u673aIP\u76f8\u540c\uff0c\u5e76\u4e14\u7531\u4e8e\u8bbe\u7f6e\u4e86\u5b9a\u5411\u9009\u62e9\uff0c\u56e0\u6b64\u5728\u4e24\u4e2a\u8282\u70b9\u4e0a\u90fd\u6709ingress\u7684Pod<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\u3001\u8fdb\u884c\u6848\u4f8b\u6d4b\u8bd5<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.1 \u9996\u5148\u5728\u547d\u540d\u7a7a\u95f4update\u901a\u8fc7deployment\u521b\u5efa\u4e00\u4e2anginx\u7c7b\u578b\u5e94\u7528\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"744\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/13-1.png\" alt=\"\" class=\"wp-image-5078\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/13-1.png 955w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/13-1-300x234.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/13-1-768x598.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/13-1-600x467.png 600w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"174\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/16-1.png\" alt=\"\" class=\"wp-image-5081\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/16-1.png 799w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/16-1-300x65.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/16-1-768x167.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/16-1-600x131.png 600w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2.2  \u521b\u5efaservice\u6587\u4ef6\uff0c\u7c7b\u578b\u9009\u62e9clusterIP\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"377\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/14-1.png\" alt=\"\" class=\"wp-image-5079\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/14-1.png 827w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/14-1-300x137.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/14-1-768x350.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/14-1-600x274.png 600w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"160\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/15-1.png\" alt=\"\" class=\"wp-image-5080\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/15-1.png 827w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/15-1-300x58.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/15-1-768x149.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/15-1-600x116.png 600w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7serviceIP\u548c\u7aef\u53e3\u8bbf\u95ee\u670d\u52a1\u8bd5\u8bd5\uff0c\u53ef\u4ee5\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"301\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/17-1.png\" alt=\"\" class=\"wp-image-5082\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/17-1.png 819w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/17-1-300x110.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/17-1-768x282.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/17-1-600x221.png 600w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\u610f\uff1aClusterIP\u53ea\u7528\u4e8e\u96c6\u7fa4\u5185\u90e8\u901a\u8baf\uff0c\u5916\u90e8\u662f\u65e0\u6cd5\u8bbf\u95ee\u7684\uff0c\u56e0\u6b64\uff0c\u5982\u679c\u8981\u5728\u5916\u90e8\u901a\u8fc7\u57df\u540d\u8bbf\u95ee\u5185\u90e8\u7684Pod\uff0c\u8fd8\u662f\u9700\u8981ingress\u7684\u7b56\u7565\u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.3\uff0c\u521b\u5efaingress\u7b56\u7565\u6587\u4ef6\uff0cingress.yaml\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"812\" height=\"483\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/27-1.png\" alt=\"\" class=\"wp-image-5093\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/27-1.png 812w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/27-1-300x178.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/27-1-768x457.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/27-1-600x357.png 600w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>metadata.name\uff1a\u81ea\u5b9a\u4e49\u540d\u5b57<\/li>\n\n\n\n<li>namespace\uff1a\u7b56\u7565\u89c4\u5219\u7528\u4e8e\u7684\u547d\u540d\u7a7a\u95f4\uff0c\u4e00\u822c\u4e0e\u5e94\u7528\u5728\u540c\u4e00namespace<\/li>\n\n\n\n<li>host\uff1a\u6307\u5b9a\u8981\u8bbf\u95ee\u7684\u57df\u540d<\/li>\n\n\n\n<li>path\uff1a\u57df\u540d\u540e\u8bbf\u95ee\u7684\u8def\u5f84<\/li>\n\n\n\n<li>pathType\uff1a\u57fa\u4e8e\u4ee5&nbsp;<code>\/<\/code>&nbsp;\u5206\u9694\u7684 URL \u8def\u5f84\u524d\u7f00\u5339\u914d\u3002\u5339\u914d\u5bf9\u5927\u5c0f\u5199\u654f\u611f\uff0c\u5e76\u4e14\u5bf9\u8def\u5f84\u4e2d\u7684\u5143\u7d20\u9010\u4e2a\u5b8c\u6210,\u9664\u4e86Prefix\uff0c\u8fd8\u6709\u4e00\u79cd\u7c7b\u578b\u4e3aExact(\u7cbe\u786e\u5339\u914dURL\u8def\u5f84\uff0c\u533a\u5206\u5927\u5c0f\u5199)<\/li>\n\n\n\n<li>service.name\uff1a\u4e0a\u4e00\u6b65\u521b\u5efa\u7684service\u7684\u540d\u79f0<\/li>\n\n\n\n<li>number\uff1aservice\u4e2d\u914d\u7f6e\u7684\u8bbf\u95eepod\u7684\u7aef\u53e3<\/li>\n<\/ul>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\u610f\uff1a\u5982\u679c\u4e00\u4e2a\u8bf7\u6c42\u540c\u65f6\u88ab\u5728Ingress\u4e2d\u8bbe\u7f6e\u7684\u591a\u4e2aURL\u8def\u5f84\u5339\u914d\uff0c\u5219\u7cfb\u7edf\u5c06\u4ee5\u6700\u957f\u7684\u5339\u914d\u8def\u5f84\u4e3a\u4f18\u5148\u3002\u5982\u679c\u6709\u4e24\u6761\u540c\u7b49\u957f\u5ea6\u7684\u5339\u914d\u8def\u5f84\uff0c\u5219\u7cbe\u786e\u5339\u914d\u7c7b\u578b\uff08Exact\uff09\u4f18\u5148\u4e8e\u524d\u7f00\u5339\u914d\u7c7b\u578b\uff08Prefix\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u547d\u4ee4kubectl create -f ingress.yaml\uff0c\u67e5\u770b\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"804\" height=\"170\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/19-1.png\" alt=\"\" class=\"wp-image-5084\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/19-1.png 804w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/19-1-300x63.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/19-1-768x162.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/19-1-600x127.png 600w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2.4\uff0c\u672c\u5730\u7535\u8111\u6dfb\u52a0host\uff0c\u5c06\u57df\u540d\u89e3\u6790\u5230k8s-node1\u548ck8s-node2\u4e0a\uff0c\u7136\u540e\u901a\u8fc7\u57df\u540d\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"797\" height=\"326\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/20-1.png\" alt=\"\" class=\"wp-image-5086\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/20-1.png 797w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/20-1-300x123.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/20-1-768x314.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/20-1-600x245.png 600w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>\u9644\u52a0\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u9762\u7684Ingress\u7b56\u7565\u8def\u7531\u53ea\u662f\u5355\u6761\uff0c\u5982\u679c\u662f\u591a\u6761\uff0c\u914d\u7f6e\u65b9\u5f0f\u5982\u4e0b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u514b\u9686\u4e0a\u6587\u4e2d\u7684nginx.yaml\u4e3atomcat.yaml\uff0c\u5e76\u4fee\u6539\u5185\u90e8\u7684\u53c2\u6570\u4e3atomcat\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"748\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/21-1.png\" alt=\"\" class=\"wp-image-5087\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/21-1.png 906w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/21-1-300x248.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/21-1-768x634.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/21-1-600x495.png 600w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"210\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/22-1.png\" alt=\"\" class=\"wp-image-5088\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/22-1.png 842w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/22-1-300x75.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/22-1-768x192.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/22-1-600x150.png 600w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u521b\u5efaservice\uff0c\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"362\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/23-1.png\" alt=\"\" class=\"wp-image-5089\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/23-1.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/23-1-300x141.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/23-1-600x283.png 600w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"896\" height=\"146\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/24-1.png\" alt=\"\" class=\"wp-image-5090\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/24-1.png 896w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/24-1-300x49.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/24-1-768x125.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/24-1-600x98.png 600w\" sizes=\"auto, (max-width: 896px) 100vw, 896px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u7f16\u8f91Ingress\u7b56\u7565\u914d\u7f6e\u6587\u4ef6\uff0c\u6dfb\u52a0tomcat\u8def\u7531\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"821\" height=\"673\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/26-1.png\" alt=\"\" class=\"wp-image-5092\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/26-1.png 821w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/26-1-300x246.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/26-1-768x630.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/26-1-600x492.png 600w\" sizes=\"auto, (max-width: 821px) 100vw, 821px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u901a\u8fc7\u9875\u9762\u8fdb\u884c\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"782\" height=\"320\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/30-1.png\" alt=\"\" class=\"wp-image-5097\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/30-1.png 782w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/30-1-300x123.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/30-1-768x314.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/30-1-600x246.png 600w\" sizes=\"auto, (max-width: 782px) 100vw, 782px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\u610f\uff1atomcat\u9ed8\u8ba4\u542f\u52a8\u540e\u6ca1\u6709\u4e3b\u754c\u9762\uff0c\u53ef\u5728webapps\u76ee\u5f55\u4e0b\u521b\u5efaROOT\u76ee\u5f55\uff0c\u5728\u6b64\u76ee\u5f55\u4e0b\u65b0\u5efaindex.html\u6587\u4ef6\uff0c\u81ea\u5b9a\u4e49\u5185\u5bb9\u5373\u53ef<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u662f\u4e00\u4e2a\u4e3b\u673a\u591a\u4e2a\u8def\u5f84\uff0c\u5982\u679c\u662f\u591a\u4e2a\u4e3b\u673a\uff0c\u53ef\u4ee5\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u914d\u7f6e\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"764\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/28-1.png\" alt=\"\" class=\"wp-image-5094\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/28-1.png 762w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/28-1-300x300.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/28-1-150x150.png 150w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/28-1-598x600.png 598w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u5e38\u89c1\u7684\u8def\u5f84\u7c7b\u578b\u5339\u914d\u89c4\u5219\u793a\u4f8b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">\u8def\u5f84\u7c7b\u578b<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5728ingress\u4e2d\u914d\u7f6e\u7684\u8def\u5f84<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bf7\u6c42\u8def\u5f84<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\u5426\u5339\u914d<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Prefix<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u6240\u6709\u8def\u5f84<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo,\/foo\/<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo\/<\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/foo,\/foo\/ <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \u662f <\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa\/bb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \u662f  <\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">  Prefix  <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb\/<\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5ffd\u7565\u7ed3\u5c3e\u7684&#8221;\/&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">  Prefix  <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb <\/td><td class=\"has-text-align-center\" data-align=\"center\">  \/aaa\/bbb\/<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5339\u914d\u7ed3\u5c3e\u7684&#8221;\/&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">  Prefix  <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbb\/ccc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5339\u914d\u5b50\u8def\u5f84<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">  Prefix  <\/td><td class=\"has-text-align-center\" data-align=\"center\">  \/aaa\/bbb <\/td><td class=\"has-text-align-center\" data-align=\"center\"> \/aaa\/bbbxyz<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426\uff0c\u65e0\u5339\u914d\u524d\u7f00<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">   Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/,\/aaa<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa\/ccc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5339\u914d\u7684\u662f\/aaa\u524d\u7f00<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">   Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/,\/aaa,\/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5339\u914d\u7684\u662f\/aaa\/bbb\u524d\u7f00<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">   Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/,\/aaa\/aaa\/bbb<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/ccc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u5339\u914d\u4e86&#8221;\/&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">   Prefix <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/aaa<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/ccc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Prefix +Exact\u6df7\u5408<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo(Prefix)\uff0c\/foo(Exact)<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\uff0c\u4f18\u5148\u5339\u914dExact<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Exact<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Exact <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/bar<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Exact <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo\/<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"> Exact <\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo\/<\/td><td class=\"has-text-align-center\" data-align=\"center\">\/foo<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">6<strong>\u3001host\u901a\u914d\u7b26\u8bbe\u7f6e\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u89c4\u5219\uff08rule\uff09\u4e2d\u8bbe\u7f6e\u7684host\u7528\u4e8e\u5339\u914d\u8bf7\u6c42\u4e2d\u7684\u57df\u540d\uff08\u865a\u62df\u4e3b\u673a\u540d\uff09\uff0c\u8bbe\u7f6e\u4e3a\u5b8c\u6574\u7684\u5b57\u7b26\u4e32\u8868\u793a\u7cbe\u786e\u5339\u914d\uff0c\u4f8b\u5982\u201cfoo.bar.com\u201d\u3002Kubernetes \u4ece 1.18 \u7248 \u672c \u5f00 \u59cb \u652f \u6301 \u4e3a host \u8bbe \u7f6e \u901a \u914d \u7b26 \u201c*\u201d \uff0c \u4f8b \u5982\u201c*.foo.com\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7cbe\u786e\u5339\u914d\u8981\u6c42HTTP\u8bf7\u6c42\u5934\u4e2dhost\u53c2\u6570\u7684\u503c\u5fc5\u987b\u4e0eIngress host\u8bbe\u7f6e\u7684\u503c\u5b8c\u5168\u4e00\u81f4\uff0c\u901a\u914d\u7b26\u5339\u914d\u8981\u6c42HTTP\u8bf7\u6c42\u5934\u4e2dhost\u53c2\u6570\u7684\u503c\u9700\u8981\u4e0eIngress host\u8bbe\u7f6e\u7684\u503c\u7684\u540e\u7f00\u4e00\u81f4\uff0c<strong>\u5e76\u4e14\u4ec5\u652f\u6301\u4e00\u5c42DNS\u5339\u914d<\/strong>\uff0c\u5982\u4e0b\u8868\u793a\u5e38\u89c1\u7684\u901a\u914d\u7b26\u5339\u914d\u793a\u4f8b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">ingress host\u914d\u7f6e<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bf7\u6c42\u5934\u4e2dhost\u503c<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f\u5426\u5339\u914d<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">*.foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\">bar.foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u662f<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">*.foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\">baz.bar.foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5426\uff0c\u4e0d\u662f\u4e00\u5c42DNS\u5339\u914d<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">*.foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\">foo.com<\/td><td class=\"has-text-align-center\" data-align=\"center\"> \u5426\uff0c\u4e0d\u662f\u4e00\u5c42DNS\u5339\u914d <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>ingress\u9ad8\u53ef\u7528\u7ed3\u6784<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f5c\u4e3a\u96c6\u7fa4\u6d41\u91cf\u63a5\u5165\u5c42\uff0cIngress Controller\u7684\u9ad8\u53ef\u7528\u6027\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\uff0c\u9ad8\u53ef\u7528\u6027\u9996\u5148\u8981\u89e3\u51b3\u7684\u5c31\u662f\u5355\u70b9\u6545\u969c\u95ee\u9898\uff0c\u4e00\u822c\u5e38\u7528\u7684\u662f\u91c7\u7528\u591a\u526f\u672c\u90e8\u7f72\u7684\u65b9\u5f0f\uff0c\u6211\u4eec\u5728Kubernetes\u96c6\u7fa4\u4e2d\u90e8\u7f72\u9ad8\u53ef\u7528Ingress Controller\u63a5\u5165\u5c42\u540c\u6837\u91c7\u7528\u591a\u8282\u70b9\u90e8\u7f72\u67b6\u6784\uff0c\u540c\u65f6\u7531\u4e8eIngress\u4f5c\u4e3a\u96c6\u7fa4\u6d41\u91cf\u63a5\u5165\u53e3\uff0c\u5efa\u8bae<strong>\u91c7\u7528\u72ec\u5360Ingress\u8282\u70b9<\/strong>\u7684\u65b9\u5f0f\uff0c\u4ee5\u907f\u514d\u4e1a\u52a1\u5e94\u7528\u4e0eIngress\u670d\u52a1\u53d1\u751f\u8d44\u6e90\u4e89\u62a2 <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"721\" height=\"407\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/38-1.png\" alt=\"\" class=\"wp-image-5116\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/38-1.png 721w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/38-1-300x169.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/10\/38-1-600x339.png 600w\" sizes=\"auto, (max-width: 721px) 100vw, 721px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u4e0a\u8ff0\u90e8\u7f72\u67b6\u6784\u56fe\uff0c\u7531\u591a\u4e2a\u72ec\u5360Ingress\u5b9e\u4f8b\u7ec4\u6210\u7edf\u4e00\u63a5\u5165\u5c42\u627f\u8f7d\u96c6\u7fa4\u5165\u53e3\u6d41\u91cf<strong>\uff0c<\/strong>\u540c\u65f6\u53ef\u4f9d\u636e\u540e\u7aef\u4e1a\u52a1\u6d41\u91cf\u6c34\u5e73\u6269\u7f29\u5bb9Ingress\u8282\u70b9\u3002\u5f53\u7136\u5982\u679c\u60a8\u524d\u671f\u7684\u96c6\u7fa4\u89c4\u6a21\u5e76\u4e0d\u5927\uff0c\u4e5f\u53ef\u4ee5\u91c7\u7528\u5c06Ingress\u670d\u52a1\u4e0e\u4e1a\u52a1\u5e94\u7528\u6df7\u90e8\u7684\u65b9\u5f0f\uff0c\u4f46\u5efa\u8bae\u8fdb\u884c\u8d44\u6e90\u9650\u5236\u548c\u9694\u79bb\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u96c6\u7fa4\u5728\u5185\u90e8\u7f51\u7edc\uff0c\u5916\u7f51\u73af\u5883\u9700\u8981\u8bbf\u95ee\uff0c\u6b64\u65f6\u53ef\u4ee5\u901a\u8fc7Nginx\u505a\u4e00\u6b21\u8df3\u8f6c\u5373\u53ef<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9002\u7528\u4e8ek8s 1.23.5\u7684ingress-controller\u6587\u4ef6\u4e5f\u662f\u91c7\u7528DaemonSet\uff0c\u914d\u7f6e\u65b9\u6cd5\u4e0e\u4e0a\u9762\u4e00\u6837\uff0cdeploy.yaml\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: ingress-nginx\n  labels:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n\n---\n# Source: ingress-nginx\/templates\/controller-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx\n  namespace: ingress-nginx\nautomountServiceAccountToken: true\n---\n# Source: ingress-nginx\/templates\/controller-configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\ndata:\n  allow-snippet-annotations: 'true'\n---\n# Source: ingress-nginx\/templates\/clusterrole.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n  name: ingress-nginx\nrules:\n  - apiGroups:\n      - ''\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - ''\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - ''\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - ''\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n---\n# Source: ingress-nginx\/templates\/clusterrolebinding.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n  name: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\n# Source: ingress-nginx\/templates\/controller-role.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: Role\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx\n  namespace: ingress-nginx\nrules:\n  - apiGroups:\n      - ''\n    resources:\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - ''\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - endpoints\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - ''\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - ''\n    resources:\n      - configmaps\n    resourceNames:\n      - ingress-controller-leader\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - ''\n    resources:\n      - configmaps\n    verbs:\n      - create\n  - apiGroups:\n      - ''\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n---\n# Source: ingress-nginx\/templates\/controller-rolebinding.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx\n  namespace: ingress-nginx\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx\n    namespace: ingress-nginx\n---\n# Source: ingress-nginx\/templates\/controller-service-webhook.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx-controller-admission\n  namespace: ingress-nginx\nspec:\n  type: ClusterIP\n  ports:\n    - name: https-webhook\n      port: 443\n      targetPort: webhook\n      appProtocol: https\n  selector:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/component: controller\n---\n# Source: ingress-nginx\/templates\/controller-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  annotations:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  type: ClusterIP\n  #externalTrafficPolicy: Local\n  ipFamilyPolicy: SingleStack\n  ipFamilies:\n    - IPv4\n  ports:\n    - name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n      appProtocol: http\n    - name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n      appProtocol: https\n  selector:\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/component: controller\n---\n# Source: ingress-nginx\/templates\/controller-deployment.yaml\napiVersion: apps\/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: ingress-nginx-controller\n  namespace: ingress-nginx\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io\/name: ingress-nginx\n      app.kubernetes.io\/instance: ingress-nginx\n      app.kubernetes.io\/component: controller\n  revisionHistoryLimit: 10\n  minReadySeconds: 0\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io\/name: ingress-nginx\n        app.kubernetes.io\/instance: ingress-nginx\n        app.kubernetes.io\/component: controller\n    spec:\n      dnsPolicy: ClusterFirst\n      containers:\n        - name: controller\n          image: registry.cn-hangzhou.aliyuncs.com\/google_containers\/nginx-ingress-controller:v1.1.1\n          imagePullPolicy: IfNotPresent\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - \/wait-shutdown\n          args:\n            - \/nginx-ingress-controller\n            - --publish-service=$(POD_NAMESPACE)\/ingress-nginx-controller\n            - --election-id=ingress-controller-leader\n            - --controller-class=k8s.io\/ingress-nginx\n            - --configmap=$(POD_NAMESPACE)\/ingress-nginx-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=\/usr\/local\/certificates\/cert\n            - --validating-webhook-key=\/usr\/local\/certificates\/key\n          securityContext:\n            capabilities:\n              drop:\n                - ALL\n              add:\n                - NET_BIND_SERVICE\n            runAsUser: 101\n            allowPrivilegeEscalation: true\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: LD_PRELOAD\n              value: \/usr\/local\/lib\/libmimalloc.so\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: \/healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: \/healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n            - name: https\n              containerPort: 443\n              protocol: TCP\n            - name: webhook\n              containerPort: 8443\n              protocol: TCP\n          volumeMounts:\n            - name: webhook-cert\n              mountPath: \/usr\/local\/certificates\/\n              readOnly: true\n          resources:\n            requests:\n              cpu: 100m\n              memory: 90Mi\n      nodeSelector:\n        kubernetes.io\/os: linux\n        ingress-nginx-ready: 'true'\n      serviceAccountName: ingress-nginx\n      hostNetwork: true\n      terminationGracePeriodSeconds: 300\n      volumes:\n        - name: webhook-cert\n          secret:\n            secretName: ingress-nginx-admission\n---\n# Source: ingress-nginx\/templates\/controller-ingressclass.yaml\n# We don't support namespaced ingressClass yet\n# So a ClusterRole and a ClusterRoleBinding is required\napiVersion: networking.k8s.io\/v1\nkind: IngressClass\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: nginx\n  namespace: ingress-nginx\nspec:\n  controller: k8s.io\/ingress-nginx\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/validating-webhook.yaml\n# before changing this value, check the required kubernetes version\n# https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/#prerequisites\napiVersion: admissionregistration.k8s.io\/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\n  name: ingress-nginx-admission\nwebhooks:\n  - name: validate.nginx.ingress.kubernetes.io\n    matchPolicy: Equivalent\n    rules:\n      - apiGroups:\n          - networking.k8s.io\n        apiVersions:\n          - v1\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - ingresses\n    failurePolicy: Fail\n    sideEffects: None\n    admissionReviewVersions:\n      - v1\n    clientConfig:\n      service:\n        namespace: ingress-nginx\n        name: ingress-nginx-controller-admission\n        path: \/networking\/v1\/ingresses\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/clusterrole.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRole\nmetadata:\n  name: ingress-nginx-admission\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/clusterrolebinding.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: ingress-nginx-admission\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/role.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: Role\nmetadata:\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nrules:\n  - apiGroups:\n      - ''\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/rolebinding.yaml\napiVersion: rbac.authorization.k8s.io\/v1\nkind: RoleBinding\nmetadata:\n  name: ingress-nginx-admission\n  namespace: ingress-nginx\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-admission\n    namespace: ingress-nginx\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/job-createSecret.yaml\napiVersion: batch\/v1\nkind: Job\nmetadata:\n  name: ingress-nginx-admission-create\n  namespace: ingress-nginx\n  annotations:\n    helm.sh\/hook: pre-install,pre-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nspec:\n  template:\n    metadata:\n      name: ingress-nginx-admission-create\n      labels:\n        helm.sh\/chart: ingress-nginx-4.0.15\n        app.kubernetes.io\/name: ingress-nginx\n        app.kubernetes.io\/instance: ingress-nginx\n        app.kubernetes.io\/version: 1.1.1\n        app.kubernetes.io\/managed-by: Helm\n        app.kubernetes.io\/component: admission-webhook\n    spec:\n      containers:\n        - name: create\n          image: registry.cn-hangzhou.aliyuncs.com\/google_containers\/kube-webhook-certgen:v1.1.1 \n          imagePullPolicy: IfNotPresent\n          args:\n            - create\n            - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc\n            - --namespace=$(POD_NAMESPACE)\n            - --secret-name=ingress-nginx-admission\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          securityContext:\n            allowPrivilegeEscalation: false\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-admission\n      nodeSelector:\n        kubernetes.io\/os: linux\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 2000\n---\n# Source: ingress-nginx\/templates\/admission-webhooks\/job-patch\/job-patchWebhook.yaml\napiVersion: batch\/v1\nkind: Job\nmetadata:\n  name: ingress-nginx-admission-patch\n  namespace: ingress-nginx\n  annotations:\n    helm.sh\/hook: post-install,post-upgrade\n    helm.sh\/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: admission-webhook\nspec:\n  template:\n    metadata:\n      name: ingress-nginx-admission-patch\n      labels:\n        helm.sh\/chart: ingress-nginx-4.0.15\n        app.kubernetes.io\/name: ingress-nginx\n        app.kubernetes.io\/instance: ingress-nginx\n        app.kubernetes.io\/version: 1.1.1\n        app.kubernetes.io\/managed-by: Helm\n        app.kubernetes.io\/component: admission-webhook\n    spec:\n      containers:\n        - name: patch\n          image: registry.cn-hangzhou.aliyuncs.com\/google_containers\/kube-webhook-certgen:v1.1.1\n          imagePullPolicy: IfNotPresent\n          args:\n            - patch\n            - --webhook-name=ingress-nginx-admission\n            - --namespace=$(POD_NAMESPACE)\n            - --patch-mutating=false\n            - --secret-name=ingress-nginx-admission\n            - --patch-failure-policy=Fail\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          securityContext:\n            allowPrivilegeEscalation: false\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-admission\n      nodeSelector:\n        kubernetes.io\/os: linux\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 2000\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884ckubectl apply -f deploy.yaml\u521b\u5efapod\uff0c\u6267\u884ckubectl get po -n ingress-nginx -o wide\u67e5\u770b\u521b\u5efa\u7684pod\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"141\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/5.png\" alt=\"\" class=\"wp-image-7967\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/5.png 710w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/5-300x60.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/5-600x119.png 600w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece\u4e0a\u56fe\u53ef\u4ee5\u770b\u51fa\uff0c\u56e0\u4e3a\u901a\u8fc7DaemonSet\u65b9\u5f0f\u521b\u5efa\uff0c\u56e0\u6b64\u4e24\u4e2apod\u5206\u5e03\u4e8e\u4e24\u4e2a\u8282\u70b9\u4e0a\uff0cadmission\u540d\u5b57\u7684Pod\u663e\u793aCompleted\u8868\u793a\u6b63\u5e38<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.23.5\u7684\u8d44\u6e90\u6587\u4ef6\u4f1a\u521b\u5efaingressclass\uff0c\u540d\u79f0\u4e3anginx\uff0c\u63a7\u5236\u5668\u4e3ak8s.io\/ingress-nginx\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"119\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-4.png\" alt=\"\" class=\"wp-image-8316\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-4.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-4-300x50.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/1-4-600x101.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ec0\u4e48\u662fingressclass\u5462\uff1f\u5982\u679c\u96c6\u7fa4\u4e2d\u5b9a\u4e49\u4e86\u591a\u4e2aingressclass\uff0c\u90a3\u4e48\u5b9a\u4e49ingress\u89c4\u5219\u6587\u4ef6\u7684\u65f6\u5019\uff0c\u5c31\u9700\u8981\u6307\u5b9a\u54ea\u4e2a\u63a7\u5236\u5668\u6765\u89e3\u6790\u89c4\u5219\uff0c\u4e0a\u56fe\u4e2d\u6211\u4eec\u5b89\u88c5\u5b8c\u6210\u540e\u53ea\u5b9a\u4e49\u4e86\u4e00\u4e2aingressclass<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>\u9a8c\u8bc1<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u5728\u547d\u540d\u7a7a\u95f4update\u4e2d\u521b\u5efa\u4e00\u4e2aPod\uff0cyaml\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx                     #deployment\u540d\u5b57\n  namespace: update             #\u547d\u540d\u7a7a\u95f4\n  labels:\n    name: deployment-nginx\nspec:\n  selector:\n    matchLabels:\n      app: nginx            #\u7ba1\u7406\u6807\u7b7e\u4e3anginx-pod\u7684pod\n  replicas: 2                    #\u526f\u672c\u4e2a\u6570\u4e3a2\n  template:                      #\u521b\u5efapod\u7684\u6a21\u677f\n    metadata:\n      labels:\n        app: nginx           #pod\u6807\u7b7e\uff0c\u6807\u7b7e\u9009\u62e9\u5668\u5c31\u662f\u9009\u62e9\u8fd9\u4e2a\u6807\u7b7e\n    spec:\n      containers:\n      - name: nginx\n        image: nginx\n        ports:\n        - containerPort: 80\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"108\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/7.png\" alt=\"\" class=\"wp-image-7973\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/7.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/7-300x46.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/7-600x91.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u5728\u547d\u540d\u7a7a\u95f4update\u4e2d\u521b\u5efaservice\uff0c\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: Service\nmetadata:\n  name: service-nginx\n  namespace: update\nspec:\n  ports:\n  - port: 8082\n    protocol: TCP\n    targetPort: 80\n  selector:\n    app: nginx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u521b\u5efaingress\u7b56\u7565\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: nginx-update\n  namespace: update\n  annotations:\n    nginx.ingress.kubernetes.io\/rewrite-target: \/\nspec:\n  ingressClassName: nginx             #\u6307\u5b9aIngressClass\u540d\u79f0\n  rules:\n  - host: www.gong.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: service-nginx\n            port:\n              number: 8082<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"100\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-5.png\" alt=\"\" class=\"wp-image-8323\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-5.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-5-300x42.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/05\/3-5-600x85.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0hosts\u540e\uff0c\u8bbf\u95ee\u5373\u53ef\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"707\" height=\"353\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/10.png\" alt=\"\" class=\"wp-image-7982\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/10.png 707w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/10-300x150.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2022\/04\/10-600x300.png 600w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff1a\u4e0a\u9762\u7684ingress\u89c4\u5219\u6587\u4ef6\u4e2d\u6307\u5b9a\u4e86\u4e86ingressClassName\u4e3anginx\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6eingressClassName\u53c2\u6570\uff0c\u90a3\u4e48\u8bf7\u6c42\u7684\u65f6\u5019\u4f1a\u63d0\u793a404\u9519\u8bef\uff0c\u56e0\u4e3a\u627e\u4e0d\u5230ingress\u63a7\u5236\u5668\uff0c\u6b64\u65f6\u53ef\u4ee5\u8bbe\u7f6e\u4e00\u4e2a\u9ed8\u8ba4\u7684ingressclass\uff0c\u6bd4\u5982\u6211\u4eec\u8bbe\u7f6e\u5b89\u88c5\u540e\u81ea\u5e26\u7684\u540d\u79f0\u4e3anginx\u7684ingressclass\u4e3a\u9ed8\u8ba4\u7684\uff0c\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl edit ingressclass nginx\n#\u65b0\u589e\u5185\u5bb9\u5982\u4e0b\uff1a\ningressclass.kubernetes.io\/is-default-class: \"true\"<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"281\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/12-3.png\" alt=\"\" class=\"wp-image-11451\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/12-3.png 708w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/12-3-300x119.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/02\/12-3-600x238.png 600w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u5b8c\u6210\u540e\uff0c\u5373\u4f7f\u4e0d\u7528\u914d\u7f6eingressClassName\u53c2\u6570\uff0c\u5c31\u4f1a\u9ed8\u8ba4\u4f7f\u7528nginx\u8fd9\u4e2aingressclass<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>\u9644\u52a0<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u9700\u8981\u521b\u5efa\u591a\u4e2aingressclass\uff0c\u53ef\u5355\u72ec\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: networking.k8s.io\/v1\nkind: IngressClass\nmetadata:\n  labels:\n    helm.sh\/chart: ingress-nginx-4.0.15\n    app.kubernetes.io\/name: ingress-nginx\n    app.kubernetes.io\/instance: ingress-nginx\n    app.kubernetes.io\/version: 1.1.1\n    app.kubernetes.io\/managed-by: Helm\n    app.kubernetes.io\/component: controller\n  name: nginx-class                          #\u81ea\u5b9a\u4e49nginx-class\u540d\u5b57\n  namespace: update                          #\u6307\u5b9a\u547d\u540d\u7a7a\u95f4\uff0c\u548cpod\u4ee5\u53caservice\u5728\u540c\u4e00\u4e2a\u547d\u540d\u7a7a\u95f4\nspec:\n  controller: k8s.io\/ingress-nginx           #\u5b9a\u4e49\u7684controller\u4e3a\u4e0a\u9762\u521b\u5efa\u7684ingress-controller<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ingress\u652f\u6301\u7070\u5ea6\u53d1\u5e03(\u91d1\u4e1d\u96c0\u53d1\u5e03)<\/p>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\u610f\uff1aIngress\u4e5f\u6709\u5c40\u9650\u6027\uff0c\u80fd\u88abIngress\u805a\u5408\u7684Service\u670d\u52a1\uff0c\u53ea\u80fd\u662fhttp\/https\u670d\u52a1\uff0c\u4e0d\u80fd\u662f\u5176\u4ed6\u534f\u8bae\u7684\u670d\u52a1\uff0c\u5982\u679c\u8fd8\u6709\u5176\u4ed6\u534f\u8bae\u7684\u670d\u52a1\uff0c\u53ef\u4ee5\u4f7f\u7528Gateway API\u66ff\u4ee3\uff0cGateway API\u8fd8\u652f\u6301UDP\uff0c\u4e0eService Mesh\u65e0\u7f1d\u5bf9\u63a5<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Service\u662fKubernetes\u7684\u6838\u5fc3\u6982\u5ff5\uff0c\u901a\u8fc7\u521b\u5efaService\uff0c\u53ef\u4ee5\u4e3a\u4e00\u7ec4\u5177\u6709\u76f8\u540c\u529f\u80fd\u7684\u5bb9\u5668\u5e94\u7528\u63d0\u4f9b\u4e00 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5096,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[93,23],"tags":[],"class_list":["post-5048","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","category-rong"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/5048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=5048"}],"version-history":[{"count":133,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/5048\/revisions"}],"predecessor-version":[{"id":19460,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/5048\/revisions\/19460"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/5096"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=5048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=5048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=5048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}