{"id":17994,"date":"2025-06-23T10:57:28","date_gmt":"2025-06-23T02:57:28","guid":{"rendered":"https:\/\/92it.top\/?p=17994"},"modified":"2025-06-23T10:57:28","modified_gmt":"2025-06-23T02:57:28","slug":"%e4%ba%91%e5%8e%9f%e7%94%9f-%e5%ae%b9%e5%99%a8%e7%bc%96%e6%8e%92%e6%8a%80%e6%9c%af","status":"publish","type":"post","link":"https:\/\/92it.top\/?p=17994","title":{"rendered":"\u4e91\u539f\u751f-\u5bb9\u5668\u7f16\u6392\u6280\u672f"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">\u4e16\u754c\u4e0a\u6709\u4e24\u4e2a\u8bbe\u8ba1\u8f6f\u4ef6\u7684\u65b9\u6cd5\uff0c\u4e00\u79cd\u65b9\u6cd5\u662f\u8bbe\u8ba1\u7684\u5c3d\u91cf\u7b80\u5355\uff0c\u4ee5\u81f3\u4e8e\u660e\u663e\u6ca1\u6709\u4ec0\u4e48\u7f3a\u9677\uff0c\u53e6\u5916\u4e00\u79cd\u65b9\u5f0f\u662f\u4f7f\u4ed6\u5c3d\u91cf\u7684\u590d\u6742\uff0c\u4ee5\u81f3\u4e8e\u5176\u7f3a\u9677\u4e0d\u90a3\u4e48\u660e\u663e\u3002<br><br>\u2014\u2014 by \u8ba1\u7b97\u673a\u79d1\u5b66\u5bb6 C.A.R. Hoare<\/pre>\n\n\n\n<p>\u968f\u7740\u5bb9\u5668\u5316\u67b6\u6784\u5927\u89c4\u6a21\u5e94\u7528\uff0c\u624b\u52a8\u7ba1\u7406\u5927\u91cf\u5bb9\u5668\u7684\u65b9\u5f0f\u53d8\u5f97\u5f02\u5e38\u8270\u96be\u3002\u4e3a\u4e86\u51cf\u8f7b\u7ba1\u7406\u5bb9\u5668\u7684\u5fc3\u667a\u8d1f\u62c5\uff0c\u5b9e\u73b0\u5bb9\u5668\u8c03\u5ea6\u3001\u6269\u5c55\u3001\u6545\u969c\u6062\u590d\u7b49\u81ea\u52a8\u5316\u673a\u5236\uff0c\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u5e94\u8fd0\u800c\u751f\u3002<\/p>\n\n\n\n<p>\u8fc7\u53bb\u5341\u5e74\u95f4\uff0cKubernetes \u53d1\u5c55\u6210\u4e3a\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u7684\u4e8b\u5b9e\u6807\u51c6\uff0c\u4e5f\u6210\u4e3a\u5927\u6570\u636e\u5206\u6790\u3001\u673a\u5668\u5b66\u4e60\u4ee5\u53ca\u5728\u7ebf\u670d\u52a1\u7b49\u9886\u57df\u5e7f\u6cdb\u8ba4\u53ef\u7684\u6700\u4f73\u6280\u672f\u5e95\u5ea7\u3002\u7136\u800c\uff0cKubernetes \u5728\u89e3\u51b3\u590d\u6742\u95ee\u9898\u7684\u540c\u65f6\uff0c\u672c\u8eab\u4e5f\u6f14\u53d8\u6210\u5f53\u4eca\u6700\u590d\u6742\u7684\u8f6f\u4ef6\u7cfb\u7edf\u4e4b\u4e00\u3002\u76ee\u524d\uff0c\u5305\u62ec\u5b98\u65b9\u6587\u6863\u5728\u5185\u7684\u5927\u591a\u6570 Kubernetes \u8d44\u6599\u90fd\u805a\u7126\u4e8e\u201c\u600e\u4e48\u505a\u201d\uff0c\u9c9c\u6709\u89e3\u91ca\u201c\u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a\u201d\u3002\u81ea 2015 \u5e74\u8d77\uff0cGoogle \u9646\u7eed\u53d1\u5e03\u4e86\u300aBorg, Omega, and Kubernetes\u300b\u53ca\u300aLarge-scale cluster management at Google with Borg\u300b\u7b49\u8bba\u6587\uff0c\u5206\u4eab\u4e86 Google \u5185\u90e8\u5f00\u53d1 Borg\u3001Omega \u548c Kubernetes \u7cfb\u7edf\u7684\u7ecf\u9a8c\u4e0e\u6559\u8bad\u3002\u672c\u7ae0\uff0c\u6211\u4eec\u5c06\u4ece\u8fd9\u51e0\u7bc7\u8bba\u6587\u5c55\u5f00\uff0c\u8ba8\u8bba\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u4e2d\u5173\u4e8e\u7f51\u7edc\u901a\u4fe1\u3001\u6301\u4e45\u5316\u5b58\u50a8\u3001\u8d44\u6e90\u6a21\u578b\u548c\u7f16\u6392\u8c03\u5ea6\u7b49\u65b9\u9762\u7684\u8bbe\u8ba1\u539f\u7406\u548c\u5e94\u7528\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-1024x541.png\" alt=\"\" class=\"wp-image-17996\" style=\"width:476px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-1024x541.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-300x159.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-768x406.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-1536x812.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-2048x1083.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-830x439.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-230x122.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-350x185.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-324-480x254.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p> \u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u7684\u6f14\u8fdb<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8fd1\u51e0\u5e74\uff0c\u4e1a\u754c\u5bf9\u5bb9\u5668\u6280\u672f\u5174\u8da3\u8d8a\u6765\u8d8a\u5927\uff0c\u5927\u91cf\u7684\u516c\u53f8\u5f00\u59cb\u9010\u6b65\u5c06\u865a\u62df\u673a\u66ff\u6362\u6210\u5bb9\u5668\u3002<\/p>\n\n\n\n<p>\u5b9e\u9645\u4e0a\uff0c\u65e9\u5728\u5341\u51e0\u5e74\u524d\uff0cGoogle \u5185\u90e8\u5c31\u5df2\u5f00\u59cb\u5927\u89c4\u6a21\u7684\u5b9e\u8df5\u5bb9\u5668\u6280\u672f\u4e86\u3002Google \u5148\u540e\u8bbe\u8ba1\u4e86\u4e09\u5957\u4e0d\u540c\u7684\u5bb9\u5668\u7ba1\u7406\u7cfb\u7edf\uff0cBorg\u3001Omega \u548c Kubernetes\uff0c\u5e76\u5411\u5916\u754c\u5206\u4eab\u4e86\u5927\u91cf\u7684\u8bbe\u8ba1\u601d\u60f3\u3001\u8bba\u6587\u548c\u6e90\u7801\uff0c\u76f4\u63a5\u4fc3\u8fdb\u4e86\u5bb9\u5668\u6280\u672f\u7684\u666e\u53ca\u548c\u53d1\u5c55\uff0c\u5bf9\u6574\u4e2a\u884c\u4e1a\u7684\u6280\u672f\u6f14\u8fdb\u4ea7\u751f\u4e86\u6df1\u8fdc\u7684\u5f71\u54cd\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Borg \u7cfb\u7edf<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Google \u5185\u90e8\u7b2c\u4e00\u4ee3\u5bb9\u5668\u7ba1\u7406\u7cfb\u7edf\u53eb Borg\u3002<\/p>\n\n\n\n<p>Borg \u7684\u67b6\u6784\u5982\u56fe 7-1 \u6240\u793a\uff0c\u662f\u5178\u578b\u7684 Master\uff08\u56fe\u4e2d BorgMaster) + Agent\uff08\u56fe\u4e2d\u7684 Borglet\uff09\u67b6\u6784\u3002\u7528\u6237\u901a\u8fc7\u547d\u4ee4\u884c\u6216\u6d4f\u89c8\u5668\u5c06\u4efb\u52a1\u63d0\u4ea4\u7ed9 BorgMaster\uff0c\u540e\u8005\u8d1f\u8d23\u8bb0\u5f55\u4efb\u52a1\u4e0e\u8282\u70b9\u7684\u6620\u5c04\u5173\u7cfb\uff08\u5982\u201c\u4efb\u52a1 A \u8fd0\u884c\u5728\u8282\u70b9 X \u4e0a\u201d\uff09\u3002\u968f\u540e\uff0c\u8282\u70b9\u4e2d\u7684 Borglet \u4e0e BorgMaster \u8fdb\u884c\u901a\u4fe1\uff0c\u83b7\u53d6\u5206\u914d\u7ed9\u81ea\u5df1\u7684\u4efb\u52a1\uff0c\u7136\u540e\u542f\u52a8\u5bb9\u5668\u6267\u884c\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"896\" height=\"856\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP.png\" alt=\"\" class=\"wp-image-17997\" style=\"width:496px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP.png 896w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-300x287.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-768x734.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-830x793.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-230x220.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-350x334.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/borg-arch-BeAly4mP-480x459.png 480w\" sizes=\"(max-width: 896px) 100vw, 896px\" \/><\/figure><\/div>\n\n\n<p>\u5f00\u53d1 Borg \u7684\u8fc7\u7a0b\u4e2d\uff0cGoogle \u7684\u5de5\u7a0b\u5e08\u4e3a Borg \u8bbe\u8ba1\u4e86\u4e24\u79cd\u5de5\u4f5c\u8d1f\u8f7d\uff08workload\uff09\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u957f\u671f\u8fd0\u884c\u670d\u52a1<\/strong>\uff08Long-Running Service\uff09\uff1a\u901a\u5e38\u662f\u5bf9\u8bf7\u6c42\u5ef6\u8fdf\u654f\u611f\u7684\u5728\u7ebf\u4e1a\u52a1\uff0c\u4f8b\u5982 Gmail\u3001Google Docs \u548c Web \u641c\u7d22\u4ee5\u53ca\u5185\u90e8\u57fa\u7840\u8bbe\u65bd\u670d\u52a1\uff1b<\/li>\n\n\n\n<li><strong>\u6279\u5904\u7406\u4efb\u52a1<\/strong>\uff08Batch Job\uff09\uff1a\u7528\u4e8e\u4e00\u6b21\u6027\u5904\u7406\u5927\u91cf\u6570\u636e\u3001\u9700\u8981\u8f83\u957f\u7684\u8fd0\u884c\u65f6\u95f4\u548c\u8f83\u591a\u7684\u8ba1\u7b97\u8d44\u6e90\u7684\u201c\u6279\u5904\u7406\u4efb\u52a1\u201d\uff08Batch Job\uff09\u3002\u5178\u578b\u5982 Apache Hadoop \u6216 Spark \u6846\u67b6\u6267\u884c\u7684\u5404\u7c7b\u79bb\u7ebf\u8ba1\u7b97\u4efb\u52a1\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u533a\u5206 2 \u79cd\u4e0d\u540c\u7c7b\u578b\u5de5\u4f5c\u8d1f\u8f7d\u7684\u539f\u56e0\u5728\u4e8e\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u4e24\u8005\u8fd0\u884c\u72b6\u6001\u4e0d\u540c<\/strong>\uff1a\u957f\u671f\u8fd0\u884c\u670d\u52a1\u5b58\u5728\u201c\u73af\u5883\u51c6\u5907ok\uff0c\u4f46\u8fdb\u7a0b\u6ca1\u6709\u542f\u52a8\u201d\u3001\u201c\u5065\u5eb7\u68c0\u67e5\u5931\u8d25\u201d\u7b49\u72b6\u6001\uff0c\u8fd9\u4e9b\u72b6\u6001\u662f\u6279\u5904\u7406\u4efb\u52a1\u6ca1\u6709\u7684\u3002\u8fd0\u884c\u72b6\u6001\u4e0d\u540c\uff0c\u51b3\u5b9a\u4e86\u4e24\u7c7b\u5e94\u7528\u7a0b\u5e8f\u751f\u547d\u5468\u671f\u7ba1\u7406\u3001\u76d1\u63a7\u3001\u8d44\u6e90\u5206\u914d\u64cd\u4f5c\u7684\u673a\u5236\u4e0d\u540c\uff1b<\/li>\n\n\n\n<li><strong>\u5173\u6ce8\u70b9\u4e0e\u4f18\u5316\u65b9\u5411\u4e0d\u4e00\u6837<\/strong>\uff1a\u4e00\u822c\u800c\u8a00\uff0c\u957f\u671f\u8fd0\u884c\u670d\u52a1\u5173\u6ce8\u7684\u662f\u201c\u53ef\u7528\u6027\u201d\uff0c\u6279\u5904\u7406\u4efb\u52a1\u5173\u6ce8\u7684\u662f\u201c\u541e\u5410\u91cf\u201d\uff08Throughput\uff09\uff0c\u5373\u5355\u4f4d\u65f6\u95f4\u5185\u7cfb\u7edf\u80fd\u591f\u5904\u7406\u7684\u4efb\u52a1\u6570\u91cf\u6216\u6570\u636e\u91cf\u3002\u4e24\u8005\u5173\u6ce8\u70b9\u4e0d\u540c\uff0c\u8fdb\u4e00\u6b65\u5bfc\u81f4\u5185\u90e8\u5b9e\u73b0\u673a\u5236\u7684\u5206\u5316\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5728 Borg \u7cfb\u7edf\u4e2d\uff0c\u5927\u591a\u6570\u957f\u671f\u8fd0\u884c\u7684\u670d\u52a1\uff08Long-Running Service\uff09\u88ab\u8d4b\u4e88\u9ad8\u4f18\u5148\u7ea7\uff08\u6b64\u7c7b\u4efb\u52a1\u5728 Borg \u4e2d\u79f0\u4e3a &#8220;prod&#8221;\uff09\uff0c\u800c\u6279\u5904\u7406\u4efb\u52a1\uff08Batch Job\uff09\u5219\u88ab\u8d4b\u4e88\u4f4e\u4f18\u5148\u7ea7\uff08\u6b64\u7c7b\u4efb\u52a1\u5728 Borg \u4e2d\u79f0\u4e3a &#8220;non-prod&#8221;\uff09\u3002Borg \u7684\u4efb\u52a1\u4f18\u5148\u7ea7\u8bbe\u8ba1\u57fa\u4e8e\u201c\u8d44\u6e90\u62a2\u5360\u201d\u6a21\u578b\uff0c\u5373\u9ad8\u4f18\u5148\u7ea7\u7684 prod \u4efb\u52a1\u53ef\u4ee5\u62a2\u5360\u4f4e\u4f18\u5148\u7ea7\u7684 non-prod \u4efb\u52a1\u6240\u5360\u7528\u7684\u8d44\u6e90\u3002<\/p>\n\n\n\n<p>\u8fd9\u4e00\u8bbe\u8ba1\u7684\u5e95\u5c42\u6280\u672f\u7531 Google \u8d21\u732e\u7ed9 Linux \u5185\u6838\u7684 cgroups \u652f\u6491\u3002cgroups \u662f\u5bb9\u5668\u6280\u672f\u7684\u57fa\u7840\u4e4b\u4e00\uff0c\u63d0\u4f9b\u4e86\u5bf9\u7f51\u7edc\u3001\u8ba1\u7b97\u3001\u5b58\u50a8\u7b49\u5404\u7c7b\u8d44\u6e90\u7684\u9694\u79bb\uff087.2 \u8282\uff0c\u7b14\u8005\u5c06\u8be6\u7ec6\u4ecb\u7ecd cgroups \u6280\u672f\uff09\u3002Borg \u901a\u8fc7 cgroups \u6280\u672f\uff0c\u5b9e\u73b0\u4e86\u4e0d\u540c\u7c7b\u578b\u5de5\u4f5c\u8d1f\u8f7d\u7684\u6df7\u5408\u90e8\u7f72\uff0c\u5171\u4eab\u4e3b\u673a\u8d44\u6e90\u540c\u65f6\u4e92\u4e0d\u5e72\u6270\u3002<\/p>\n\n\n\n<p>\u968f\u7740 Google \u5185\u90e8\u8d8a\u6765\u8d8a\u591a\u7684\u5e94\u7528\u7a0b\u5e8f\u88ab\u90e8\u7f72\u5230 Borg \u4e0a\uff0c\u4e1a\u52a1\u56e2\u961f\u4e0e\u57fa\u7840\u67b6\u6784\u56e2\u961f\u5f00\u53d1\u4e86\u5927\u91cf\u56f4\u7ed5 Borg \u7684\u7ba1\u7406\u5de5\u5177\u548c\u670d\u52a1\uff0c\u5982\u8d44\u6e90\u9700\u6c42\u9884\u6d4b\u3001\u81ea\u52a8\u6269\u7f29\u5bb9\u3001\u670d\u52a1\u53d1\u73b0\u4e0e\u8d1f\u8f7d\u5747\u8861\u3001\u76d1\u63a7\u7cfb\u7edf\uff08Brogmon\uff0cPrometheus \u7684\u524d\u8eab\uff0c\u7b14\u8005\u5c06\u5728\u7b2c\u4e5d\u7ae0\u8be6\u7ec6\u4ecb\u7ecd\uff09\u7b49\uff0c\u5e76\u9010\u6e10\u5f62\u6210\u4e86\u57fa\u4e8e Borg \u7684\u5185\u90e8\u751f\u6001\u7cfb\u7edf\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Omega \u7cfb\u7edf<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Borg \u751f\u6001\u7684\u53d1\u5c55\u7531 Google \u5185\u90e8\u4e0d\u540c\u56e2\u961f\u63a8\u52a8\u3002\u4ece\u8fed\u4ee3\u7ed3\u679c\u6765\u770b\uff0cBorg \u751f\u6001\u662f\u4e00\u7cfb\u5217\u5f02\u6784\u4e14\u81ea\u53d1\u5f62\u6210\u7684\u5de5\u5177\u548c\u7cfb\u7edf\uff0c\u800c\u4e0d\u662f\u4e00\u4e2a\u7cbe\u5fc3\u8bbe\u8ba1\u7684\u6574\u4f53\u67b6\u6784\u3002<\/p>\n\n\n\n<p>\u4e3a\u4f7f Borg \u751f\u6001\u66f4\u7b26\u5408\u8f6f\u4ef6\u5de5\u7a0b\u89c4\u8303\uff0cGoogle \u5728\u6c72\u53d6 Borg \u8bbe\u8ba1\u4e0e\u8fd0\u7ef4\u7ecf\u9a8c\u7684\u57fa\u7840\u4e0a\u5f00\u53d1\u4e86 Omega \u7cfb\u7edf\u3002\u76f8\u6bd4 Borg\uff0cOmega \u7684\u6700\u5927\u6539\u8fdb\u662f\u5c06 BorgMaster \u7684\u529f\u80fd\u62c6\u5206\u4e3a\u591a\u4e2a\u4ea4\u4e92\u7ec4\u4ef6\uff0c\u800c\u4e0d\u518d\u662f\u4e00\u4e2a\u5355\u4f53\u3001\u4e2d\u5fc3\u5316\u7684 Master\u3002<\/p>\n\n\n\n<p>\u6b64\u5916\uff0cOmega \u8fd8\u663e\u8457\u63d0\u5347\u4e86\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u4efb\u52a1\u8c03\u5ea6\u6548\u7387\uff1a<\/p>\n\n\n\n<ul>\n<li>Omega \u57fa\u4e8e Paxos \u7b97\u6cd5\u5b9e\u73b0\u4e86\u4e00\u5957\u5206\u5e03\u5f0f\u4e00\u81f4\u6027\u548c\u9ad8\u53ef\u7528\u7684\u952e\u503c\u5b58\u50a8\uff08\u5185\u90e8\u79f0\u4e3a Store\uff09\uff0c\u96c6\u7fa4\u7684\u6240\u6709\u72b6\u6001\u90fd\u4fdd\u5b58\u5728 Store \u4e2d\uff1b<\/li>\n\n\n\n<li>\u62c6\u5206\u540e\u7684\u7ec4\u4ef6\uff08\u5982\u5bb9\u5668\u7f16\u6392\u8c03\u5ea6\u5668\u3001\u4e2d\u592e\u63a7\u5236\u5668\uff09\u53ef\u4ee5\u76f4\u63a5\u8bbf\u95ee Store\uff1b<\/li>\n\n\n\n<li>\u57fa\u4e8e Store\uff0cOmega \u63d0\u51fa\u4e86\u4e00\u79cd\u5171\u4eab\u72b6\u6001\u7684\u53cc\u5faa\u73af\u8c03\u5ea6\u7b56\u7565\uff0c\u89e3\u51b3\u4e86\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u4efb\u52a1\u8c03\u5ea6\u6548\u7387\u95ee\u9898\u3002\u6b64\u8bbe\u8ba1\u53cd\u54fa\u4e86 Borg \u7cfb\u7edf\uff0c\u53c8\u5ef6\u7eed\u5230\u4e86 Kubernetes \u4e4b\u4e2d\uff08\u7b14\u8005\u5c06\u5728\u672c\u7ae0 7.7.3 \u8282\u8be6\u7ec6\u4ecb\u7ecd\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5982\u56fe 7-2 \u6240\u793a\uff0c\u6539\u8fdb\u540e\u7684 Borg \u548c Omega \u7cfb\u7edf\u6210\u4e3a Google \u6574\u5957\u57fa\u7840\u8bbe\u65bd\u6700\u6838\u5fc3\u7684\u4f9d\u8d56\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"599\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-1024x599.png\" alt=\"\" class=\"wp-image-17998\" style=\"width:522px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-1024x599.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-300x176.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-768x449.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-830x486.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-230x135.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-350x205.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd-480x281.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/Borg-Ds7KVRcd.png 1244w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Kubernetes \u7cfb\u7edf<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Google \u5f00\u53d1\u7684\u7b2c\u4e09\u5957\u5bb9\u5668\u7ba1\u7406\u7cfb\u7edf\u662f Kubernetes\uff0c\u5176\u80cc\u666f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5168\u7403\u8d8a\u6765\u8d8a\u591a\u7684\u5f00\u53d1\u8005\u5f00\u59cb\u5bf9 Linux \u5bb9\u5668\u4ea7\u751f\u5174\u8da3\uff08Linux \u5bb9\u5668\u662f Google \u201c\u5bb6\u5e95\u201d\uff0c\u4f46\u63d0\u5230\u5bb9\u5668\uff0c\u5f00\u53d1\u8005\u4eec\u9996\u5148\u60f3\u5230\u7684\u662f Docker\u3002Google \u5e76\u6ca1\u6709\u5403\u5230\u5bb9\u5668\u6280\u672f\u7684\u7ea2\u5229\uff09\uff1b<\/li>\n\n\n\n<li>\u540c\u65f6\uff0cGoogle \u5c06\u516c\u6709\u4e91\u670d\u52a1\u4f5c\u4e3a\u4e1a\u52a1\u91cd\u70b9\u5e76\u5b9e\u73b0\u6301\u7eed\u589e\u957f\uff08\u867d\u7136 Google \u63d0\u51fa\u4e86\u4e91\u8ba1\u7b97\u7684\u6982\u5ff5\uff0c\u4f46\u5e02\u573a\u88ab AWS \u62a2\u5360\u5148\u673a\u3002Google \u8d77\u4e86\u5927\u65e9\u8d76\u4e86\u4e2a\u665a\u96c6\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>2013 \u5e74\u590f\uff0cGoogle \u7684\u5de5\u7a0b\u5e08\u4eec\u5f00\u59cb\u8ba8\u8bba\u501f\u9274 Borg \u7684\u7ecf\u9a8c\u5f00\u53d1\u65b0\u4e00\u4ee3\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\uff0c\u5e0c\u671b\u901a\u8fc7\u5341\u51e0\u5e74\u7684\u6280\u672f\u79ef\u7d2f\u5f71\u54cd\u4e91\u8ba1\u7b97\u5e02\u573a\u683c\u5c40\u3002Kubernetes \u9879\u76ee\u83b7\u6279\u540e\uff0c 2014 \u5e74 6 \u6708\uff0cGoogle \u5728 DockerCon \u5927\u4f1a\u4e0a\u5ba3\u5e03\u5c06\u5176\u5f00\u6e90\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7\u56fe 7-3 \u89c2\u5bdf Kubernetes \u67b6\u6784\uff0c\u80fd\u770b\u51fa\u5927\u91cf\u8bbe\u8ba1\u6765\u6e90\u4e8e Borg\/Omega \u7cfb\u7edf\uff1a<\/p>\n\n\n\n<ul>\n<li>Master \u7cfb\u7edf\u7531\u591a\u4e2a\u5206\u5e03\u5f0f\u7ec4\u4ef6\u6784\u6210\uff0c\u5305\u62ec API Server\u3001Scheduler\u3001Controller Manager \u548c Cloud Controller Manager\uff1b<\/li>\n\n\n\n<li>Kubernetes \u7684\u6700\u5c0f\u8fd0\u884c\u5355\u5143 Pod\uff0c\u5176\u539f\u578b\u662f Borg \u7cfb\u7edf\u5bf9\u7269\u7406\u8d44\u6e90\u7684\u62bd\u8c61 Alloc\uff1b<\/li>\n\n\n\n<li>\u5de5\u4f5c\u8282\u70b9\u4e0a\u7684 kubelet \u7ec4\u4ef6\uff0c\u5176\u8bbe\u8ba1\u6765\u6e90\u4e8e Borg \u7cfb\u7edf\u4e2d\u5404\u8282\u70b9\u91cc\u9762 Borglet \u7ec4\u4ef6\uff1b<\/li>\n\n\n\n<li>\u57fa\u4e8e Raft \u7b97\u6cd5\u5b9e\u73b0\u7684\u5206\u5e03\u5f0f\u4e00\u81f4\u6027\u952e\u503c\u5b58\u50a8 Etcd\uff0c\u5bf9\u5e94 Omega \u7cfb\u7edf\u4e2d\u57fa\u4e8e Paxos \u7b97\u6cd5\u5b9e\u73b0\u7684 Store\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-1024x526.png\" alt=\"\" class=\"wp-image-18000\" style=\"width:530px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-1024x526.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-300x154.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-768x394.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-1536x788.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-830x426.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-230x118.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-350x180.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326-480x246.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-326.png 2038w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u51fa\u4e8e\u964d\u4f4e\u7528\u6237\u4f7f\u7528\u7684\u95e8\u69db\uff0c\u5e76\u6700\u7ec8\u8fbe\u6210 Google \u4ece\u5e95\u5c42\u8fdb\u519b\u4e91\u8ba1\u7b97\u5e02\u573a\u610f\u56fe\uff0cKubernetes \u7684\u8bbe\u8ba1\u76ee\u6807\u662f<strong>\u4eab\u53d7\u5bb9\u5668\u5e26\u6765\u7684\u8d44\u6e90\u5229\u7528\u7387\u6539\u5584\uff0c\u540c\u65f6\u8ba9\u652f\u6491\u5206\u5e03\u5f0f\u7cfb\u7edf\u7684\u57fa\u7840\u8bbe\u65bd\u6807\u51c6\u5316\u3001\u64cd\u4f5c\u66f4\u7b80\u5355<\/strong>\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u8fdb\u4e00\u6b65\u7406\u89e3\u57fa\u7840\u8bbe\u65bd\u7684\u6807\u51c6\u5316\uff0c\u6765\u770b Kubernetes \u4ece\u4e00\u5f00\u59cb\u5c31\u63d0\u4f9b\u7684\u4e1c\u897f \u2014\u2014 \u7528\u4e8e\u63cf\u8ff0\u5404\u79cd\u8d44\u6e90\u9700\u6c42\u7684 API\uff1a<\/p>\n\n\n\n<ul>\n<li>\u63cf\u8ff0 Pod\u3001Container \u7b49\u8ba1\u7b97\u8d44\u6e90\u9700\u6c42\u7684 API\uff1b<\/li>\n\n\n\n<li>\u63cf\u8ff0 Service\u3001Ingress \u7b49\u7f51\u7edc\u529f\u80fd\u7684 API\uff1b<\/li>\n\n\n\n<li>\u63cf\u8ff0 Volumes \u4e4b\u7c7b\u7684\u6301\u4e45\u5b58\u50a8\u7684 API\uff1b<\/li>\n\n\n\n<li>\u751a\u81f3\u8fd8\u5305\u62ec Service Account \u4e4b\u7c7b\u7684\u670d\u52a1\u8eab\u4efd\u7684 API \u7b49\u7b49\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5404\u4e91\u5382\u5546\u5df2\u7ecf\u5c06 Kubernetes \u7ed3\u6784\u548c\u8bed\u4e49\u5bf9\u63a5\u5230\u5b83\u4eec\u5404\u81ea\u7684\u539f\u751f API \u4e0a\u3002\u6240\u4ee5\uff0cKubernetes \u63cf\u8ff0\u8d44\u6e90\u9700\u6c42\u7684 API \u662f\u8de8\u516c\u6709\u4e91\u3001\u79c1\u6709\u4e91\u548c\u5404\u5bb6\u4e91\u5382\u5546\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\u53ea\u8981\u57fa\u4e8e Kubernetes \u7684\u89c4\u8303\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\uff0c\u90a3\u4e48\u5e94\u7528\u7a0b\u5e8f\u5c31\u80fd\u65e0\u7f1d\u8fc1\u79fb\u5230\u4efb\u4f55\u4e91\u4e2d\u3002<\/p>\n\n\n\n<p><strong>\u63d0\u4f9b\u4e00\u5957\u8de8\u5382\u5546\u7684\u6807\u51c6\u7ed3\u6784\u548c\u8bed\u4e49\u6765\u58f0\u660e\u6838\u5fc3\u57fa\u7840\u8bbe\u65bd\u662f Kubernetes \u8bbe\u8ba1\u7684\u5173\u952e\u3002\u5728\u6b64\u57fa\u7840\u4e0a\uff0c\u5b83\u53c8\u901a\u8fc7 CRD\uff08Custom Resource Define\uff0c\u81ea\u5b9a\u4e49\u8d44\u6e90\u5b9a\u4e49\uff09\u5c06\u8fd9\u4e2a\u8bbe\u8ba1\u6269\u5c55\u5230\u51e0\u4e4e\u6240\u6709\u7684\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90<\/strong>\u3002<\/p>\n\n\n\n<p>\u6709\u4e86 CRD\uff0c\u7528\u6237\u4e0d\u4ec5\u80fd\u58f0\u660e Kubernetes API \u9884\u5b9a\u4e49\u7684\u8ba1\u7b97\u3001\u5b58\u50a8\u3001\u7f51\u7edc\u670d\u52a1\uff0c\u8fd8\u80fd\u58f0\u660e\u6570\u636e\u5e93\u3001Task Runner\u3001\u6d88\u606f\u603b\u7ebf\u3001\u6570\u5b57\u8bc1\u4e66\u7b49\u7b49\u4efb\u4f55\u4e91\u5382\u5546\u80fd\u60f3\u5230\u7684\u4e1c\u897f\uff01\u968f\u7740 Kubernetes \u8d44\u6e90\u6a21\u578b\u8d8a\u6765\u8d8a\u5e7f\u6cdb\u7684\u4f20\u64ad\uff0c\u73b0\u5728\u5df2\u7ecf\u80fd\u591f\u7528\u4e00\u7ec4 Kubernetes \u8d44\u6e90\u6765\u63cf\u8ff0\u4e00\u6574\u4e2a\u8f6f\u4ef6\u5b9a\u4e49\u8ba1\u7b97\u73af\u5883\u3002<\/p>\n\n\n\n<p>\u5c31\u50cf\u7528 docker run \u53ef\u4ee5\u542f\u52a8\u5355\u4e2a\u7a0b\u5e8f\u4e00\u6837\uff0c\u73b0\u5728\u7528 kubectl apply -f \u5c31\u80fd\u90e8\u7f72\u548c\u8fd0\u884c\u4e00\u4e2a\u5206\u5e03\u5f0f\u5e94\u7528\u7a0b\u5e8f\uff0c\u65e0\u9700\u5173\u5fc3\u662f\u5728\u79c1\u6709\u4e91\u3001\u516c\u6709\u4e91\u6216\u8005\u5177\u4f53\u54ea\u5bb6\u4e91\u5382\u5546\u4e0a\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u4ee5\u5e94\u7528\u4e3a\u4e2d\u5fc3\u7684\u8f6c\u53d8<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4ece Borg \u5230 Kubernetes\uff0c\u5bb9\u5668\u6280\u672f\u7684\u4ef7\u503c\u65e9\u5df2\u8d85\u8d8a\u4e86\u5355\u7eaf\u63d0\u5347\u8d44\u6e90\u5229\u7528\u7387\u3002\u66f4\u6df1\u8fdc\u7684\u5f71\u54cd\u5728\u4e8e\uff0c\u7cfb\u7edf\u5f00\u53d1\u548c\u8fd0\u7ef4\u7684\u7406\u5ff5\u4ece\u201c\u4ee5\u673a\u5668\u4e3a\u4e2d\u5fc3\u201d\u8f6c\u53d8\u4e3a\u201c\u4ee5\u5e94\u7528\u4e3a\u4e2d\u5fc3\u201d\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5bb9\u5668\u5c01\u88c5\u4e86\u5e94\u7528\u7a0b\u5e8f\u7684\u8fd0\u884c\u73af\u5883\uff0c\u5c4f\u853d\u4e86\u64cd\u4f5c\u7cfb\u7edf\u548c\u786c\u4ef6\u7684\u7ec6\u8282\uff0c\u4f7f\u5f97\u4e1a\u52a1\u5f00\u53d1\u8005\u4e0d\u518d\u9700\u8981\u5173\u6ce8\u5e95\u5c42\u5b9e\u73b0\uff1b<\/li>\n\n\n\n<li>\u57fa\u7840\u8bbe\u65bd\u56e2\u961f\u53ef\u4ee5\u66f4\u7075\u6d3b\u5730\u5f15\u5165\u65b0\u786c\u4ef6\u6216\u5347\u7ea7\u64cd\u4f5c\u7cfb\u7edf\uff0c\u6700\u5927\u9650\u5ea6\u51cf\u5c11\u5bf9\u7ebf\u4e0a\u5e94\u7528\u548c\u5f00\u53d1\u8005\u7684\u5f71\u54cd\uff1b<\/li>\n\n\n\n<li>\u6bcf\u4e2a\u8bbe\u8ba1\u826f\u597d\u7684\u5bb9\u5668\u901a\u5e38\u4ee3\u8868\u4e00\u4e2a\u5e94\u7528\uff0c\u56e0\u6b64\u7ba1\u7406\u5bb9\u5668\u5c31\u7b49\u4e8e\u7ba1\u7406\u5e94\u7528\uff0c\u800c\u975e\u7ba1\u7406\u673a\u5668\uff1b<\/li>\n\n\n\n<li>\u5c06\u6536\u96c6\u7684\u6027\u80fd\u6307\u6807\uff08\u5982 CPU \u4f7f\u7528\u7387\u3001\u5185\u5b58\u7528\u91cf\u3001QPS \u7b49\uff09\u4e0e\u5e94\u7528\u7a0b\u5e8f\u800c\u975e\u7269\u7406\u673a\u5668\u5173\u8054\uff0c\u663e\u8457\u63d0\u9ad8\u4e86\u5e94\u7528\u76d1\u63a7\u7684\u7cbe\u786e\u5ea6\u548c\u53ef\u89c2\u6d4b\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u6280\u672f\u7684\u539f\u7406\u4e0e\u6f14\u8fdb<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5b57\u9762\u4e0a\uff0c\u201c\u5bb9\u5668\u201d\u8fd9\u4e00\u672f\u8bed\u5f80\u5f80\u8ba9\u4eba\u96be\u4ee5\u76f4\u89c2\u5730\u7406\u89e3\u5176\u771f\u6b63\u542b\u4e49\uff0cKubernetes \u4e2d\u6700\u6838\u5fc3\u7684\u6982\u5ff5\u201cPod\u201d\u4e5f\u662f\u5982\u6b64\u3002<\/p>\n\n\n\n<p>\u5355\u7eaf\u7684\u51e0\u53e5\u8bdd\u89e3\u91ca\u5e76\u4e0d\u8db3\u4ee5\u5e2e\u52a9\u8bfb\u8005\u5145\u5206\u7406\u89e3\u8fd9\u4e9b\u6982\u5ff5\uff0c\u751a\u81f3\u53ef\u80fd\u5f15\u8d77\u8bef\u89e3\u3002\u4f8b\u5982\uff0c\u4e1a\u5185\u5e38\u5c06\u5bb9\u5668\u4e0e\u8f7b\u91cf\u7ea7\u865a\u62df\u673a\u6df7\u4e3a\u4e00\u8c08\u3002\u5982\u679c\u5bb9\u5668\u771f\u7684\u7c7b\u4f3c\u865a\u62df\u673a\uff0c\u90a3\u6211\u4eec\u5e94\u8be5\u80fd\u591f\u6709\u4e00\u79cd\u901a\u7528\u7684\u65b9\u6cd5\uff0c\u8f7b\u677e\u5c06\u865a\u62df\u673a\u4e2d\u7684\u5e94\u7528\u8fc1\u79fb\u5230\u5bb9\u5668\u4e2d\u3002\u4f46\u73b0\u5b9e\u4e2d\u5e76\u4e0d\u5b58\u5728\u8fd9\u79cd\u65b9\u6cd5\uff0c\u8fc1\u79fb\u8fc7\u7a0b\u4ecd\u7136\u9700\u8981\u5927\u91cf\u7684\u6539\u9020\u5de5\u4f5c\u3002<\/p>\n\n\n\n<p>\u672c\u8282\u5185\u5bb9\u5c06\u4ece\u6587\u4ef6\u7cfb\u7edf\u9694\u79bb\u7684\u8d77\u6e90\u51fa\u53d1\uff0c\u9010\u6b65\u8bb2\u89e3\u5bb9\u5668\u6280\u672f\u7684\u53d1\u5c55\u5386\u7a0b\uff0c\u5e2e\u52a9\u4f60\u6df1\u5165\u7406\u89e3 Kubernetes \u6838\u5fc3\u6982\u5ff5 Pod \u7684\u8bbe\u8ba1\u80cc\u666f\u4e0e\u5e94\u7528\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u6587\u4ef6\u7cfb\u7edf\u9694\u79bb<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5bb9\u5668\u7684\u8d77\u6e90\u53ef\u4ee5\u8ffd\u6eaf\u5230 1979 \u5e74\u3002\u90a3\u4e2a\u65f6\u5019\uff0cUNIX \u7cfb\u7edf\u521a\u5f15\u5165 chroot \u547d\u4ee4<sup><a href=\"https:\/\/www.thebyte.com.cn\/container\/orchestration.html#footnote1\">[1]<\/a><a><\/a><\/sup>\u3002<\/p>\n\n\n\n<p>chroot \u662f\u201cchange root\u201d\u7684\u7f29\u5199\uff0c\u5b83\u5141\u8bb8\u7ba1\u7406\u5458\u5c06\u8fdb\u7a0b\u7684\u6839\u76ee\u5f55\u9501\u5b9a\u5728\u7279\u5b9a\u4f4d\u7f6e\uff0c\u4ece\u800c\u9650\u5236\u8fdb\u7a0b\u5bf9\u6587\u4ef6\u7cfb\u7edf\u7684\u8bbf\u95ee\u8303\u56f4\u3002chroot \u7684\u9694\u79bb\u529f\u80fd\u5bf9\u5b89\u5168\u6027\u81f3\u5173\u91cd\u8981\u3002\u4f8b\u5982\uff0c\u5b83\u53ef\u4ee5\u7528\u4e8e\u521b\u5efa\u4e00\u4e2a\u201c\u871c\u7f50\u201d\uff0c\u7528\u4e8e\u5b89\u5168\u5730\u8fd0\u884c\u548c\u76d1\u63a7\u53ef\u7591\u4ee3\u7801\u6216\u7a0b\u5e8f\u3002\u7531\u4e8e\u5b83\u7684\u9694\u79bb\u4f5c\u7528\uff0cchroot \u73af\u5883\u4e5f\u88ab\u5f62\u8c61\u5730\u79f0\u4e3a\u201cjail\u201d\uff08\u76d1\u72f1\uff09\uff0c\u4ece chroot \u9003\u9038\u7684\u8fc7\u7a0b\u5219\u88ab\u79f0\u4e3a\u201c\u8d8a\u72f1\u201d\u3002<\/p>\n\n\n\n<p>\u5373\u4fbf\u65f6\u81f3\u4eca\u65e5\uff0cchroot \u547d\u4ee4\u4ecd\u7136\u6d3b\u8dc3\u4e8e\u4e3b\u6d41\u7684 Linux \u7cfb\u7edf\u4e2d\u3002\u5728\u7edd\u5927\u90e8\u5206 Linux \u7cfb\u7edf\u4e2d\uff0c\u53ea\u9700\u7b80\u5355\u51e0\u6b65\u64cd\u4f5c\uff0c\u5c31\u53ef\u4ee5\u4e3a\u8fdb\u7a0b\u521b\u5efa\u4e00\u4e2a\u57fa\u672c\u7684\u6587\u4ef6\u9694\u79bb\u73af\u5883\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ mkdir -p new-root\/{bin,lib64,root}\n$ cp \/bin\/bash new-root\/bin\n$ cp \/lib64\/{ld-linux-x86-64.so*,libc.so*,libdl.so.2,libreadline.so*,libtinfo.so*} new-root\/lib64\n$ sudo chroot new-root<\/pre>\n\n\n\n<p>\u867d\u7136\u8fd9\u4e2a\u9694\u79bb\u73af\u5883\u529f\u80fd\u6709\u9650\uff0c\u4ec5\u63d0\u4f9b\u4e86 bash \u548c\u4e00\u4e9b\u5185\u7f6e\u51fd\u6570\uff0c\u4f46\u8db3\u4ee5\u8bf4\u660e\u5176\u4f5c\u7528\uff1a\u8fd0\u884c\u5728 new-root \u6839\u76ee\u5f55\u4e0b\u7684\u8fdb\u7a0b\uff0c\u5176\u6587\u4ef6\u7cfb\u7edf\u4e0e\u5bbf\u4e3b\u673a\u9694\u79bb\u4e86\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">bash-4.2# cd bin \nbash-4.2# pwd\n\/bin<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\u989d\u5916\u77e5\u8bc6<br><br>\u9664\u4e86 \/bin \u4e4b\u5916\uff0c\u5982\u679c\u6211\u4eec\u5c06\u7a0b\u5e8f\u4f9d\u8d56\u7684 \/etc\u3001\/proc \u7b49\u76ee\u5f55\u4e00\u540c\u6253\u5305\u8fdb\u53bb\uff0c\u5b9e\u9645\u4e0a\u5c31\u5f97\u5230\u4e86\u4e00\u4e2a rootfs \u6587\u4ef6\u3002\u56e0\u4e3a rootfs \u5305\u542b\u7684\u4e0d\u4ec5\u662f\u5e94\u7528\uff0c\u8fd8\u6709\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u7684\u6587\u4ef6\u548c\u76ee\u5f55\uff0c\u8fd9\u610f\u5473\u7740\u5e94\u7528\u53ca\u5176\u6240\u6709\u4f9d\u8d56\u90fd\u88ab\u5c01\u88c5\u5728\u4e00\u8d77\uff0c\u8fd9\u6b63\u662f\u5bb9\u5668\u88ab\u5e7f\u6cdb\u5ba3\u4f20\u4e3a\u4e00\u81f4\u6027\u89e3\u51b3\u65b9\u6848\u7684\u7531\u6765\u3002<\/pre>\n\n\n\n<p>\u6211\u4eec\u518d\u8fd0\u884c\u4e00\u4e2a docker \u5bb9\u5668\uff0c\u89c2\u5bdf\u4e24\u8005\u4e4b\u95f4\u7684\u533a\u522b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker run -t -i ubuntu:18.04 \/bin\/bash\n\nroot@028f46a5b7db:\/# cd bin\nroot@028f46a5b7db:\/bin# pwd\n\/bin<\/pre>\n\n\n\n<p>\u867d\u7136 chroot \u770b\u8d77\u6765\u4e0e\u5bb9\u5668\u76f8\u4f3c\uff0c\u90fd\u662f\u521b\u5efa\u4e0e\u5bbf\u4e3b\u673a\u9694\u79bb\u7684\u6587\u4ef6\u7cfb\u7edf\u73af\u5883\uff0c\u4f46\u8fd9\u5e76\u4e0d\u610f\u5473\u7740 chroot \u5c31\u662f\u5bb9\u5668\u3002<\/p>\n\n\n\n<p>chroot \u53ea\u662f\u6539\u53d8\u4e86\u8fdb\u7a0b\u7684\u6839\u76ee\u5f55\uff0c\u5e76\u672a\u521b\u5efa\u771f\u6b63\u72ec\u7acb\u3001\u5b89\u5168\u7684\u9694\u79bb\u73af\u5883\u3002\u5728 Linux \u7cfb\u7edf\u4e2d\uff0c\u4ece\u4f4e\u5c42\u6b21\u7684\u8d44\u6e90\uff08\u5982\u7f51\u7edc\u3001\u78c1\u76d8\u3001\u5185\u5b58\u3001\u5904\u7406\u5668\uff09\u5230\u64cd\u4f5c\u7cfb\u7edf\u63a7\u5236\u7684\u9ad8\u5c42\u6b21\u8d44\u6e90\uff08\u5982 UNIX \u5206\u65f6\u3001\u8fdb\u7a0b ID\u3001\u7528\u6237 ID\u3001\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff09\uff0c\u90fd\u5b58\u5728\u5927\u91cf\u975e\u6587\u4ef6\u66b4\u9732\u7684\u64cd\u4f5c\u5165\u53e3\u3002<\/p>\n\n\n\n<p>\u56e0\u6b64\uff0c\u65e0\u8bba\u662f chroot\uff0c\u8fd8\u662f\u9488\u5bf9 chroot \u5b89\u5168\u95ee\u9898\u6539\u8fdb\u540e\u7684 pivot_root\uff0c\u90fd\u65e0\u6cd5\u5b9e\u73b0\u5bf9\u8d44\u6e90\u7684\u5b8c\u7f8e\u9694\u79bb\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u5168\u65b9\u4f4d\u9694\u79bb<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>hroot \u7684\u6700\u521d\u76ee\u7684\u662f\u4e3a\u4e86\u5b9e\u73b0\u6587\u4ef6\u7cfb\u7edf\u7684\u9694\u79bb\uff0c\u5e76\u975e\u4e13\u95e8\u4e3a\u5bb9\u5668\u8bbe\u8ba1\u3002<\/p>\n\n\n\n<p>\u540e\u6765\uff0cLinux \u5438\u6536\u4e86 chroot \u7684\u8bbe\u8ba1\u7406\u5ff5\uff0c\u5e76\u5728 2.4.19 \u7248\u672c\u4e2d\u5f15\u5165\u4e86 Mount \u547d\u540d\u7a7a\u95f4\uff0c\u4f7f\u5f97\u6587\u4ef6\u7cfb\u7edf\u6302\u8f7d\u53ef\u4ee5\u88ab\u9694\u79bb\u5f00\u6765\u3002\u968f\u7740\u5bb9\u5668\u6280\u672f\u7684\u53d1\u5c55\uff0c\u53d1\u73b0\u8fdb\u7a0b\u95f4\u901a\u4fe1\u4e5f\u9700\u8981\u9694\u79bb\uff0c\u56e0\u6b64\u5f15\u5165\u4e86 IPC\uff08Inter-Process Communication\uff09\u547d\u540d\u7a7a\u95f4\u3002\u6b64\u5916\uff0c\u5bb9\u5668\u8fd8\u9700\u8981\u4e00\u4e2a\u72ec\u7acb\u7684\u4e3b\u673a\u540d\u6765\u5728\u7f51\u7edc\u4e2d\u6807\u8bc6\u81ea\u5df1\uff0c\u8fd9\u4fbf\u50ac\u751f\u4e86 UTS\uff08UNIX Time-Sharing\uff09\u547d\u540d\u7a7a\u95f4\u3002\u6709\u4e86\u72ec\u7acb\u7684\u4e3b\u673a\u540d\uff0c\u81ea\u7136\u9700\u8981\u72ec\u7acb\u7684 IP\u3001\u7aef\u53e3\u3001\u8def\u7531\u7b49\uff0c\u56e0\u6b64 Network \u547d\u540d\u7a7a\u95f4 \u4e5f\u968f\u4e4b\u8bde\u751f\u3002<\/p>\n\n\n\n<p>\u4ece Linux \u5185\u6838 2.6.19 \u8d77\uff0c\u9010\u6b65\u5f15\u5165\u4e86 UTS\u3001IPC\u3001PID\u3001Network \u548c User \u7b49\u547d\u540d\u7a7a\u95f4\u529f\u80fd\u3002\u5230\u4e86 3.8 \u7248\u672c\uff0cLinux \u5b9e\u73b0\u4e86\u5bb9\u5668\u6240\u9700\u7684\u516d\u9879\u6700\u57fa\u672c\u7684\u8d44\u6e90\u9694\u79bb\u673a\u5236\u3002<\/p>\n\n\n\n<p>\u8868  Linux \u7cfb\u7edf\u76ee\u524d\u652f\u6301\u7684\u516b\u7c7b\u547d\u540d\u7a7a\u95f4\uff08Linux 4.6 \u7248\u672c\u8d77\uff0c\u65b0\u589e\u4e86 Cgroup \u548c Time \u547d\u540d\u7a7a\u95f4\uff09<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>\u547d\u540d\u7a7a\u95f4<\/th><th>\u9694\u79bb\u7684\u8d44\u6e90<\/th><th>\u5185\u6838\u7248\u672c<\/th><\/tr><\/thead><tbody><tr><td>Mount<\/td><td>\u9694\u79bb\u6587\u4ef6\u7cfb\u7edf\u6302\u8f7d\u70b9\uff0c\u529f\u80fd\u5927\u81f4\u7c7b\u4f3c chroot<\/td><td>2.4.19<\/td><\/tr><tr><td>IPC<\/td><td>\u9694\u79bb\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff0c\u4f7f\u8fdb\u7a0b\u62e5\u6709\u72ec\u7acb\u6d88\u606f\u961f\u5217\u3001\u5171\u4eab\u5185\u5b58\u548c\u4fe1\u53f7\u91cf<\/td><td>2.6.19<\/td><\/tr><tr><td>UTS<\/td><td>\u9694\u79bb\u4e3b\u673a\u7684 Hostname\u3001Domain names\uff0c\u8fd9\u6837\u5bb9\u5668\u5c31\u53ef\u4ee5\u62e5\u6709\u72ec\u7acb\u7684\u4e3b\u673a\u540d\u548c\u57df\u540d\uff0c\u5728\u7f51\u7edc\u4e2d\u53ef\u4ee5\u88ab\u89c6\u4f5c\u4e00\u4e2a\u72ec\u7acb\u7684\u8282\u70b9\u3002<\/td><td>2.6.19<\/td><\/tr><tr><td>PID<\/td><td>\u9694\u79bb\u8fdb\u7a0b\u53f7\uff0c\u5bf9\u8fdb\u7a0b PID \u91cd\u65b0\u7f16\u7801\uff0c\u4e0d\u540c\u547d\u540d\u7a7a\u95f4\u4e0b\u7684\u8fdb\u7a0b\u53ef\u4ee5\u6709\u76f8\u540c\u7684 PID<\/td><td>2.6.24<\/td><\/tr><tr><td>Network<\/td><td>\u9694\u79bb\u7f51\u7edc\u8d44\u6e90\uff0c\u5305\u62ec\u7f51\u7edc\u8bbe\u5907\u3001\u534f\u8bae\u6808\uff08IPv4\u3001IPv6\uff09\u3001IP \u8def\u7531\u8868\u3001iptables\u3001\u5957\u63a5\u5b57\uff08socket\uff09\u7b49<\/td><td>2.6.29<\/td><\/tr><tr><td>User<\/td><td>\u9694\u79bb\u7528\u6237\u548c\u7528\u6237\u7ec4<\/td><td>3.8<\/td><\/tr><tr><td>Cgroup<\/td><td>\u4f7f\u8fdb\u7a0b\u62e5\u6709\u4e00\u4e2a\u72ec\u7acb\u7684 cgroup \u63a7\u5236\u7ec4\u3002cgroup \u975e\u5e38\u91cd\u8981\uff0c\u7a0d\u540e\u7b14\u8005\u8be6\u7ec6\u4ecb\u7ecd\u3002<\/td><td>4.6<\/td><\/tr><tr><td>Time<\/td><td>\u9694\u79bb\u7cfb\u7edf\u65f6\u95f4\uff0cLinux 5.6 \u5185\u6838\u7248\u672c\u8d77\u652f\u6301\u8fdb\u7a0b\u72ec\u7acb\u8bbe\u7f6e\u7cfb\u7edf\u65f6\u95f4<\/td><td>5.6<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p>\u5728 Linux \u4e2d\uff0c\u4e3a\u8fdb\u7a0b\u8bbe\u7f6e\u5404\u79cd\u547d\u540d\u7a7a\u95f4\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u901a\u8fc7\u7cfb\u7edf\u8c03\u7528\u51fd\u6570 clone \u5e76\u6307\u5b9a\u76f8\u5e94\u7684 flags \u53c2\u6570\u5373\u53ef\u3002clone \u51fd\u6570\u5141\u8bb8\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u8fdb\u7a0b\uff0c\u5e76\u5728\u521b\u5efa\u65f6\u6307\u5b9a\u591a\u4e2a\u8d44\u6e90\u9694\u79bb\u7684\u9009\u9879\u3002clone \u51fd\u6570\u7684\u58f0\u660e\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int clone(int (*fn)(void *), void *child_stack,\n         int flags, void *arg, ...\n         \/* pid_t *ptid, struct user_desc *tls, pid_t *ctid *\/ );\n<\/pre>\n\n\n\n<p>\u4f8b\u5982\uff0c\u4e0b\u9762\u7684\u4ee3\u7801\u5c55\u793a\u4e86\u5982\u4f55\u901a\u8fc7\u8c03\u7528 clone \u51fd\u6570\u5e76\u6307\u5b9a\u591a\u4e2a CLONE_NEW \u6807\u5fd7\u6765\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u8be5\u8fdb\u7a0b\u5c06\u201c\u770b\u5230\u201d\u4e00\u4e2a\u5168\u65b0\u7684\u7cfb\u7edf\u73af\u5883\u3002\u6240\u6709\u7684\u8d44\u6e90\uff0c\u5305\u62ec\u8fdb\u7a0b\u6302\u8f7d\u7684\u6587\u4ef6\u76ee\u5f55\u3001\u8fdb\u7a0b PID\u3001\u8fdb\u7a0b\u95f4\u901a\u4fe1\u8d44\u6e90\u3001\u7f51\u7edc\u8bbe\u5907\u3001\u4e3b\u673a\u540d\u7b49\uff0c\u90fd\u5c06\u4e0e\u5bbf\u4e3b\u673a\u8fdb\u884c\u9694\u79bb\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int flags = CLONE_NEWNS | CLONE_NEWPID | CLONE_NEWIPC | CLONE_NEWNET | CLONE_NEWUTS;\nint pid = clone(main_function, stack_size, flags | SIGCHLD, NULL); <\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u5168\u65b9\u4f4d\u9650\u5236<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8fdb\u7a0b\u7684\u8d44\u6e90\u9694\u79bb\u5df2\u7ecf\u5b8c\u6210\uff0c\u5982\u679c\u518d\u5bf9\u4f7f\u7528\u8d44\u6e90\u8fdb\u884c\u989d\u5ea6\u9650\u5236\uff0c\u5c31\u80fd\u5bf9\u8fdb\u7a0b\u7684\u8fd0\u884c\u73af\u5883\u5b9e\u73b0\u201c\u8fdb\u4e4e\u5b8c\u7f8e\u201d\u7684\u9694\u79bb\u3002\u8fd9\u5c31\u8981\u7528 Linux \u5185\u6838\u7684\u7b2c\u4e8c\u9879\u6280\u672f \u2014\u2014 Linux Control Cgroup\uff08Linux \u63a7\u5236\u7ec4\u7fa4\uff0c\u7b80\u79f0 cgroups\uff09\u3002<\/p>\n\n\n\n<p>cgroups \u662f Linux \u5185\u6838\u7528\u4e8e\u9694\u79bb\u3001\u5206\u914d\u5e76\u9650\u5236\u8fdb\u7a0b\u7ec4\u4f7f\u7528\u8d44\u6e90\u914d\u989d\u7684\u673a\u5236\u3002\u4f8b\u5982\uff0c\u5b83\u53ef\u4ee5\u63a7\u5236\u8fdb\u7a0b\u7684 CPU \u5360\u7528\u65f6\u95f4\u3001\u5185\u5b58\u5927\u5c0f\u3001\u78c1\u76d8 I\/O \u901f\u5ea6\u7b49\u3002\u8be5\u9879\u76ee\u6700\u521d\u7531 Google \u5de5\u7a0b\u5e08 Paul Menage \u548c Rohit Seth \u4e8e 2000 \u5e74\u53d1\u8d77\uff0c\u5f53\u65f6\u79f0\u4e4b\u4e3a\u201c\u8fdb\u7a0b\u5bb9\u5668\u201d\uff08Process Container\uff09\u3002\u7531\u4e8e\u201c\u5bb9\u5668\u201d\u8fd9\u4e00\u540d\u8bcd\u5728 Linux \u5185\u6838\u4e2d\u6709\u4e0d\u540c\u542b\u4e49\uff0c\u4e3a\u907f\u514d\u6df7\u6dc6\uff0c\u6700\u7ec8\u5c06\u5176\u91cd\u547d\u540d\u4e3a cgroups\u3002<\/p>\n\n\n\n<p>2008 \u5e74\uff0ccgroups \u88ab\u5408\u5e76\u5230 Linux \u5185\u6838 2.6.24 \u7248\u672c\u4e2d\uff0c\u6807\u5fd7\u7740\u7b2c\u4e00\u4ee3 cgroups \u7684\u53d1\u5e03\u30022016 \u5e74 3 \u6708\uff0cLinux \u5185\u6838 4.5 \u5f15\u5165\u4e86\u7531 Facebook \u5de5\u7a0b\u5e08 Tejun Heo \u91cd\u5199\u7684\u7b2c\u4e8c\u4ee3 cgroups\u3002\u76f8\u6bd4\u7b2c\u4e00\u4ee3\uff0c\u7b2c\u4e8c\u4ee3\u63d0\u4f9b\u4e86\u66f4\u52a0\u7edf\u4e00\u7684\u8d44\u6e90\u63a7\u5236\u63a5\u53e3\uff0c\u4f7f\u5f97\u5bf9 CPU\u3001\u5185\u5b58\u3001I\/O \u7b49\u8d44\u6e90\u7684\u9650\u5236\u66f4\u52a0\u4e00\u81f4\u3002\u4e0d\u8fc7\uff0c\u8003\u8651\u517c\u5bb9\u6027\u548c\u7a33\u5b9a\u6027\uff0c\u5927\u591a\u6570\u5bb9\u5668\u8fd0\u884c\u65f6\uff08container runtime\uff09\u76ee\u524d\u4ecd\u9ed8\u8ba4\u4f7f\u7528\u7b2c\u4e00\u4ee3 cgroups\u3002<\/p>\n\n\n\n<p>\u5728 Linux \u7cfb\u7edf\u4e2d\uff0ccgroups \u901a\u8fc7\u6587\u4ef6\u7cfb\u7edf\u5411\u7528\u6237\u66b4\u9732\u5176\u64cd\u4f5c\u63a5\u53e3\u3002\u8fd9\u4e9b\u63a5\u53e3\u4ee5\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u5f62\u5f0f\u7ec4\u7ec7\u5728 \/sys\/fs\/cgroup \u8def\u5f84\u4e0b\u3002<\/p>\n\n\n\n<p>\u5728 Linux \u4e2d\u6267\u884c ls \/sys\/fs\/cgroup \u547d\u4ee4\uff0c\u53ef\u4ee5\u770b\u5230\u5728\u8be5\u8def\u5f84\u4e0b\u6709\u8bb8\u591a\u5b50\u76ee\u5f55\uff0c\u5982 blkio\u3001cpu\u3001memory \u7b49\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ll \/sys\/fs\/cgroup\n\u603b\u7528\u91cf 0\ndrwxr-xr-x 2 root root  0 2\u6708  17 2023 blkio\nlrwxrwxrwx 1 root root 11 2\u6708  17 2023 cpu -> cpu,cpuacct\nlrwxrwxrwx 1 root root 11 2\u6708  17 2023 cpuacct -> cpu,cpuacct\ndrwxr-xr-x 3 root root  0 2\u6708  17 2023 memory\n...<\/pre>\n\n\n\n<p>\u5728 cgroups \u4e2d\uff0c\u6bcf\u4e2a\u5b50\u76ee\u5f55\u88ab\u79f0\u4e3a\u201c\u63a7\u5236\u7ec4\u5b50\u7cfb\u7edf\u201d\uff08control group subsystems\uff09\uff0c\u5b83\u4eec\u5bf9\u5e94\u4e8e\u4e0d\u540c\u7c7b\u578b\u7684\u8d44\u6e90\u9650\u5236\u3002\u6bcf\u4e2a\u5b50\u7cfb\u7edf\u6709\u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u6bd4\u5982\u5185\u5b58\u5b50\u7cfb\u7edf\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ls \/sys\/fs\/cgroup\/memory\ncgroup.clone_children               memory.memsw.failcnt\ncgroup.event_control                memory.memsw.limit_in_bytes\ncgroup.procs                        memory.memsw.max_usage_in_bytes\ncgroup.sane_behavior                memory.memsw.usage_in_bytes<\/pre>\n\n\n\n<p>\u8fd9\u4e9b\u6587\u4ef6\u5404\u81ea\u7528\u4e8e\u4e0d\u540c\u7684\u529f\u80fd\u3002\u4f8b\u5982\uff0cmemory.kmem.limit_in_bytes \u7528\u4e8e\u9650\u5236\u5e94\u7528\u7a0b\u5e8f\u7684\u603b\u5185\u5b58\u4f7f\u7528\uff1bmemory.stat \u7528\u4e8e\u7edf\u8ba1\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\uff1bmemory.failcnt \u6587\u4ef6\u62a5\u544a\u5185\u5b58\u4f7f\u7528\u8fbe\u5230\u4e86 memory.limit_in_bytes \u9650\u5236\u503c\u7684\u6b21\u6570\u7b49\u3002<\/p>\n\n\n\n<p>\u76ee\u524d\uff0c\u4e3b\u6d41\u7684 Linux \u7cfb\u7edf\u652f\u6301\u7684\u63a7\u5236\u7ec4\u5b50\u7cfb\u7edf\u5982\u8868 7-2 \u6240\u793a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>\u63a7\u5236\u7ec4\u7fa4\u5b50\u7cfb\u7edf<\/th><th>\u529f\u80fd<\/th><\/tr><\/thead><tbody><tr><td>blkio<\/td><td>\u63a7\u5236\u5e76\u76d1\u63a7 cgroup \u4e2d\u7684\u4efb\u52a1\u5bf9\u5757\u8bbe\u5907(\u4f8b\u5982\u78c1\u76d8\u3001USB \u7b49) I\/O \u7684\u5b58\u53d6<\/td><\/tr><tr><td>cpu<\/td><td>\u63a7\u5236 cgroups \u4e2d\u8fdb\u7a0b\u7684 CPU \u5360\u7528\u7387<\/td><\/tr><tr><td>cpuacct<\/td><td>\u81ea\u52a8\u751f\u6210\u62a5\u544a\u6765\u663e\u793a cgroup \u4e2d\u7684\u8fdb\u7a0b\u6240\u4f7f\u7528\u7684 CPU \u8d44\u6e90<\/td><\/tr><tr><td>cpuset<\/td><td>\u53ef\u4ee5\u4e3a cgroups \u4e2d\u7684\u8fdb\u7a0b\u5206\u914d\u72ec\u7acb CPU \u548c\u5185\u5b58\u8282\u70b9<\/td><\/tr><tr><td>devices<\/td><td>\u63a7\u5236 cgroups \u4e2d\u8fdb\u7a0b\u5bf9\u67d0\u4e2a\u8bbe\u5907\u7684\u8bbf\u95ee\u6743\u9650<\/td><\/tr><tr><td>freezer<\/td><td>\u6682\u505c\u6216\u8005\u6062\u590d cgroup \u4e2d\u7684\u4efb\u52a1<\/td><\/tr><tr><td>memory<\/td><td>\u81ea\u52a8\u751f\u6210 cgroup \u4efb\u52a1\u4f7f\u7528\u5185\u5b58\u8d44\u6e90\u7684\u62a5\u544a\uff0c\u5e76\u9650\u5b9a\u8fd9\u4e9b\u4efb\u52a1\u6240\u7528\u5185\u5b58\u7684\u5927\u5c0f<\/td><\/tr><tr><td>net_cls<\/td><td>\u4f7f\u7528\u7b49\u7ea7\u8bc6\u522b\u7b26\uff08classid\uff09\u6807\u8bb0\u7f51\u7edc\u6570\u636e\u5305\uff0c\u8fd9\u8ba9 Linux \u6d41\u91cf\u7ba1\u63a7\u5668\uff08tc\uff09\u53ef\u4ee5\u8bc6\u522b\u4ece\u7279\u5b9a cgroup \u4e2d\u751f\u6210\u7684\u6570\u636e\u5305 \uff0c\u53ef\u914d\u7f6e\u6d41\u91cf\u7ba1\u63a7\u5668\uff0c\u8ba9\u5176\u4e3a\u4e0d\u540c cgroup \u4e2d\u7684\u6570\u636e\u5305\u8bbe\u5b9a\u4e0d\u540c\u7684\u4f18\u5148\u7ea7<\/td><\/tr><tr><td>net_prio<\/td><td>\u53ef\u4ee5\u4e3a\u5404\u4e2a cgroup \u4e2d\u7684\u5e94\u7528\u7a0b\u5e8f\u52a8\u6001\u914d\u7f6e\u6bcf\u4e2a\u7f51\u7edc\u63a5\u53e3\u7684\u6d41\u91cf\u4f18\u5148\u7ea7<\/td><\/tr><tr><td>perf_event<\/td><td>\u5141\u8bb8\u4f7f\u7528 perf \u5de5\u5177\u5bf9 crgoups \u4e2d\u7684\u8fdb\u7a0b\u548c\u7ebf\u7a0b\u76d1\u63a7<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p>Linux cgroups \u7684\u8bbe\u8ba1\u7b80\u6d01\u6613\u7528\u3002\u5728 Docker \u7b49\u5bb9\u5668\u7cfb\u7edf\u4e2d\uff0c\u53ea\u9700\u4e3a\u6bcf\u4e2a\u5bb9\u5668\u5728\u6bcf\u4e2a\u5b50\u7cfb\u7edf\u4e0b\u521b\u5efa\u4e00\u4e2a\u63a7\u5236\u7ec4\uff08\u901a\u8fc7\u521b\u5efa\u76ee\u5f55\uff09\uff0c\u7136\u540e\u5728\u5bb9\u5668\u8fdb\u7a0b\u542f\u52a8\u540e\uff0c\u5c06\u8fdb\u7a0b\u7684 PID \u5199\u5165\u76f8\u5e94\u5b50\u7cfb\u7edf\u7684 tasks \u6587\u4ef6\u3002<\/p>\n\n\n\n<p>\u5982\u4e0b\u9762\u7684\u4ee3\u7801\u6240\u793a\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u5185\u5b58\u63a7\u5236\u7ec4\u5b50\u7cfb\u7edf\uff08\u76ee\u5f55\u540d\u4e3a $hostname\uff09\uff0c\u5e76\u5c06 PID \u4e3a 3892 \u7684\u8fdb\u7a0b\u7684\u5185\u5b58\u9650\u5236\u4e3a 1 GB\uff0c\u540c\u65f6\u9650\u5236\u5176 CPU \u4f7f\u7528\u65f6\u95f4\u4e3a 1\/4\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/sys\/fs\/cgroup\/memory\/$hostname\/memory.limit_in_bytes=1GB \/\/ \u5bb9\u5668\u8fdb\u7a0b\u53ca\u5176\u5b50\u8fdb\u7a0b\u4f7f\u7528\u7684\u603b\u5185\u5b58\u4e0d\u8d85\u8fc7 1GB\n\/sys\/fs\/cgroup\/cpu\/$hostname\/cpu.shares=256 \/\/ CPU \u65f6\u95f4\u603b\u6570\u4e3a 1024\uff0c\u8bbe\u7f6e 256 \u540e\uff0c\u9650\u5236\u8fdb\u7a0b\u6700\u591a\u53ea\u80fd\u5360\u7528 1\/4 CPU \u65f6\u95f4\n\necho 3892 > \/sys\/fs\/cgroup\/cpu\/$hostname\/tasks \n<\/pre>\n\n\n\n<p>\u503c\u5f97\u8865\u5145\u7684\u662f\uff0ccgroups \u5728\u8d44\u6e90\u9650\u5236\u65b9\u9762\u4ecd\u6709\u4e0d\u5b8c\u5584\u4e4b\u5904\u3002\u4f8b\u5982\uff0c\/proc \u6587\u4ef6\u7cfb\u7edf\u8bb0\u5f55\u4e86\u8fdb\u7a0b\u5bf9 CPU\u3001\u5185\u5b58\u7b49\u8d44\u6e90\u7684\u5360\u7528\u60c5\u51b5\uff0c\u8fd9\u4e9b\u6570\u636e\u662f top \u547d\u4ee4\u67e5\u770b\u7cfb\u7edf\u4fe1\u606f\u7684\u4e3b\u8981\u6765\u6e90\u3002\u7136\u800c\uff0c\/proc \u6587\u4ef6\u7cfb\u7edf\u5e76\u672a\u5173\u8054 cgroups \u5bf9\u8fdb\u7a0b\u7684\u9650\u5236\u3002\u56e0\u6b64\uff0c\u5f53\u5728\u5bb9\u5668\u5185\u90e8\u6267\u884c top \u547d\u4ee4\u65f6\uff0c\u663e\u793a\u7684\u662f\u5bbf\u4e3b\u673a\u7684\u8d44\u6e90\u5360\u7528\u72b6\u6001\uff0c\u800c\u4e0d\u662f\u5bb9\u5668\u5185\u7684\u72b6\u6001\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u4e1a\u5185\u901a\u5e38\u91c7\u7528 LXCFS\uff08LXC \u7528\u7684 FUSE \u6587\u4ef6\u7cfb\u7edf\uff09\u6280\u672f\uff0c\u7ef4\u62a4\u4e00\u5957\u4e13\u95e8\u7528\u4e8e\u5bb9\u5668\u7684 \/proc \u6587\u4ef6\u7cfb\u7edf\uff0c\u4ece\u800c\u51c6\u786e\u53cd\u6620\u5bb9\u5668\u5185\u7684\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\u3002<\/p>\n\n\n\n<p>\u81f3\u6b64\uff0c\u76f8\u4fe1\u8bfb\u8005\u5df2\u7ecf\u7406\u89e3\u5bb9\u5668\u7684\u6982\u5ff5\u3002\u5bb9\u5668\u5e76\u4e0d\u662f\u8f7b\u91cf\u5316\u7684\u865a\u62df\u673a\uff0c\u4e5f\u4e0d\u662f\u4e00\u4e2a\u5b8c\u5168\u7684\u6c99\u76d2\uff08\u5bb9\u5668\u5171\u4eab\u5bbf\u4e3b\u673a\u5185\u6838\uff0c\u5b9e\u73b0\u7684\u662f\u4e00\u79cd\u201c\u8f6f\u9694\u79bb\u201d\uff09\u3002\u672c\u8d28\u4e0a\uff0c\u5bb9\u5668\u662f\u901a\u8fc7\u547d\u540d\u7a7a\u95f4\u3001cgroups \u7b49\u6280\u672f\u5b9e\u73b0\u8d44\u6e90\u9694\u79bb\u548c\u9650\u5236\uff0c\u5e76\u62e5\u6709\u72ec\u7acb\u6839\u76ee\u5f55\uff08rootfs\uff09\u7684\u7279\u6b8a\u8fdb\u7a0b\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8bbe\u8ba1\u5bb9\u5668\u534f\u4f5c\u7684\u65b9\u5f0f<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u65e2\u7136\u5bb9\u5668\u662f\u4e2a\u7279\u6b8a\u7684\u8fdb\u7a0b\uff0c\u90a3\u8054\u60f3\u5230\u771f\u6b63\u7684\u64cd\u4f5c\u7cfb\u7edf\u5185\u5927\u90e8\u5206\u8fdb\u7a0b\u4e5f\u5e76\u975e\u72ec\u81ea\u8fd0\u884c\uff0c\u800c\u662f\u4ee5\u8fdb\u7a0b\u7ec4\u7684\u5f62\u5f0f\u88ab\u6709\u5e8f\u5730\u7ec4\u7ec7\u548c\u534f\u4f5c\uff0c\u5b8c\u6210\u7279\u5b9a\u4efb\u52a1\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u767b\u5f55\u5230 Linux \u673a\u5668\u540e\uff0c\u6267\u884c pstree -g \u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u5f53\u524d\u7cfb\u7edf\u4e2d\u7684\u8fdb\u7a0b\u6811\u72b6\u7ed3\u6784\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ pstree -g\n    |-rsyslogd(1089)-+-{in:imklog}(1089)\n    |  |-{in:imuxsock) S 1(1089)\n    | `-{rs:main Q:Reg}(1089)<\/pre>\n\n\n\n<p>\u5982\u547d\u4ee4\u8f93\u51fa\u6240\u793a\uff0crsyslogd \u7a0b\u5e8f\u7684\u8fdb\u7a0b\u6811\u7ed3\u6784\u5c55\u793a\u4e86\u5176\u4e3b\u7a0b\u5e8f main \u548c\u5185\u6838\u65e5\u5fd7\u6a21\u5757 imklog \u90fd\u5c5e\u4e8e\u8fdb\u7a0b\u7ec4 1089\u3002\u5b83\u4eec\u5171\u4eab\u8d44\u6e90\uff0c\u5171\u540c\u5b8c\u6210 rsyslogd \u7684\u4efb\u52a1\u3002\u5bf9\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u800c\u8a00\uff0c\u8fd9\u79cd\u8fdb\u7a0b\u7ec4\u7ba1\u7406\u66f4\u52a0\u65b9\u4fbf\u3002\u6bd4\u5982\uff0cLinux \u64cd\u4f5c\u7cfb\u7edf\u53ef\u4ee5\u901a\u8fc7\u5411\u4e00\u4e2a\u8fdb\u7a0b\u7ec4\u53d1\u9001\u4fe1\u53f7\uff08\u5982 SIGKILL\uff09\uff0c\u4f7f\u8be5\u8fdb\u7a0b\u7ec4\u4e2d\u7684\u6240\u6709\u8fdb\u7a0b\u540c\u65f6\u7ec8\u6b62\u8fd0\u884c\u3002<\/p>\n\n\n\n<p>\u73b0\u5728\uff0c\u5047\u8bbe\u6211\u4eec\u8981\u5c06\u4e0a\u8ff0\u8fdb\u7a0b\u7528\u5bb9\u5668\u6539\u9020\uff0c\u8be5\u5982\u4f55\u8bbe\u8ba1\u5462\uff1f\u5982\u679c\u4f7f\u7528 Docker\uff0c\u901a\u5e38\u4f1a\u60f3\u5230\u5728\u5bb9\u5668\u5185\u8fd0\u884c\u4e24\u4e2a\u8fdb\u7a0b\uff1a<\/p>\n\n\n\n<ul>\n<li>rsyslogd \u8d1f\u8d23\u4e1a\u52a1\u903b\u8f91\uff1b<\/li>\n\n\n\n<li>imklog \u5904\u7406\u65e5\u5fd7\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4f46\u8fd9\u79cd\u8bbe\u8ba1\u4f1a\u9047\u5230\u4e00\u4e2a\u95ee\u9898\uff1a\u5bb9\u5668\u4e2d\u7684 PID=1 \u8fdb\u7a0b\u5e94\u8be5\u662f\u8c01\uff1f\u5728 Linux \u7cfb\u7edf\u4e2d\uff0cPID \u4e3a 1 \u7684\u8fdb\u7a0b\u662f init\uff0c\u5b83\u4f5c\u4e3a\u6240\u6709\u5176\u4ed6\u8fdb\u7a0b\u7684\u7956\u5148\u8fdb\u7a0b\uff0c\u8d1f\u8d23\u76d1\u63a7\u8fdb\u7a0b\u72b6\u6001\uff0c\u5e76\u5904\u7406\u5b64\u513f\u8fdb\u7a0b\u3002\u56e0\u6b64\uff0c\u5bb9\u5668\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8fdb\u7a0b\u4e5f\u9700\u8981\u5177\u5907\u7c7b\u4f3c\u7684\u529f\u80fd\uff0c\u80fd\u591f\u5904\u7406 SIGTERM\u3001SIGINT \u7b49\u4fe1\u53f7\uff0c\u4f18\u96c5\u5730\u7ec8\u6b62\u5bb9\u5668\u5185\u7684\u5176\u4ed6\u8fdb\u7a0b\u3002<\/p>\n\n\n\n<p>Docker \u7684\u8bbe\u8ba1\u6838\u5fc3\u5728\u4e8e\u91c7\u7528\u7684\u662f\u201c\u5355\u8fdb\u7a0b\u201d\u6a21\u578b\u3002Docker \u901a\u8fc7\u76d1\u63a7 PID \u4e3a 1 \u7684\u8fdb\u7a0b\u7684\u72b6\u6001\u6765\u5224\u65ad\u5bb9\u5668\u7684\u5065\u5eb7\u72b6\u6001\uff08\u5728 Dockerfile \u4e2d\u7528 ENTRYPOINT \u6307\u5b9a\u542f\u52a8\u7684\u8fdb\u7a0b\uff09\u3002\u5982\u679c\u786e\u5b9e\u9700\u8981\u5728\u4e00\u4e2a Docker \u5bb9\u5668\u4e2d\u8fd0\u884c\u591a\u4e2a\u8fdb\u7a0b\uff0c\u9996\u4e2a\u542f\u52a8\u7684\u8fdb\u7a0b\u5e94\u8be5\u5177\u5907\u8d44\u6e90\u76d1\u63a7\u548c\u7ba1\u7406\u80fd\u529b\uff0c\u4f8b\u5982\uff0c\u4f7f\u7528\u4e13\u4e3a\u5bb9\u5668\u5f00\u53d1\u7684 tinit \u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p>\u867d\u7136\u901a\u8fc7 Docker \u53ef\u4ee5\u52c9\u5f3a\u5b9e\u73b0\u5bb9\u5668\u5185\u8fd0\u884c\u591a\u4e2a\u8fdb\u7a0b\uff0c\u4f46\u8fdb\u7a0b\u95f4\u7684\u534f\u4f5c\u8fdc\u4e0d\u6b62\u4e8e\u8d44\u6e90\u56de\u6536\u90a3\u4e48\u7b80\u5355\u3002\u8981\u8ba9\u5bb9\u5668\u50cf\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u8fdb\u7a0b\u7ec4\u4e00\u6837\u8fdb\u884c\u534f\u4f5c\uff0c\u4e0b\u4e00\u6b65\u7684\u6f14\u8fdb\u662f\u627e\u5230\u7c7b\u4f3c\u201c\u8fdb\u7a0b\u7ec4\u201d\u7684\u6982\u5ff5\u3002\u8fd9\u662f\u5b9e\u73b0\u5bb9\u5668\u4ece\u201c\u9694\u79bb\u201d\u5230\u201c\u534f\u4f5c\u201d\u7684\u7b2c\u4e00\u6b65\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d85\u4eb2\u5bc6\u5bb9\u5668\u7ec4 Pod<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5728 Kubernetes \u4e2d\uff0c\u4e0e\u201c\u8fdb\u7a0b\u7ec4\u201d\u5bf9\u5e94\u7684\u8bbe\u8ba1\u6982\u5ff5\u662f Pod\u3002Pod \u662f\u4e00\u7ec4\u7d27\u5bc6\u5173\u8054\u7684\u5bb9\u5668\u96c6\u5408\uff0c\u5b83\u4eec\u5171\u4eab IPC\u3001Network \u548c UTS \u7b49\u547d\u540d\u7a7a\u95f4\uff0c\u662f Kubernetes \u7ba1\u7406\u7684\u6700\u57fa\u672c\u5355\u4f4d\u3002<\/p>\n\n\n\n<p>\u5bb9\u5668\u4e4b\u95f4\u539f\u672c\u901a\u8fc7\u547d\u540d\u7a7a\u95f4\u548c cgroups \u8fdb\u884c\u9694\u79bb\uff0cPod \u7684\u8bbe\u8ba1\u76ee\u6807\u662f\u6253\u7834\u8fd9\u79cd\u9694\u79bb\uff0c\u4f7f Pod \u5185\u7684\u5bb9\u5668\u80fd\u591f\u50cf\u8fdb\u7a0b\u7ec4\u4e00\u6837\u5171\u4eab\u8d44\u6e90\u548c\u6570\u636e\u3002\u4e3a\u5b9e\u73b0\u8fd9\u4e00\u70b9\uff0cKubernetes \u5f15\u5165\u4e86\u4e00\u4e2a\u7279\u6b8a\u5bb9\u5668 \u2014\u2014 Infra Container\u3002<\/p>\n\n\n\n<p>Infra Container \u662f Pod \u5185\u7b2c\u4e00\u4e2a\u542f\u52a8\u7684\u5bb9\u5668\uff0c\u4f53\u79ef\u975e\u5e38\u5c0f\uff08\u7ea6 300 KB\uff09\u3002\u5b83\u4e3b\u8981\u8d1f\u8d23\u4e3a Pod \u5185\u7684\u5bb9\u5668\u7533\u8bf7\u5171\u4eab\u7684 UTS\u3001IPC \u548c\u7f51\u7edc\u7b49\u547d\u540d\u7a7a\u95f4\u3002Pod \u5185\u7684\u5176\u4ed6\u5bb9\u5668\u901a\u8fc7 setns\uff08Linux \u7cfb\u7edf\u8c03\u7528\uff0c\u7528\u4e8e\u5c06\u8fdb\u7a0b\u52a0\u5165\u6307\u5b9a\u547d\u540d\u7a7a\u95f4\uff09\u6765\u5171\u4eab Infra Container \u7684\u547d\u540d\u7a7a\u95f4\u3002\u6b64\u5916\uff0cInfra Container \u4e5f\u53ef\u4ee5\u4f5c\u4e3a init \u8fdb\u7a0b\uff0c\u7ba1\u7406\u5b50\u8fdb\u7a0b\u548c\u56de\u6536\u8d44\u6e90\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u989d\u5916\u77e5\u8bc6<br><br>Infra Container \u542f\u52a8\u540e\uff0c\u6267\u884c\u4e00\u4e2a\u6c38\u8fdc\u5faa\u73af\u7684 pause() \u65b9\u6cd5\uff0c\u56e0\u6b64\u53c8\u88ab\u79f0\u4e3a\u201cpause \u5bb9\u5668\u201d\u3002<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"775\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-1024x775.png\" alt=\"\" class=\"wp-image-18002\" style=\"width:524px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-1024x775.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-300x227.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-768x581.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-1536x1163.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-830x628.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-230x174.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-350x265.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328-480x363.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-328.png 2032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u901a\u8fc7 Infra Container\uff0cPod \u5185\u7684\u5bb9\u5668\u53ef\u4ee5\u5171\u4eab UTS\u3001Network\u3001IPC \u548c Time \u547d\u540d\u7a7a\u95f4\u3002\u4e0d\u8fc7\uff0cPID \u547d\u540d\u7a7a\u95f4\u548c\u6587\u4ef6\u7cfb\u7edf\u547d\u540d\u7a7a\u95f4\u9ed8\u8ba4\u4f9d\u7136\u662f\u9694\u79bb\u7684\uff0c\u539f\u56e0\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u6587\u4ef6\u7cfb\u7edf\u9694\u79bb<\/strong>\uff1a\u5bb9\u5668\u9700\u8981\u72ec\u7acb\u7684\u6587\u4ef6\u7cfb\u7edf\uff0c\u4ee5\u907f\u514d\u51b2\u7a81\u3002\u5982\u679c\u5bb9\u5668\u4e4b\u95f4\u9700\u8981\u5171\u4eab\u6587\u4ef6\uff0cKubernetes \u63d0\u4f9b\u4e86 Volume \u652f\u6301\uff08\u5c06\u5728\u672c\u7ae0 7.5 \u8282\u4e2d\u4ecb\u7ecd\uff09\uff1b<\/li>\n\n\n\n<li><strong>PID \u9694\u79bb<\/strong>\uff1aPID \u547d\u540d\u7a7a\u95f4\u9694\u79bb\u662f\u4e3a\u4e86\u907f\u514d\u67d0\u4e9b\u5bb9\u5668\u8fdb\u7a0b\u6ca1\u6709 PID=1 \u7684\u95ee\u9898\uff0c\u8fd9\u53ef\u80fd\u5bfc\u81f4\u5bb9\u5668\u542f\u52a8\u5931\u8d25\uff08\u4f8b\u5982\uff0c\u4f7f\u7528 systemd \u7684\u5bb9\u5668\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5982\u679c\u9700\u8981\u5171\u4eab PID \u547d\u540d\u7a7a\u95f4\uff0c\u53ef\u4ee5\u5728 Pod \u58f0\u660e\u4e2d\u8bbe\u7f6e shareProcessNamespace: true\u3002Pod \u7684 YAML \u914d\u7f6e\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: example-pod\nspec:\n  shareProcessNamespace: true\n  containers:\n    - name: container1\n      image: myimage1\n    ...\n<\/pre>\n\n\n\n<p>\u5728\u5171\u4eab PID \u547d\u540d\u7a7a\u95f4\u7684 Pod \u4e2d\uff0cInfra Container \u5c06\u627f\u62c5 PID=1 \u8fdb\u7a0b\u7684\u804c\u8d23\uff0c\u8d1f\u8d23\u5904\u7406\u4fe1\u53f7\u548c\u56de\u6536\u5b50\u8fdb\u7a0b\u8d44\u6e90\u7b49\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Pod \u662f Kubernetes \u7684\u57fa\u672c\u5355\u4f4d<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u89e3\u51b3\u4e86\u5bb9\u5668\u7684\u8d44\u6e90\u9694\u79bb\u3001\u9650\u5236\u4ee5\u53ca\u5bb9\u5668\u95f4\u534f\u4f5c\u95ee\u9898\uff0cKubernetes \u7684\u529f\u80fd\u5f00\u59cb\u56f4\u7ed5\u5bb9\u5668\u548c Pod \u4e0d\u65ad\u5411\u5b9e\u9645\u5e94\u7528\u7684\u573a\u666f\u6269\u5c55\u3002<\/p>\n\n\n\n<p>\u7531\u4e8e\u4e00\u4e2a Pod \u4e0d\u4f1a\u4ec5\u6709\u4e00\u4e2a\u5b9e\u4f8b\uff0cKubernetes \u5f15\u5165\u4e86\u66f4\u9ad8\u5c42\u6b21\u7684\u62bd\u8c61\u6765\u7ba1\u7406\u591a\u4e2a Pod \u5b9e\u4f8b\u3002\u4f8b\u5982\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>Deployment<\/strong>\uff1a\u7528\u4e8e\u7ba1\u7406\u65e0\u72b6\u6001\u5e94\u7528\uff0c\u652f\u6301\u6eda\u52a8\u66f4\u65b0\u548c\u6269\u7f29\u5bb9\uff1b<\/li>\n\n\n\n<li><strong>StatefulSet<\/strong>\uff1a\u7528\u4e8e\u7ba1\u7406\u6709\u72b6\u6001\u5e94\u7528\uff0c\u786e\u4fdd Pods \u7684\u987a\u5e8f\u548c\u6301\u4e45\u6027\uff1b<\/li>\n\n\n\n<li><strong>DaemonSet<\/strong>\uff1a\u786e\u4fdd\u6bcf\u4e2a\u8282\u70b9\u4e0a\u8fd0\u884c\u4e00\u4e2a Pod\uff0c\u5e38\u7528\u4e8e\u96c6\u7fa4\u7ba1\u7406\u6216\u76d1\u63a7\uff1b<\/li>\n\n\n\n<li><strong>ReplicaSet<\/strong>\uff1a\u786e\u4fdd\u6307\u5b9a\u6570\u91cf\u7684 Pod \u526f\u672c\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\uff1b<\/li>\n\n\n\n<li><strong>Job\/CronJob<\/strong>\uff1a\u7ba1\u7406\u4e00\u6b21\u6027\u4efb\u52a1\u6216\u5b9a\u671f\u4efb\u52a1\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u9274\u4e8e Pod \u7684 IP \u5730\u5740\u662f\u52a8\u6001\u5206\u914d\u7684\uff0cKubernetes \u5f15\u5165\u4e86 Service \u6765\u63d0\u4f9b\u7a33\u5b9a\u7684\u7f51\u7edc\u8bbf\u95ee\u5165\u53e3\u5e76\u5b9e\u73b0\u8d1f\u8f7d\u5747\u8861\u3002\u6b64\u5916\uff0cIngress \u4f5c\u4e3a\u53cd\u5411\u4ee3\u7406\uff0c\u6839\u636e\u5b9a\u4e49\u7684\u89c4\u5219\u5c06\u6d41\u91cf\u8def\u7531\u81f3\u540e\u7aef\u7684 Service \u6216 Pod\uff0c\u4ece\u800c\u5b9e\u73b0\u57fa\u4e8e\u57df\u540d\u6216\u8def\u5f84\u7684\u7ec6\u7c92\u5ea6\u8def\u7531\u548c\u66f4\u590d\u6742\u7684\u6d41\u91cf\u7ba1\u7406\u3002\u56f4\u7ed5 Pod \u7684\u8bbe\u8ba1\u4e0d\u65ad\u884d\u751f\uff0c\u6700\u7ec8\u7ed8\u5236\u51fa\u56fe 7-5 \u6240\u793a\u7684 Kubernetes \u6838\u5fc3\u529f\u80fd\u5168\u666f\u56fe\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"656\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-1024x656.png\" alt=\"\" class=\"wp-image-18004\" style=\"width:482px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-1024x656.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-300x192.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-768x492.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-1536x984.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-2048x1312.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-830x532.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-230x147.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-350x224.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-330-480x308.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Pod \u662f\u8c03\u5ea6\u7684\u539f\u5b50\u5355\u5143<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Pod \u8fd8\u627f\u62c5\u7740\u4f5c\u4e3a\u8c03\u5ea6\u5355\u5143\u7684\u5173\u952e\u804c\u8d23\u3002<\/p>\n\n\n\n<p>\u8c03\u5ea6\uff08\u7279\u522b\u662f\u534f\u540c\u8c03\u5ea6\uff09\u662f\u975e\u5e38\u9ebb\u70e6\u7684\u4e8b\u60c5\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5047\u8bbe\u6709\u4e24\u4e2a\u5177\u6709\u4eb2\u548c\u6027\u7684\u5bb9\u5668\uff1a<\/p>\n\n\n\n<ul>\n<li>Nginx\uff08\u8d44\u6e90\u9700\u6c42\uff1a1GB \u5185\u5b58\uff09\uff0c\u8d1f\u8d23\u63a5\u6536\u8bf7\u6c42\u5e76\u5c06\u5176\u5199\u5165\u4e3b\u673a\u7684\u65e5\u5fd7\u6587\u4ef6\uff1b<\/li>\n\n\n\n<li>LogCollector\uff08\u8d44\u6e90\u9700\u6c42\uff1a0.5GB \u5185\u5b58\uff09\uff0c\u8d1f\u8d23\u8bfb\u53d6\u65e5\u5fd7\u5e76\u5c06\u5176\u8f6c\u53d1\u5230 Elasticsearch \u96c6\u7fa4\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5047\u8bbe\u5f53\u524d\u96c6\u7fa4\u7684\u8d44\u6e90\u60c5\u51b5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li>Node1\uff1a1.25G \u53ef\u7528\u5185\u5b58\uff1b<\/li>\n\n\n\n<li>Node2\uff1a2G \u53ef\u7528\u5185\u5b58\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5982\u679c\u8fd9\u4e24\u4e2a\u5bb9\u5668\u5fc5\u987b\u534f\u4f5c\u5e76\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u8fd0\u884c\uff0c\u8c03\u5ea6\u5668\u53ef\u80fd\u4f1a\u5c06 Nginx \u8c03\u5ea6\u5230 Node1\u3002\u7136\u800c\uff0cNode1 \u4e0a\u53ea\u6709 1.25GB \u5185\u5b58\uff0c\u800c Nginx \u5360\u7528\u4e86 1GB\uff0c\u5bfc\u81f4 LogCollector \u65e0\u6cd5\u5728\u8be5\u8282\u70b9\u4e0a\u8fd0\u884c\uff0c\u4ece\u800c\u963b\u585e\u4e86\u8c03\u5ea6\u3002\u5c3d\u7ba1\u91cd\u65b0\u8c03\u5ea6\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u4f46\u5982\u679c\u9700\u8981\u534f\u8c03\u6570\u4ee5\u4e07\u8ba1\u7684\u5bb9\u5668\u5462\uff1f\u4ee5\u4e0b\u662f\u4e24\u79cd\u5178\u578b\u7684\u89e3\u51b3\u65b9\u6848\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u6210\u7ec4\u8c03\u5ea6<\/strong>\uff1a\u96c6\u7fa4\u7b49\u5230\u8db3\u591f\u7684\u8d44\u6e90\u6ee1\u8db3\u5bb9\u5668\u9700\u6c42\u540e\uff0c\u7edf\u4e00\u8c03\u5ea6\u3002\u8fd9\u79cd\u65b9\u6cd5\u53ef\u80fd\u5bfc\u81f4\u8c03\u5ea6\u6548\u7387\u964d\u4f4e\u3001\u8d44\u6e90\u5229\u7528\u4e0d\u8db3\uff0c\u5e76\u53ef\u80fd\u51fa\u73b0\u4e92\u76f8\u7b49\u5f85\u800c\u5bfc\u81f4\u6b7b\u9501\u7684\u95ee\u9898\uff1b<\/li>\n\n\n\n<li><strong>\u63d0\u9ad8\u5355\u4e2a\u8c03\u5ea6\u6548\u7387<\/strong>\uff1a \u901a\u8fc7\u63d0\u5347\u5355\u4efb\u52a1\u8c03\u5ea6\u6548\u7387\u89e3\u51b3\u3002\u50cf Google \u7684 Omega \u7cfb\u7edf\u91c7\u7528\u4e86\u57fa\u4e8e\u5171\u4eab\u72b6\u6001\u7684\u4e50\u89c2\u7ed1\u5b9a\uff08Optimistic Binding\uff09\u6765\u4f18\u5316\u5927\u89c4\u6a21\u8c03\u5ea6\u6548\u7387\u3002\u4f46\u8fd9\u79cd\u65b9\u6848\u5b9e\u73b0\u8d77\u6765\u8f83\u4e3a\u590d\u6742\uff0c\u7b14\u8005\u5c06\u5728\u7b2c 7.7.3 \u8282\u201c\u8c03\u5ea6\u5668\u53ca\u6269\u5c55\u8bbe\u8ba1\u201d\u4e2d\u8be6\u7ec6\u63a2\u8ba8\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5728 Pod \u4e0a\u76f4\u63a5\u58f0\u660e\u8d44\u6e90\u9700\u6c42\uff0c\u5e76\u4ee5 Pod \u4f5c\u4e3a\u539f\u5b50\u5355\u5143\u6765\u5b9e\u73b0\u8c03\u5ea6\uff0cPod \u4e0e Pod \u4e4b\u95f4\u4e0d\u5b58\u5728\u8d85\u4eb2\u5bc6\u7684\u5173\u7cfb\uff0c\u5982\u679c\u6709\u5173\u7cfb\uff0c\u5c31\u901a\u8fc7\u7f51\u7edc\u901a\u4fe1\u5b9e\u73b0\u5173\u8054\u3002\u590d\u6742\u7684\u534f\u540c\u8c03\u5ea6\u95ee\u9898\u5728 Kubernetes \u4e2d\u76f4\u63a5\u6d88\u5931\u4e86\uff01<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u8fb9\u8f66\u6a21\u5f0f<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u7ec4\u5408\u591a\u79cd\u4e0d\u540c\u89d2\u8272\u7684\u5bb9\u5668\uff0c\u5171\u4eab\u8d44\u6e90\u5e76\u7edf\u4e00\u8c03\u5ea6\u7f16\u6392\uff0c\u5728 Kubernetes \u4e2d\u662f\u4e00\u79cd\u7ecf\u5178\u7684\u5bb9\u5668\u8bbe\u8ba1\u6a21\u5f0f \u2014\u2014 \u8fb9\u8f66\uff08Sidecar\uff09\u6a21\u5f0f\u3002<\/p>\n\n\n\n<p>\u5982\u56fe 7-6 \u6240\u793a\uff0c\u5728\u8fb9\u8f66\u6a21\u5f0f\u4e0b\uff0c\u4e00\u4e2a\u4e3b\u5bb9\u5668\uff08\u8d1f\u8d23\u4e1a\u52a1\u903b\u8f91\u5904\u7406\uff09\u4e0e\u4e00\u4e2a\u6216\u591a\u4e2a\u8fb9\u8f66\u5bb9\u5668\u5171\u540c\u8fd0\u884c\u5728\u540c\u4e00\u4e2a Pod \u5185\u3002\u8fb9\u8f66\u5bb9\u5668\u8d1f\u8d23\u5904\u7406\u975e\u4e1a\u52a1\u903b\u8f91\u7684\u4efb\u52a1\uff0c\u5982\u65e5\u5fd7\u8bb0\u5f55\u3001\u76d1\u63a7\u3001\u5b89\u5168\u4fdd\u969c\u6216\u6570\u636e\u540c\u6b65\u3002\u8fb9\u8f66\u5bb9\u5668\u5c06\u8fd9\u4e9b\u804c\u80fd\u4ece\u4e3b\u4e1a\u52a1\u5bb9\u5668\u4e2d\u5206\u79bb\uff0c\u4f7f\u5f97\u5f00\u53d1\u66f4\u52a0\u9ad8\u5185\u805a\u3001\u4f4e\u8026\u5408\u7684\u8f6f\u4ef6\u53d8\u5f97\u66f4\u52a0\u5bb9\u6613\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"507\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-1024x507.png\" alt=\"\" class=\"wp-image-18005\" style=\"width:594px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-1024x507.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-300x148.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-768x380.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-1536x760.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-830x411.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-230x114.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-350x173.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331-480x238.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-331.png 1944w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u955c\u50cf\u7684\u539f\u7406\u4e0e\u5e94\u7528<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5bb9\u5668\u955c\u50cf\u662f Docker \u9769\u547d\u6027\u7684\u521b\u65b0\uff0c\u5b83\u5728\u77ed\u77ed\u51e0\u5e74\u5c31\u8fc5\u901f\u6539\u53d8\u4e86\u6574\u4e2a\u4e91\u8ba1\u7b97\u9886\u57df\u7684\u53d1\u5c55\u5386\u7a0b\u3002\u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u6df1\u5165\u5206\u6790\u955c\u50cf\u6280\u672f\u539f\u7406\uff0c\u5e76\u63a2\u8ba8\u5176\u5728\u4e0b\u8f7d\u52a0\u901f\u3001\u542f\u52a8\u52a0\u901f\u3001\u5b58\u50a8\u4f18\u5316\u7b49\u573a\u666f\u4e2d\u7684\u6700\u4f73\u5b9e\u8df5\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u4ec0\u4e48\u662f\u5bb9\u5668\u955c\u50cf<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u6240\u8c13\u7684\u201c\u5bb9\u5668\u955c\u50cf\u201d\uff0c\u5176\u5b9e\u5c31\u662f\u4e00\u4e2a\u201c\u7279\u6b8a\u7684\u538b\u7f29\u5305\u201d\uff0c\u5b83\u5c06\u5e94\u7528\u53ca\u5176\u4f9d\u8d56\uff08\u5305\u62ec\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u5e93\u548c\u914d\u7f6e\uff09\u6253\u5305\u5728\u4e00\u8d77\uff0c\u5f62\u6210\u4e00\u4e2a\u81ea\u5305\u542b\u7684\u73af\u5883\u3002<\/p>\n\n\n\n<p>\u5f88\u591a\u5f00\u53d1\u8005\u901a\u5e38\u5c06\u5e94\u7528\u4f9d\u8d56\u5c40\u9650\u4e8e\u7f16\u7a0b\u8bed\u8a00\u5c42\u9762\u3002\u4f8b\u5982\uff0c\u67d0\u4e2a Java \u5e94\u7528\u4f9d\u8d56\u7279\u5b9a\u7248\u672c\u7684 JDK\uff0c\u6216\u8005 Python \u5e94\u7528\u4f9d\u8d56 Python 2.7\u3002\u4f46\u4e00\u4e2a\u5e38\u88ab\u5ffd\u89c6\u7684\u4e8b\u5b9e\u662f\uff1a\u201c\u64cd\u4f5c\u7cfb\u7edf\u672c\u8eab\u624d\u662f\u5e94\u7528\u8fd0\u884c\u6240\u9700\u7684\u6700\u5b8c\u6574\u4f9d\u8d56\u73af\u5883\u201d\u3002\u5236\u4f5c\u5bb9\u5668\u955c\u50cf\u7684\u8fc7\u7a0b\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u521b\u5efa\u4e00\u4e2a\u7b26\u5408\u7279\u5b9a\u8981\u6c42\u7684\u64cd\u4f5c\u7cfb\u7edf\u5feb\u7167\u3002Docker \u4e2d\uff0c\u8fd9\u4e2a\u64cd\u4f5c\u662f\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker build \u955c\u50cf\u540d\u79f0<\/pre>\n\n\n\n<p>\u4e00\u65e6\u955c\u50cf\u521b\u5efa\u5b8c\u6210\uff0c\u7528\u6237\u4fbf\u53ef\u901a\u8fc7 Docker \u521b\u5efa\u4e00\u4e2a\u201c\u6c99\u76d2\u201d\uff0c\u89e3\u538b\u955c\u50cf\u5e76\u5c06\u5176\u4f5c\u4e3a\u6839\u6587\u4ef6\u7cfb\u7edf\uff08rootfs\uff09\u6302\u8f7d\uff0c\u5bb9\u5668\u5185\u7684\u5e94\u7528\u7a0b\u5e8f\u548c\u4f9d\u8d56\u5c31\u53ef\u4ee5\u987a\u5229\u8fd0\u884c\u3002Docker \u4e2d\uff0c\u8fd9\u4e2a\u64cd\u4f5c\u662f\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker run \u955c\u50cf\u540d\u79f0<\/pre>\n\n\n\n<p>\u4e0a\u8ff0\u7684\u201c\u6c99\u76d2\u201d\uff0c\u5176\u5b9e\u5c31\u662f\u4e0a\u4e00\u7bc7\u4ecb\u7ecd\u7684 namespace \u548c cgroups \u6280\u672f\u521b\u5efa\u51fa\u6765\u7684\u9694\u79bb\u73af\u5883\u3002<\/p>\n\n\n\n<p>\u7531\u4e8e\u955c\u50cf\u6253\u5305\u7684\u662f\u201c\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u201d\uff0c\u5e94\u7528\u7a0b\u5e8f\u4e0e\u8fd0\u884c\u4f9d\u8d56\u5168\u90e8\u5c01\u88c5\u5728\u4e86\u4e00\u8d77\uff0c\u4ece\u800c\u8d4b\u4e88\u4e86\u5bb9\u5668\u6700\u6838\u5fc3\u7684\u4e00\u81f4\u6027\u80fd\u529b\u3002\u65e0\u8bba\u662f\u5728\u672c\u5730\uff0c\u8fd8\u662f\u5728\u4e91\u7aef\u67d0\u4e2a\u865a\u62df\u673a\uff0c\u53ea\u8981\u89e3\u538b\u6253\u5305\u597d\u7684\u5bb9\u5668\u955c\u50cf\uff0c\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u6240\u4f9d\u8d56\u7684\u73af\u5883\u5c31\u80fd\u5b8c\u7f8e\u91cd\u73b0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u6ce8\u610f<br><br>\u4e25\u683c\u8bb2\uff0crootfs \u53ea\u662f\u64cd\u4f5c\u7cfb\u7edf\u7684\u4e00\u90e8\u5206\uff0c\u662f\u6309\u89c4\u5219\u7ec4\u7ec7\u7684\u4e00\u4e9b\u6587\u4ef6\u548c\u76ee\u5f55\uff0c\u5e76\u4e0d\u5305\u62ec\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u3002\u5982\u679c\u5bb9\u5668\u5185\u7684\u8fdb\u7a0b\u4e0e\u5185\u6838\u4ea4\u4e92\uff0c\u5c06\u5f71\u54cd\u5bbf\u4e3b\u673a\uff0c\u8fd9\u662f\u5bb9\u5668\u76f8\u6bd4\u865a\u62df\u673a\u7684\u4e3b\u8981\u7f3a\u9677\u4e4b\u4e00\uff08\u4e0d\u5b89\u5168\uff09\u3002<br><\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u955c\u50cf\u5206\u5c42\u8bbe\u8ba1\u539f\u7406<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>rootfs \u89e3\u51b3\u4e86\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u73af\u5883\u7684\u4e00\u81f4\u6027\u95ee\u9898\uff0c\u4f46\u5e76\u672a\u89e3\u51b3\u6240\u6709\u95ee\u9898\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5f53\u5e94\u7528\u7a0b\u5e8f\u5347\u7ea7\u6216\u8fd0\u884c\u73af\u5883\u53d1\u751f\u53d8\u52a8\u65f6\uff0c\u662f\u5426\u9700\u8981\u91cd\u65b0\u5236\u4f5c\u4e00\u6b21 rootfs\uff1f\u5c06\u6574\u4e2a rootfs \u76f4\u63a5\u6253\u5305\u4e0d\u4ec5\u65e0\u6cd5\u590d\u7528\uff0c\u8fd8\u4f1a\u6d6a\u8d39\u5927\u91cf\u5b58\u50a8\u7a7a\u95f4\u3002\u4e3e\u4f8b\u6765\u8bf4\uff0c\u7b14\u8005\u57fa\u4e8e CentOS ISO \u5236\u4f5c\u4e86\u4e00\u4e2a rootfs\uff0c\u914d\u7f6e\u4e86 Java \u8fd0\u884c\u73af\u5883\u3002\u90a3\u4e48\uff0c\u7b14\u8005\u7684\u540c\u4e8b\u53d1\u5e03 Java \u5e94\u7528\u65f6\uff0c\u80af\u5b9a\u60f3\u590d\u7528\u4e4b\u524d\u5b89\u88c5\u8fc7 Java \u8fd0\u884c\u73af\u5883\u7684 rootfs\uff0c\u800c\u4e0d\u662f\u91cd\u65b0\u5236\u4f5c\u4e00\u4e2a\u3002\u6b64\u5916\uff0c\u5982\u679c\u6bcf\u4e2a\u4eba\u90fd\u91cd\u65b0\u5236\u4f5c rootfs\uff0c\u8003\u8651\u5230\u4e00\u53f0\u4e3b\u673a\u901a\u5e38\u8fd0\u884c\u51e0\u5341\u4e2a\u5bb9\u5668\uff0c\u5c06\u4f1a\u5360\u7528\u5de8\u5927\u7684\u5b58\u50a8\u7a7a\u95f4\u3002<\/p>\n\n\n\n<p>\u5206\u6790\u4e0a\u8ff0 Java \u5e94\u7528\u5bf9 rootfs \u7684\u9700\u6c42\uff0c\u53d1\u73b0\u5e95\u5c42\u7684 rootfs\uff08\u4f8b\u5982 CentOS + JDK\uff09\u5176\u5b9e\u662f\u56fa\u5b9a\u7684\u3002\u90a3\u4e48\uff0c\u662f\u5426\u53ef\u4ee5\u901a\u8fc7\u589e\u91cf\u4fee\u6539\u7684\u65b9\u5f0f\u6765\u652f\u6301\u4e0d\u540c\u5e94\u7528\u7684\u4f9d\u8d56\uff1f\u6bd4\u5982\uff0c\u7ef4\u62a4\u4e00\u4e2a\u5171\u540c\u7684\u201c\u57fa\u7840 rootfs\u201d\uff0c\u7136\u540e\u6839\u636e\u5e94\u7528\u7684\u4e0d\u540c\u4f9d\u8d56\u5236\u4f5c\u4e0d\u540c\u7684\u955c\u50cf\u3002\u4f8b\u5982\uff0c<strong>CentOS + JDK<\/strong> + app-1\u3001<strong>CentOS + JDK<\/strong> + app-2 \u548c <strong>CentOS<\/strong> + Python + app-3 \u7b49\u7b49\u3002<\/p>\n\n\n\n<p>\u589e\u91cf\u4fee\u6539\u7684\u601d\u8def\u5f53\u7136\u53ef\u884c\uff0c\u8fd9\u4e5f\u662f Docker \u955c\u50cf\u8bbe\u8ba1\u7684\u6838\u5fc3\u3002\u4e0e\u4f20\u7edf\u7684 rootfs \u5236\u4f5c\u6d41\u7a0b\u4e0d\u540c\uff0cDocker \u5f15\u5165\u4e86\u201c\u5c42\u201d\uff08layer\uff09\u7684\u6982\u5ff5\uff0c\u6bcf\u6b21\u521b\u5efa\u955c\u50cf\u65f6\uff0c\u90fd\u4f1a\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u5c42\uff0c\u5373\u4e00\u4e2a\u589e\u91cf\u5f0f\u7684 rootfs\u3002<\/p>\n\n\n\n<p>Docker \u955c\u50cf\u7684\u5206\u5c42\u8bbe\u8ba1\u4f9d\u8d56\u4e8e UnionFS\uff08\u8054\u5408\u6587\u4ef6\u7cfb\u7edf\uff09\u6280\u672f\uff0cUnionFS \u5141\u8bb8\u5c06\u591a\u4e2a\u76ee\u5f55\u8054\u5408\u6302\u8f7d\u5230\u540c\u4e00\u76ee\u5f55\u4e0b\uff0c\u5448\u73b0\u7ed9\u7528\u6237\u7684\u662f\u4e00\u4e2a\u7edf\u4e00\u7684\u6587\u4ef6\u7cfb\u7edf\u89c6\u56fe\uff0c\u800c\u975e\u591a\u4e2a\u5206\u6563\u7684\u76ee\u5f55\u3002<\/p>\n\n\n\n<p>UnionFS \u6709\u591a\u79cd\u5b9e\u73b0\uff0c\u4f8b\u5982 OverlayFS\u3001Btrfs \u548c AUFS \u7b49\u3002\u5728 Linux \u5185\u6838 3.18 \u7248\u672c\u4e2d\uff0cOverlayFS \u88ab\u5408\u5e76\u8fdb\u4e3b\u5206\u652f\uff0c\u5e76\u9010\u6e10\u6210\u4e3a\u5404\u5927\u4e3b\u6d41 Linux \u53d1\u884c\u7248\u7684\u9ed8\u8ba4\u8054\u5408\u6587\u4ef6\u7cfb\u7edf\u3002OverlayFS \u7684\u4f7f\u7528\u975e\u5e38\u7b80\u4fbf\uff0c\u53ea\u9700\u901a\u8fc7 mount \u547d\u4ee4\uff0c\u6307\u5b9a\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\u4e3a overlay\uff0c\u5e76\u914d\u7f6e\u4ee5\u4e0b\u76f8\u5173\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>lowerdir<\/strong>\uff1aOverlayFS \u7684\u53ea\u8bfb\u5c42\uff0c\u901a\u5e38\u7528\u4e8e\u63d0\u4f9b\u57fa\u7840\u6587\u4ef6\u7cfb\u7edf\uff0c\u53ef\u4ee5\u6307\u5b9a\u591a\u4e2a\u76ee\u5f55\uff1b<\/li>\n\n\n\n<li><strong>upperdir<\/strong>\uff1aOverlayFS \u7684\u8bfb\u5199\u5c42\uff0c\u7528\u4e8e\u5b58\u50a8\u7528\u6237\u7684\u589e\u91cf\u4fee\u6539\uff1b<\/li>\n\n\n\n<li><strong>merged<\/strong>\uff1a\u6302\u8f7d\u5b8c\u6210\u540e\uff0c\u5c55\u793a\u7ed9\u7528\u6237\u7684\u7edf\u4e00\u6587\u4ef6\u7cfb\u7edf\u89c6\u56fe\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u7b14\u8005\u4e3e\u4e00\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50\u4f9b\u4f60\u53c2\u8003\uff0c\u4ee3\u7801\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\numount .\/merged\nrm upper lower merged work -r\n\nmkdir upper lower merged work\necho \"I'm from lower!\" > lower\/in_lower.txt\necho \"I'm from upper!\" > upper\/in_upper.txt\n# `in_both` is in both directories\necho \"I'm from lower!\" > lower\/in_both.txt\necho \"I'm from upper!\" > upper\/in_both.txt\n\n\/\/ \u4f7f\u7528 mount \u547d\u4ee4\u5373\u5c06 lower\u3001upper \u6302\u8f7d\u5230 merged\u3002\n\n$ sudo mount -t overlay overlay \\\n -o lowerdir=.\/lower,upperdir=.\/upper,workdir=.\/work \\\n .\/merged<\/pre>\n\n\n\n<p>\u4f7f\u7528 mount \u547d\u4ee4\uff0c\u6307\u5b9a\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\u4e3a overlay\uff0c\u6302\u8f7d\u540e\u7684\u6587\u4ef6\u7cfb\u7edf\u5982\u56fe 7-7 \u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"628\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-1024x628.png\" alt=\"\" class=\"wp-image-18007\" style=\"width:514px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-1024x628.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-300x184.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-768x471.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-1536x943.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-2048x1257.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-830x509.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-230x141.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-350x215.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-333-480x295.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u5f53\u5728 merged \u76ee\u5f55\u4e2d\u6267\u884c\u589e\u5220\u6539\u64cd\u4f5c\u65f6\uff0cOverlayFS \u6587\u4ef6\u7cfb\u7edf\u4f1a\u89e6\u53d1\u5199\u65f6\u590d\u5236\uff08CoW\uff0cCopy-On-Write\uff09\u7b56\u7565\u3002\u4e0b\u9762\u901a\u8fc7\u4e00\u7cfb\u5217\u64cd\u4f5c\u6765\u89e3\u91ca CoW \u7684\u57fa\u672c\u539f\u7406\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u65b0\u5efa\u6587\u4ef6\u65f6<\/strong>\uff1a\u6587\u4ef6\u4f1a\u88ab\u5199\u5165\u5230 upper \u76ee\u5f55\u4e2d\uff1b<\/li>\n\n\n\n<li><strong>\u5220\u9664\u6587\u4ef6\u65f6<\/strong>\uff1a\n<ul>\n<li>\u5982\u679c\u5220\u9664 in_upper.txt\uff0c\u8be5\u6587\u4ef6\u4f1a\u4ece upper \u76ee\u5f55\u4e2d\u79fb\u9664\uff1b<\/li>\n\n\n\n<li>\u5982\u679c\u5220\u9664 in_lower.txt\uff0clower \u76ee\u5f55\u4e2d\u7684 in_lower.txt \u6587\u4ef6\u4fdd\u6301\u4e0d\u53d8\uff0c\u4f46 upper \u76ee\u5f55\u4f1a\u65b0\u589e\u4e00\u4e2a\u7279\u6b8a\u6587\u4ef6\uff0c\u6807\u8bb0 in_lower.txt \u5728 merged \u76ee\u5f55\u4e2d\u5df2\u88ab\u5220\u9664\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u4fee\u6539\u6587\u4ef6\u65f6<\/strong>\uff1a\u5982\u679c\u4fee\u6539 in_lower.txt\uff0cupper \u76ee\u5f55\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 in_lower.txt \u6587\u4ef6\uff0c\u5305\u542b\u66f4\u65b0\u540e\u7684\u5185\u5bb9\uff0c\u800c lower \u76ee\u5f55\u4e2d\u7684\u539f\u59cb\u6587\u4ef6\u4fdd\u6301\u4e0d\u53d8\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u518d\u6765\u770b Docker \u955c\u50cf\u5229\u7528\u8054\u5408\u6587\u4ef6\u7cfb\u7edf\u7684\u5206\u5c42\u8bbe\u8ba1\u3002\u5982\u56fe 7-8 \u6240\u793a\uff0c\u6574\u4e2a\u955c\u50cf\u4ece\u4e0b\u5f80\u4e0a\u7531 6 \u4e2a\u5c42\u7ec4\u6210\uff1a<\/p>\n\n\n\n<ul>\n<li>\u6700\u5e95\u5c42\u662f\u57fa\u7840\u955c\u50cf Debian Stretch\uff0c\u76f8\u5f53\u4e8e\u201cbase rootfs\u201d\uff0c\u6240\u6709\u5bb9\u5668\u53ef\u4ee5\u5171\u4eab\u8fd9\u4e00\u5c42\uff1b<\/li>\n\n\n\n<li>\u63a5\u4e0b\u6765\u7684 3 \u5c42\u662f\u901a\u8fc7 Dockerfile \u4e2d\u7684 ADD\u3001ENV\u3001CMD \u7b49\u6307\u4ee4\u751f\u6210\u7684\u53ea\u8bfb\u5c42\uff1b<\/li>\n\n\n\n<li>Init Layer \u4f4d\u4e8e\u53ea\u8bfb\u5c42\u548c\u53ef\u5199\u5c42\u4e4b\u95f4\uff0c\u5b58\u653e\u53ef\u80fd\u4f1a\u88ab\u4fee\u6539\u7684\u6587\u4ef6\uff0c\u5982 \/etc\/hosts\u3001\/etc\/resolv.conf \u7b49\u3002\u8fd9\u4e9b\u6587\u4ef6\u539f\u672c\u5c5e\u4e8e Debian \u955c\u50cf\uff0c\u4f46\u5bb9\u5668\u542f\u52a8\u65f6\uff0c\u7528\u6237\u5f80\u5f80\u4f1a\u5199\u5165\u4e00\u4e9b\u6307\u5b9a\u7684\u914d\u7f6e\uff0c\u56e0\u6b64 Docker \u4e3a\u5176\u5355\u72ec\u521b\u5efa\u4e86\u8fd9\u4e00\u5c42\uff1b<\/li>\n\n\n\n<li>\u6700\u4e0a\u5c42\u662f\u901a\u8fc7 CoW\uff08\u5199\u65f6\u590d\u5236\uff09\u6280\u672f\u521b\u5efa\u7684\u53ef\u5199\u5c42\uff08Read\/Write Layer\uff09\u3002\u5bb9\u5668\u5185\u7684\u6240\u6709\u589e\u3001\u5220\u3001\u6539\u64cd\u4f5c\u90fd\u53d1\u751f\u5728\u6b64\u5c42\u3002\u4f46\u8be5\u5c42\u7684\u6570\u636e\u4e0d\u5177\u5907\u6301\u4e45\u6027\uff0c\u5bb9\u5668\u9500\u6bc1\u65f6\uff0c\u6240\u6709\u5199\u5165\u7684\u6570\u636e\u4e5f\u4f1a\u4e22\u5931\u3002\u5bb9\u5668\u955c\u50cf\u5185\u65e0\u6cd5\u5199\u5165\u4efb\u4f55\u6570\u636e\uff0c\u662f\u4e0d\u53ef\u53d8\u57fa\u7840\u8bbe\u65bd\u7684\u601d\u60f3\u7684\u4f53\u73b0\uff0c\u65e0\u8bba\u5bb9\u5668\u91cd\u542f\u591a\u5c11\u6b21\u6216\u5728\u4efb\u4f55\u673a\u5668\u4e0a\u8fd0\u884c\uff0c\u53ea\u8981\u4f7f\u7528\u76f8\u540c\u7684\u955c\u50cf\uff0c\u542f\u52a8\u7684\u670d\u52a1\u59cb\u7ec8\u4fdd\u6301\u4e00\u81f4\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"676\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-1024x676.png\" alt=\"\" class=\"wp-image-18009\" style=\"width:536px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-1024x676.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-300x198.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-768x507.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-1536x1014.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-830x548.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-230x152.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-350x231.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1-480x317.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/docker-file-system-DzRAfIUc-1.png 1878w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u6700\u7ec8\uff0c\u8fd9 6 \u4e2a\u5c42\u88ab\u8054\u5408\u6302\u8f7d\u5230 \/var\/lib\/docker\/overlay\/mnt \u76ee\u5f55\u3002\u5bb9\u5668\u7cfb\u7edf\u901a\u8fc7\u7cfb\u7edf\u8c03\u7528 chroot \u548c pivot_root \u5207\u6362\u6839\u76ee\u5f55\uff0c\u4f7f\u5f97\u5bb9\u5668\u5185\u7684\u8fdb\u7a0b\u4eff\u4f5b\u72ec\u5360\u4e00\u4e2a\u5e26\u6709 Java \u73af\u5883\u7684 Debian \u64cd\u4f5c\u7cfb\u7edf\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7\u955c\u50cf\u5206\u5c42\u8bbe\u8ba1\uff0c\u4ee5 Docker \u955c\u50cf\u4e3a\u6838\u5fc3\uff0c\u4e0d\u540c\u516c\u53f8\u548c\u56e2\u961f\u7684\u5f00\u53d1\u4eba\u5458\u53ef\u4ee5\u7d27\u5bc6\u534f\u4f5c\u3002\u6bcf\u4e2a\u4eba\u4e0d\u4ec5\u53ef\u4ee5\u53d1\u5e03\u57fa\u7840\u955c\u50cf\uff0c\u8fd8\u53ef\u4ee5\u57fa\u4e8e\u4ed6\u4eba\u7684\u57fa\u7840\u955c\u50cf\u6784\u5efa\u548c\u53d1\u5e03\u81ea\u5df1\u7684\u8f6f\u4ef6\u3002<strong>\u955c\u50cf\u7684\u589e\u91cf\u64cd\u4f5c\u4f7f\u5f97\u62c9\u53d6\u548c\u63a8\u9001\u5185\u5bb9\u4e5f\u662f\u589e\u91cf\u7684\uff0c\u8fd9\u8fdc\u6bd4\u64cd\u4f5c\u865a\u62df\u673a\u52a8\u8f84\u6570 GB \u7684 ISO \u955c\u50cf\u8981\u66f4\u654f\u6377<\/strong>\u3002\u66f4\u91cd\u8981\u7684\u662f\uff0c\u5bb9\u5668\u955c\u50cf\u4e00\u65e6\u53d1\u5e03\uff0c\u5168\u7403\u4efb\u4f55\u5730\u65b9\u7684\u7528\u6237\u90fd\u80fd\u4e0b\u8f7d\u5e76\u590d\u73b0\u5e94\u7528\u6240\u9700\u7684\u5b8c\u6574\u73af\u5883\uff0c\u6253\u901a\u4e86\u201c\u5f00\u53d1-\u6d4b\u8bd5-\u90e8\u7f72\u201d\u6d41\u7a0b\u4e2d\u7684\u6bcf\u4e2a\u73af\u8282\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_7-3-3-\u6784\u5efa\u8db3\u591f\u5c0f\u7684\u5bb9\u5668\u955c\u50cf\">\u3000<\/h2>\n\n\n\n<p><strong>\u6784\u5efa\u8db3\u591f\u5c0f\u7684\u5bb9\u5668\u955c\u50cf<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5bb9\u5668\u955c\u50cf\u7684\u4e00\u5927\u6311\u6218\u662f\u5c3d\u91cf\u51cf\u5c0f\u955c\u50cf\u4f53\u79ef\u3002\u8f83\u5c0f\u7684\u955c\u50cf\u5728\u90e8\u7f72\u3001\u6545\u969c\u8f6c\u79fb\u548c\u5b58\u50a8\u6210\u672c\u7b49\u65b9\u9762\u5177\u6709\u663e\u8457\u4f18\u52bf\u3002\u6784\u5efa\u8db3\u591f\u5c0f\u955c\u50cf\u7684\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u9009\u7528\u7cbe\u7b80\u7684\u57fa\u7840\u955c\u50cf<\/strong>\uff1a\u57fa\u7840\u955c\u50cf\u5e94\u53ea\u5305\u542b\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u6240\u5fc5\u9700\u7684\u6700\u5c0f\u7cfb\u7edf\u73af\u5883\u548c\u4f9d\u8d56\u3002\u9009\u62e9 Alpine Linux \u8fd9\u6837\u7684\u8f7b\u91cf\u7ea7\u53d1\u884c\u7248\u4f5c\u4e3a\u57fa\u7840\u955c\u50cf\uff0c\u955c\u50cf\u4f53\u79ef\u4f1a\u6bd4 CentOS \u8fd9\u6837\u7684\u5927\u800c\u5168\u7684\u57fa\u7840\u955c\u50cf\u8981\u5c0f\u5f97\u591a\uff1b<\/li>\n\n\n\n<li><strong>\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa\u955c\u50cf<\/strong>\uff1a\u5728\u6784\u5efa\u8fc7\u7a0b\u4e2d\uff0c\u7f16\u8bd1\u7f13\u5b58\u3001\u4e34\u65f6\u6587\u4ef6\u548c\u5de5\u5177\u7b49\u4e0d\u5fc5\u8981\u7684\u5185\u5bb9\u53ef\u80fd\u88ab\u5305\u542b\u5728\u955c\u50cf\u4e2d\u3002\u901a\u8fc7\u591a\u9636\u6bb5\u6784\u5efa\uff0c\u53ef\u4ee5\u53ea\u6253\u5305\u7f16\u8bd1\u540e\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u4ece\u800c\u5f97\u5230\u66f4\u52a0\u7cbe\u7b80\u7684\u955c\u50cf\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u662f\u901a\u8fc7\u591a\u9636\u6bb5\u6784\u5efa\u4e00\u4e2a\u7cbe\u7b80 Nginx \u955c\u50cf\u7684\u793a\u4f8b\uff0c\u4f9b\u8bfb\u8005\u53c2\u8003\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u7b2c 1 \u9636\u6bb5\nFROM skillfir\/alpine:gcc AS builder01\nRUN wget https:\/\/nginx.org\/download\/nginx-1.24.0.tar.gz -O nginx.tar.gz &amp;&amp; \\\ntar -zxf nginx.tar.gz &amp;&amp; \\\nrm -f nginx.tar.gz &amp;&amp; \\\ncd \/usr\/src\/nginx-1.24.0 &amp;&amp; \\\n .\/configure --prefix=\/app\/nginx --sbin-path=\/app\/nginx\/sbin\/nginx &amp;&amp; \\\n  make &amp;&amp; make install\n  \n# \u7b2c 2 \u9636\u6bb5 \u53ea\u6253\u5305\u6700\u7ec8\u53ef\u6267\u884c\u6587\u4ef6\nFROM skillfir\/alpine:glibc\nRUN apk update &amp;&amp; apk upgrade &amp;&amp; apk add pcre openssl-dev pcre-dev zlib-dev \n\nCOPY --from=builder01 \/app\/nginx \/app\/nginx\nWORKDIR \/app\/nginx\nEXPOSE 80\nCMD [\".\/sbin\/nginx\",\"-g\",\"daemon off;\"]\n<\/pre>\n\n\n\n<p>\u4f7f\u7528 docker build \u547d\u4ee4\u6784\u5efa\u955c\u50cf\u5e76\u67e5\u770b\u751f\u6210\u7684\u955c\u50cf\uff0c\u6700\u7ec8\u5927\u5c0f\u4e3a 23.4 MB\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker build -t alpine:nginx .\n$ docker images \nREPOSITORY                TAG             IMAGE ID       CREATED          SIZE\nalpine                    nginx           ca338a969cf7   17 seconds ago   23.4MB<\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u52a0\u901f\u5bb9\u5668\u955c\u50cf\u4e0b\u8f7d<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5f53\u5bb9\u5668\u542f\u52a8\u65f6\uff0c\u5982\u679c\u672c\u5730\u6ca1\u6709\u955c\u50cf\u6587\u4ef6\uff0c\u5b83\u5c06\u4ece\u8fdc\u7a0b\u4ed3\u5e93\uff08Repository\uff09\u4e0b\u8f7d\u3002\u955c\u50cf\u4e0b\u8f7d\u6548\u7387\u53d7\u9650\u4e8e\u7f51\u7edc\u5e26\u5bbd\u548c\u4ed3\u5e93\u670d\u52a1\u8d28\u91cf\uff0c\u955c\u50cf\u8d8a\u5927\uff0c\u4e0b\u8f7d\u65f6\u95f4\u8d8a\u957f\uff0c\u5bb9\u5668\u542f\u52a8\u4e5f\u56e0\u6b64\u53d8\u6162\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u89e3\u51b3\u955c\u50cf\u62c9\u53d6\u901f\u5ea6\u6162\u548c\u5e26\u5bbd\u6d6a\u8d39\u7684\u95ee\u9898\uff0c\u963f\u91cc\u5df4\u5df4\u6280\u672f\u56e2\u961f\u5728 2018 \u5e74\u5f00\u6e90\u4e86 Dragonfly \u9879\u76ee\u3002<\/p>\n\n\n\n<p>Dragonfly \u7684\u5de5\u4f5c\u539f\u7406\u5982\u56fe 7-9 \u6240\u793a\u3002\u9996\u5148\uff0cDragonfly \u5728\u591a\u4e2a\u8282\u70b9\u4e0a\u542f\u52a8 Peer \u670d\u52a1\uff08\u7c7b\u4f3c P2P \u8282\u70b9\uff09\u3002\u5f53\u5bb9\u5668\u7cfb\u7edf\u4e0b\u8f7d\u955c\u50cf\u65f6\uff0c\u4e0b\u8f7d\u8bf7\u6c42\u901a\u8fc7 Peer \u8f6c\u53d1\u5230 Scheduler\uff08\u7c7b\u4f3c P2P \u8c03\u5ea6\u5668\uff09\uff0cScheduler \u5224\u65ad\u8be5\u955c\u50cf\u662f\u5426\u4e3a\u9996\u6b21\u4e0b\u8f7d\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u9996\u6b21\u4e0b\u8f7d<\/strong>\uff1aScheduler \u542f\u52a8\u56de\u6e90\u64cd\u4f5c\uff0c\u4ece\u6e90\u670d\u52a1\u5668\u83b7\u53d6\u955c\u50cf\u6587\u4ef6\uff0c\u5e76\u5c06\u955c\u50cf\u6587\u4ef6\u5207\u5272\u6210\u591a\u4e2a\u201c\u5757\u201d\uff08Piece\uff09\u3002\u6bcf\u4e2a\u5757\u4f1a\u7f13\u5b58\u5230\u4e0d\u540c\u8282\u70b9\uff0c\u76f8\u5173\u914d\u7f6e\u4fe1\u606f\u4e0a\u62a5\u7ed9 Scheduler\uff0c\u4f9b\u540e\u7eed\u8c03\u5ea6\u51b3\u7b56\u4f7f\u7528\uff1b<\/li>\n\n\n\n<li><strong>\u975e\u9996\u6b21\u4e0b\u8f7d<\/strong>\uff1aScheduler \u6839\u636e\u914d\u7f6e\uff0c\u751f\u6210\u4e00\u4e2a\u5305\u542b\u6240\u6709\u955c\u50cf\u5757\u7684\u4e0b\u8f7d\u8c03\u5ea6\u6307\u4ee4\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6700\u7ec8\uff0cPeer \u6839\u636e\u8c03\u5ea6\u7b56\u7565\u4ece\u96c6\u7fa4\u4e2d\u7684\u4e0d\u540c\u8282\u70b9\u4e0b\u8f7d\u6240\u6709\u5757\uff0c\u5e76\u5c06\u5b83\u4eec\u62fc\u63a5\u6210\u5b8c\u6574\u7684\u955c\u50cf\u6587\u4ef6\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-1024x538.png\" alt=\"\" class=\"wp-image-18010\" style=\"width:482px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-1024x538.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-300x158.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-768x403.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-1536x807.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-830x436.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-230x121.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-350x184.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334-480x252.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-334.png 2018w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u53ef\u4ee5\u770b\u51fa\uff0cDragonfly \u7684\u955c\u50cf\u4e0b\u8f7d\u52a0\u901f\u6d41\u7a0b\u4e0e P2P \u4e0b\u8f7d\u52a0\u901f\u975e\u5e38\u76f8\u4f3c\uff0c\u4e8c\u8005\u90fd\u662f\u901a\u8fc7\u5206\u5e03\u5f0f\u8282\u70b9\u548c\u667a\u80fd\u8c03\u5ea6\u6765\u52a0\u901f\u5927\u6587\u4ef6\u7684\u4f20\u8f93\u4e0e\u91cd\u7ec4\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u52a0\u901f\u5bb9\u5668\u955c\u50cf\u542f\u52a8<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5bb9\u5668\u955c\u50cf\u7684\u5927\u5c0f\u76f4\u63a5\u5f71\u54cd\u542f\u52a8\u65f6\u95f4\uff0c\u4e00\u4e9b\u5927\u578b\u8f6f\u4ef6\u7684\u955c\u50cf\u53ef\u80fd\u8d85\u8fc7\u6570 GB\u3002\u4f8b\u5982\uff0c\u673a\u5668\u5b66\u4e60\u6846\u67b6 TensorFlow \u7684\u955c\u50cf\u5927\u5c0f\u4e3a 1.83 GB\uff0c\u51b7\u542f\u52a8\u65f6\u81f3\u5c11\u9700\u8981 3 \u5206\u949f\u3002\u5927\u578b\u955c\u50cf\u4e0d\u4ec5\u542f\u52a8\u7f13\u6162\u3001\u955c\u50cf\u5185\u7684\u6587\u4ef6\u5f80\u5f80\u672a\u88ab\u5145\u5206\u5229\u7528\uff08\u4e1a\u5185\u7814\u7a76\u8868\u660e\uff0c\u901a\u5e38\u955c\u50cf\u4e2d\u53ea\u6709 6% \u7684\u5185\u5bb9\u88ab\u5b9e\u9645\u4f7f\u7528\uff09<sup><a href=\"https:\/\/www.thebyte.com.cn\/container\/image.html#footnote1\">[1]<\/a><a><\/a><\/sup>\u3002<\/p>\n\n\n\n<p>2020 \u5e74\uff0c\u963f\u91cc\u5df4\u5df4\u6280\u672f\u56e2\u961f\u53d1\u5e03\u4e86 Nydus \u9879\u76ee\uff0c\u5b83\u5c06\u955c\u50cf\u5c42\u7684\u6570\u636e\uff08blobs\uff09\u4e0e\u5143\u6570\u636e\uff08bootstrap\uff09\u5206\u79bb\uff0c\u5bb9\u5668\u7b2c\u4e00\u6b21\u542f\u52a8\u65f6\uff0c\u9996\u5148\u62c9\u53d6\u5143\u6570\u636e\uff0c\u518d\u6309\u9700\u62c9\u53d6 blobs \u6570\u636e\u3002\u76f8\u8f83\u4e8e\u62c9\u53d6\u6574\u4e2a\u955c\u50cf\u5c42\uff0cNydus \u4e0b\u8f7d\u7684\u6570\u636e\u91cf\u5927\u5927\u51cf\u5c11\u3002\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0cNydus \u8fd8\u4f7f\u7528 FUSE \u6280\u672f\uff08Filesystem in Userspace\uff0c\u7528\u6237\u6001\u6587\u4ef6\u7cfb\u7edf\uff09\u91cd\u6784\u6587\u4ef6\u7cfb\u7edf\uff0c\u7528\u6237\u51e0\u4e4e\u65e0\u9700\u4efb\u4f55\u7279\u6b8a\u914d\u7f6e\uff08\u611f\u77e5\u4e0d\u5230 Nydus \u7684\u5b58\u5728\uff09\uff0c\u5373\u53ef\u6309\u9700\u4ece\u8fdc\u7a0b\u955c\u50cf\u4e2d\u5fc3\u62c9\u53d6\u6570\u636e\uff0c\u52a0\u901f\u5bb9\u5668\u955c\u50cf\u542f\u52a8\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"428\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-1024x428.png\" alt=\"\" class=\"wp-image-18012\" style=\"width:498px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-1024x428.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-300x125.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-768x321.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-1536x642.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-2048x857.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-830x347.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-230x96.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-350x146.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-336-480x201.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u5982\u56fe 7-11 \u6240\u793a\uff0c\u4f20\u7edf\u955c\u50cf\u683c\u5f0f\uff08OCIv1\uff09\u4e0e Nydus \u955c\u50cf\u683c\u5f0f\u7684\u542f\u52a8\u65f6\u95f4\u5bf9\u6bd4\u3002Nydus \u5c06\u5e38\u89c1\u5e94\u7528\u955c\u50cf\u7684\u542f\u52a8\u65f6\u95f4\u4ece\u51e0\u5206\u949f\u7f29\u77ed\u81f3\u4ec5\u51e0\u79d2\u949f\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"720\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-1024x720.png\" alt=\"\" class=\"wp-image-18013\" style=\"width:508px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-1024x720.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-300x211.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-768x540.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-1536x1080.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-830x584.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-230x162.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-350x246.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg-480x338.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/nydus-performance-BqH6CcNg.png 1604w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u7efc\u5408\u6765\u8bb2\uff0c\u4e0a\u8ff0\u4f18\u5316\u63aa\u65bd\u5bf9\u4e8e\u5927\u89c4\u6a21\u96c6\u7fa4\uff0c\u6216\u5bf9\u6269\u5bb9\u5ef6\u8fdf\u6709\u4e25\u683c\u8981\u6c42\u7684\u573a\u666f\uff08\u5982\u5927\u4fc3\u6269\u5bb9\u3001\u6e38\u620f\u670d\u52a1\u5668\u6269\u5bb9\u7b49\uff09\u6765\u8bf4\uff0c\u4e0d\u4ec5\u80fd\u663e\u8457\u964d\u4f4e\u5bb9\u5668\u542f\u52a8\u65f6\u95f4\uff0c\u8fd8\u80fd\u5927\u5e45\u8282\u7701\u7f51\u7edc\u548c\u5b58\u50a8\u6210\u672c\u3002\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u8fd9\u4e9b\u6280\u672f\u8c03\u6574\u5bf9\u4e1a\u52a1\u5de5\u7a0b\u5e08\u5b8c\u5168\u900f\u660e\uff0c\u4e0d\u4f1a\u5f71\u54cd\u539f\u6709\u7684\u4e1a\u52a1\u6d41\u7a0b\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u8fd0\u884c\u65f6\u4e0e CRI \u63a5\u53e3<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Docker \u5728\u8bde\u751f\u5341\u591a\u5e74\u540e\uff0c\u672a\u66fe\u6599\u5230\u4ecd\u4f1a\u91cd\u65b0\u6210\u4e3a\u8206\u8bba\u7126\u70b9\u3002\u4e8b\u4ef6\u7684\u8d77\u56e0\u662f Kubernetes \u5ba3\u5e03\u5c06\u8fdb\u5165\u5e9f\u5f03 dockershim \u652f\u6301\u7684\u5012\u8ba1\u65f6\uff0c\u968f\u540e\u8bb9\u4f20\u8bb9\u88ab\u4eba\u8bef\u4ee5\u4e3a Docker \u4e0d\u80fd\u518d\u7528\u4e86\u3002<\/p>\n\n\n\n<p>\u867d\u8bf4\u6b64\u6b21\u4e8b\u4ef6\u6709\u4f17\u591a\u6807\u9898\u515a\u7684\u63a8\u6ce2\u52a9\u6f9c\uff0c\u4f46\u4e5f\u4ece\u4fa7\u9762\u8bf4\u660e\u4e86 Kubernetes \u4e0e Docker \u7684\u5173\u7cfb\u5341\u5206\u5fae\u5999\u3002\u672c\u8282\uff0c\u6211\u4eec\u628a\u63e1\u8fd9\u4e24\u8005\u5173\u7cfb\u7684\u53d8\u5316\uff0c\u4ece\u4e2d\u7406\u89e3 Kubernetes \u5bb9\u5668\u8fd0\u884c\u65f6\u63a5\u53e3\u7684\u6f14\u53d8\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Docker \u4e0e Kubernetes<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u7531\u4e8e Docker \u592a\u6d41\u884c\u4e86\uff0cKubernetes \u6ca1\u6709\u8003\u8651\u652f\u6301\u5176\u4ed6\u5bb9\u5668\u5f15\u64ce\u7684\u53ef\u80fd\u6027\uff0c\u5b8c\u5168\u4f9d\u8d56\u5e76\u7ed1\u5b9a\u4e8e Docker\u3002\u90a3\u65f6\uff0cKubernetes \u901a\u8fc7\u5185\u90e8\u7684 DockerManager \u7ec4\u4ef6\u8c03\u7528 Docker API \u6765\u521b\u5efa\u548c\u7ba1\u7406\u5bb9\u5668\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"212\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-1024x212.png\" alt=\"\" class=\"wp-image-18014\" style=\"width:514px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-1024x212.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-300x62.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-768x159.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-1536x318.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-830x172.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-230x48.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-350x72.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337-480x99.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-337.png 1944w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u968f\u7740\u5e02\u573a\u4e0a\u51fa\u73b0\u8d8a\u6765\u8d8a\u591a\u7684\u5bb9\u5668\u8fd0\u884c\u65f6\uff0c\u6bd4\u5982 CoreOS \u63a8\u51fa\u7684\u5f00\u6e90\u5bb9\u5668\u5f15\u64ce Rocket\uff08\u7b80\u79f0 rkt\uff09\uff0cKubernetes \u5728 rkt \u53d1\u5e03\u540e\u91c7\u7528\u7c7b\u4f3c\u5f3a\u7ed1\u5b9a Docker \u7684\u65b9\u5f0f\uff0c\u6dfb\u52a0\u4e86\u5bf9 rkt \u7684\u652f\u6301\u3002\u968f\u7740\u5bb9\u5668\u6280\u672f\u7684\u5feb\u901f\u53d1\u5c55\uff0c\u5982\u679c\u7ee7\u7eed\u91c7\u7528\u4e0e Docker \u7c7b\u4f3c\u7684\u5f3a\u7ed1\u5b9a\u65b9\u5f0f\uff0cKubernetes \u7684\u7ef4\u62a4\u5de5\u4f5c\u5c06\u53d8\u5f97\u65e0\u6bd4\u5e9e\u5927\u3002<\/p>\n\n\n\n<p>Kubernetes \u9700\u8981\u91cd\u65b0\u5ba1\u89c6\u4e0e\u5404\u79cd\u5bb9\u5668\u8fd0\u884c\u65f6\u7684\u9002\u914d\u95ee\u9898\u4e86\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u8fd0\u884c\u65f6\u63a5\u53e3 CRI<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4ece Kubernetes 1.5 \u7248\u672c\u5f00\u59cb\uff0cKubernetes \u5728\u9075\u5faa OCI \u6807\u51c6\u7684\u57fa\u7840\u4e0a\uff0c\u5c06\u5bb9\u5668\u7ba1\u7406\u64cd\u4f5c\u62bd\u8c61\u4e3a\u4e00\u7cfb\u5217\u63a5\u53e3\u3002\u8fd9\u4e9b\u63a5\u53e3\u4f5c\u4e3a Kubelet\uff08Kubernetes \u8282\u70b9\u4ee3\u7406\uff09\u4e0e\u5bb9\u5668\u8fd0\u884c\u65f6\u4e4b\u95f4\u7684\u6865\u6881\uff0c\u4f7f Kubelet \u80fd\u901a\u8fc7\u53d1\u9001\u63a5\u53e3\u8bf7\u6c42\u6765\u7ba1\u7406\u5bb9\u5668\u3002<\/p>\n\n\n\n<p>\u7ba1\u7406\u5bb9\u5668\u7684\u63a5\u53e3\u79f0\u4e3a\u201cCRI \u63a5\u53e3\u201d\uff08Container Runtime Interface\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\u63a5\u53e3\uff09\u3002\u5982\u4e0b\u9762\u7684\u4ee3\u7801\u6240\u793a\uff0cCRI \u63a5\u53e3\u5176\u5b9e\u662f\u4e00\u5957\u901a\u8fc7 Protocol Buffer \u5b9a\u4e49\u7684 API\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ https:\/\/github.com\/kubernetes\/cri-api\/blob\/master\/pkg\/apis\/services.go\n\/\/ RuntimeService \u5b9a\u4e49\u4e86\u7ba1\u7406\u5bb9\u5668\u7684 API\nservice RuntimeService {\n\n    \/\/ CreateContainer \u5728\u6307\u5b9a\u7684 PodSandbox \u4e2d\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5bb9\u5668\n    rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {}\n    \/\/ StartContainer \u542f\u52a8\u5bb9\u5668\n    rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {}\n    \/\/ StopContainer \u505c\u6b62\u6b63\u5728\u8fd0\u884c\u7684\u5bb9\u5668\u3002\n    rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {}\n    ...\n}\n\n\/\/ ImageService \u5b9a\u4e49\u4e86\u7ba1\u7406\u955c\u50cf\u7684 API\u3002\nservice ImageService {\n    \/\/ ListImages \u5217\u51fa\u73b0\u6709\u7684\u955c\u50cf\u3002\n    rpc ListImages(ListImagesRequest) returns (ListImagesResponse) {}\n    \/\/ PullImage \u4f7f\u7528\u8ba4\u8bc1\u914d\u7f6e\u62c9\u53d6\u955c\u50cf\u3002\n    rpc PullImage(PullImageRequest) returns (PullImageResponse) {}\n    \/\/ RemoveImage \u5220\u9664\u955c\u50cf\u3002\n    rpc RemoveImage(RemoveImageRequest) returns (RemoveImageResponse) {}\n    ...\n}\n<\/pre>\n\n\n\n<p>\u6839\u636e\u56fe 7-13\uff0cCRI \u7684\u5b9e\u73b0\u7531\u4e09\u4e2a\u4e3b\u8981\u7ec4\u4ef6\u534f\u4f5c\u5b8c\u6210\uff1agRPC Client\u3001gRPC Server \u548c\u5177\u4f53\u7684\u5bb9\u5668\u8fd0\u884c\u65f6\u3002\u5177\u4f53\u6765\u8bf4\uff1a<\/p>\n\n\n\n<ul>\n<li>Kubelet \u5145\u5f53 gRPC Client\uff0c\u8c03\u7528 CRI \u63a5\u53e3\uff1b<\/li>\n\n\n\n<li>CRI shim \u4f5c\u4e3a gRPC Server\uff0c\u54cd\u5e94 CRI \u8bf7\u6c42\uff0c\u5e76\u5c06\u5176\u8f6c\u6362\u4e3a\u5177\u4f53\u7684\u5bb9\u5668\u8fd0\u884c\u65f6\u7ba1\u7406\u64cd\u4f5c\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"343\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-1024x343.png\" alt=\"\" class=\"wp-image-18015\" style=\"width:462px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-1024x343.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-300x101.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-768x257.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-830x278.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-230x77.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-350x117.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338-480x161.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-338.png 1140w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u7531\u6b64\uff0c\u5e02\u573a\u4e0a\u7684\u5404\u7c7b\u5bb9\u5668\u8fd0\u884c\u65f6\uff0c\u53ea\u9700\u6309\u7167\u89c4\u8303\u5b9e\u73b0 CRI \u63a5\u53e3\uff0c\u5c31\u53ef\u4ee5\u65e0\u7f1d\u63a5\u5165 Kubernetes \u751f\u6001\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Kubernetes \u4e13\u7528\u5bb9\u5668\u8fd0\u884c\u65f6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>2017 \u5e74\uff0cGoogle\u3001RedHat\u3001Intel\u3001SUSE \u548c IBM \u4e00\u4f17\u5927\u5382\u8054\u5408\u53d1\u5e03\u4e86 CRI-O\uff08Container Runtime Interface Orchestrator\uff09\u9879\u76ee\u3002\u4ece\u540d\u79f0\u53ef\u4ee5\u770b\u51fa\uff0cCRI-O \u7684\u76ee\u6807\u662f\u517c\u5bb9 CRI \u548c OCI\uff0c\u4f7f Kubernetes \u80fd\u5728\u4e0d\u4f9d\u8d56\u4f20\u7edf\u5bb9\u5668\u5f15\u64ce\uff08\u5982 Docker\uff09\u7684\u60c5\u51b5\u4e0b\uff0c\u4ecd\u80fd\u6709\u6548\u7ba1\u7406\u5bb9\u5668\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"313\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-1024x313.png\" alt=\"\" class=\"wp-image-18017\" style=\"width:468px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-1024x313.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-300x92.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-768x235.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-1536x470.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-830x254.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-230x70.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-350x107.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340-480x147.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-340.png 1956w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Google \u63a8\u51fa CRI-O \u7684\u610f\u56fe\u660e\u663e\uff0c\u5373\u524a\u5f31 Docker \u5728\u5bb9\u5668\u7f16\u6392\u9886\u57df\u7684\u4e3b\u5bfc\u5730\u4f4d\u3002\u4f46\u5f7c\u65f6 Docker \u5728\u5bb9\u5668\u751f\u6001\u4e2d\u7684\u5e02\u573a\u4efd\u989d\u4ecd\u5360\u7edd\u5bf9\u4f18\u52bf\u3002\u5bf9\u4e8e\u666e\u901a\u7528\u6237\u800c\u8a00\uff0c\u5982\u679c\u6ca1\u6709\u660e\u786e\u7684\u6536\u76ca\uff0c\u5e76\u6ca1\u4e48\u52a8\u529b\u628a Docker \u6362\u6210\u522b\u7684\u5bb9\u5668\u5f15\u64ce\u3002<\/p>\n\n\n\n<p>\u4e0d\u8fc7\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u60f3\u8c61\uff0cDocker \u5f53\u65f6\u7684\u5185\u5fc3\u4e00\u5b9a\u5145\u6ee1\u4e86\u88ab\u629b\u5f03\u7684\u7126\u8651\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Containerd \u4e0e CRI<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Docker \u5e76\u6ca1\u6709\u201c\u5750\u4ee5\u5f85\u6bd9\u201d\uff0c\u5f00\u59cb\u4e3b\u52a8\u8fdb\u884c\u9769\u65b0\u3002\u56de\u987e\u672c\u4e66\u7b2c\u4e00\u7ae0 1.5.1 \u8282\u5173\u4e8e Docker \u6f14\u8fdb\u7684\u5185\u5bb9\uff0cDocker \u4ece 1.1 \u7248\u672c\u8d77\u5f00\u59cb\u91cd\u6784\uff0c\u5e76\u62c6\u5206\u51fa\u4e86 Containerd\u3002<\/p>\n\n\n\n<p>\u65e9\u671f\uff0cContainerd \u5355\u72ec\u5f00\u6e90\uff0c\u5e76\u672a\u6350\u8d60\u7ed9 CNCF\uff0c\u8fd8\u9002\u914d\u4e86\u5176\u4ed6\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\uff0c\u5982 Swarm\uff0c\u56e0\u6b64\u5e76\u672a\u76f4\u63a5\u5b9e\u73b0 CRI \u63a5\u53e3\u3002\u51fa\u4e8e\u8bf8\u591a\u539f\u56e0\u7684\u8003\u8651\uff0cDocker \u5bf9\u5916\u90e8\u5f00\u653e\u7684\u63a5\u53e3\u4e5f\u4f9d\u7136\u4fdd\u6301\u4e0d\u53d8\u3002\u5728\u8fd9\u79cd\u80cc\u666f\u4e0b\uff0cKubernetes \u4e2d\u51fa\u73b0\u4e86\u4e24\u79cd\u8c03\u7528\u94fe\uff08\u5982\u56fe 7-15 \u6240\u793a\uff09\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u901a\u8fc7\u9002\u914d\u5668 dockershim \u8c03\u7528<\/strong>\uff1a\u9996\u5148 dockershim \u8c03\u7528 Docker\uff0c\u7136\u540e Docker \u8c03\u7528 Containerd\uff0c\u6700\u540e Containerd \u64cd\u4f5c\u5bb9\u5668\uff1b\uff1b<\/li>\n\n\n\n<li><strong>\u901a\u8fc7\u9002\u914d\u5668 CRI-containerd \u8c03\u7528<\/strong>\uff1a\u9996\u5148 CRI-containerd \u8c03\u7528 Containerd\uff0c\u968f\u540e Containerd \u64cd\u4f5c\u5bb9\u5668\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"307\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-1024x307.png\" alt=\"\" class=\"wp-image-18018\" style=\"width:574px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-1024x307.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-300x90.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-768x231.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-1536x461.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-2048x615.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-830x249.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-230x69.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-350x105.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-341-480x144.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u5728\u8fd9\u4e00\u9636\u6bb5\uff0cKubelet \u548c dockershim \u7684\u4ee3\u7801\u90fd\u6258\u7ba1\u5728\u540c\u4e00\u4e2a\u4ed3\u5e93\u4e2d\uff0c\u610f\u5473\u7740 dockershim \u7531 Kubernetes \u8d1f\u8d23\u7ec4\u7ec7\u3001\u5f00\u53d1\u548c\u7ef4\u62a4\u3002\u56e0\u6b64\uff0c\u6bcf\u5f53 Docker \u53d1\u5e03\u65b0\u7248\u672c\u65f6\uff0cKubernetes \u5fc5\u987b\u96c6\u4e2d\u7cbe\u529b\u5feb\u901f\u66f4\u65b0 dockershim\u3002\u6b64\u5916\uff0cDocker \u4f5c\u4e3a\u5bb9\u5668\u8fd0\u884c\u65f6\u663e\u5f97\u8fc7\u4e8e\u5e9e\u5927\u3002Kubernetes \u5f03\u7528 dockershim \u6709\u4e86\u5145\u5206\u7684\u7406\u7531\u548c\u52a8\u529b\u3002<\/p>\n\n\n\n<p>\u518d\u6765\u770b Docker\u30022018 \u5e74\uff0cDocker \u5c06 Containerd \u6350\u8d60\u7ed9 CNCF\uff0c\u5e76\u5728 CNCF \u7684\u652f\u6301\u4e0b\u53d1\u5e03\u4e86 1.1 \u7248\u3002\u4e0e 1.0 \u7248\u76f8\u6bd4\uff0c1.1 \u7248\u7684\u6700\u5927\u53d8\u5316\u5728\u4e8e\u5b8c\u5168\u652f\u6301 CRI \u6807\u51c6\uff0c\u8fd9\u610f\u5473\u7740\u539f\u672c\u4f5c\u4e3a CRI \u9002\u914d\u5668\u7684 CRI-Containerd \u4e5f\u4e0d\u518d\u9700\u8981\u3002<\/p>\n\n\n\n<p>Kubernetes v1.24 \u7248\u672c\u6b63\u5f0f\u79fb\u9664 dockershim\uff0c\u5b9e\u8d28\u4e0a\u662f\u5e9f\u5f03\u4e86\u5185\u7f6e\u7684 dockershim \u529f\u80fd\uff0c\u8f6c\u800c\u76f4\u63a5\u5bf9\u63a5 Containerd\u3002\u6b64\u65f6\uff0c\u518d\u89c2\u5bdf Kubernetes \u4e0e\u5bb9\u5668\u8fd0\u884c\u65f6\u4e4b\u95f4\u7684\u8c03\u7528\u94fe\uff0c\u4f60\u4f1a\u53d1\u73b0\uff0c\u4e0e DockerShim \u548c CRI-containerd \u7684\u4ea4\u4e92\u76f8\u6bd4\uff0c\u8c03\u7528\u6b65\u9aa4\u6700\u591a\u51cf\u5c11\u4e86\u4e24\u6b65\uff1a<\/p>\n\n\n\n<ul>\n<li>\u7528\u6237\u53ea\u9700\u629b\u5f03 Docker \u7684\u60c5\u6000\uff0c\u5bb9\u5668\u7f16\u6392\u81f3\u5c11\u53ef\u4ee5\u7701\u7565\u4e00\u6b21\u8c03\u7528\uff0c\u83b7\u5f97\u6027\u80fd\u4e0a\u7684\u6536\u76ca\uff1b<\/li>\n\n\n\n<li>\u5bf9 Kubernetes \u800c\u8a00\uff0c\u9009\u62e9 Containerd \u4f5c\u4e3a\u5bb9\u5668\u8fd0\u884c\u65f6\uff0c\u8c03\u7528\u94fe\u66f4\u77ed\u3001\u66f4\u7a33\u5b9a\u3001\u5360\u7528\u7684\u8d44\u6e90\u66f4\u5c11\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"340\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-1024x340.png\" alt=\"\" class=\"wp-image-18019\" style=\"width:554px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-1024x340.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-300x100.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-768x255.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-1536x510.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-2048x680.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-830x276.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-230x76.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-350x116.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-342-480x159.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u6839\u636e Kubernetes \u5b98\u65b9\u63d0\u4f9b\u7684\u6027\u80fd\u6d4b\u8bd5\u6570\u636e<sup><a href=\"https:\/\/www.thebyte.com.cn\/container\/CRI.html#footnote1\">[1]<\/a><a><\/a><\/sup>\uff0cContainerd 1.1 \u76f8\u6bd4 Docker 18.03\uff0cPod \u7684\u542f\u52a8\u5ef6\u8fdf\u964d\u4f4e\u4e86 20%\u3001CPU \u4f7f\u7528\u7387\u964d\u4f4e\u4e86 68%\u3001\u5185\u5b58\u4f7f\u7528\u7387\u964d\u4f4e\u4e86 12%\u3002\u8fd9\u662f\u4e00\u4e2a\u76f8\u5f53\u663e\u8457\u7684\u6027\u80fd\u6539\u5584\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"330\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-1024x330.png\" alt=\"\" class=\"wp-image-18021\" style=\"width:598px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-1024x330.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-300x97.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-768x247.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-1536x495.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-2048x659.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-830x267.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-230x74.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-350x113.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-344-480x155.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5b89\u5168\u5bb9\u5668\u8fd0\u884c\u65f6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4e8b\u5b9e\u4e0a\uff0c\u867d\u7136\u5bb9\u5668\u63d0\u4f9b\u4e00\u4e2a\u4e0e\u7cfb\u7edf\u4e2d\u7684\u5176\u5b83\u8fdb\u7a0b\u8d44\u6e90\u76f8\u9694\u79bb\u7684\u6267\u884c\u73af\u5883\uff0c\u4f46\u662f\u4e0e\u5bbf\u4e3b\u673a\u7cfb\u7edf\u662f\u5171\u4eab\u5185\u6838\u7684\u3002\u5982\u679c\u6709\u4e00\u4e2a\u5bb9\u5668\u8fdb\u7a0b\u88ab\u6076\u610f\u7a0b\u5e8f\u653b\u51fb\uff0c\u5c31\u6709\u53ef\u80fd\u9020\u6210\u5bb9\u5668\u9003\u9038\uff0c\u8f7b\u5219\u7834\u574f\u5f53\u524d\u7684\u5bb9\u5668\uff0c\u91cd\u5219\u9020\u6210 Linux \u5185\u6838\u5d29\u6e83\uff0c\u5bfc\u81f4\u6574\u4e2a\u673a\u5668\u5b95\u673a\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u63d0\u9ad8\u5b89\u5168\u6027\uff0c\u5f88\u591a\u8fd0\u7ef4\u4eba\u5458\u4f1a\u5c06\u5bb9\u5668\u201c\u5d4c\u5957\u201d\u5728\u865a\u62df\u673a\u4e2d\uff0c\u5c06\u5bb9\u5668\u4e0e\u540c\u4e00\u4e3b\u673a\u4e0a\u7684\u5176\u4ed6\u8fdb\u7a0b\u5b8c\u5168\u9694\u79bb\u3002\u4f46\u5728\u865a\u62df\u673a\u4e2d\u8fd0\u884c\u5bb9\u5668\u4f1a\u4e27\u5931\u5bb9\u5668\u7684\u901f\u5ea6\u548c\u654f\u6377\u6027\u4f18\u52bf\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0cIntel \u548c Hyper.sh\uff08\u73b0\u4e3a\u8682\u8681\u96c6\u56e2\u7684\u4e00\u90e8\u5206\uff09\u5728 2016 \u5e74\uff0c\u51e0\u4e4e\u540c\u65f6\u53d1\u5e03\u4e86\u5404\u81ea\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u5206\u522b\u662f Intel Clear Containers \u548c runV \u9879\u76ee\u3002<\/p>\n\n\n\n<p>2017 \u5e74\uff0cIntel \u548c Hyper.sh \u4e24\u5bb6\u516c\u53f8\u5c06\u5404\u81ea\u7684\u9879\u76ee\u5408\u5e76\uff0c\u4e92\u8865\u4f18\u52bf\uff0c\u521b\u5efa\u4e86\u5f00\u6e90\u9879\u76ee Kata Containers\u3002\u8be5\u9879\u76ee\u7684\u539f\u7406\u5982\u56fe 7-18 \u6240\u793a\uff0c\u672c\u8d28\u4e0a\u662f\u901a\u8fc7\u786c\u4ef6\u865a\u62df\u5316\u6280\u672f\uff08\u5982 QEMU\/KVM\uff09\u4e3a\u6bcf\u4e2a\u5bb9\u5668\/Pod \u5206\u914d\u72ec\u7acb\u7684\u5185\u6838\uff0c\u5c06\u5176\u8fd0\u884c\u5728\u4e00\u4e2a\u7cbe\u7b80\u7684\u8f7b\u91cf\u7ea7\u865a\u62df\u673a\u4e2d\u3002\u56e0\u6b64\uff0c\u5b83\u201c\u50cf\u5bb9\u5668\u4e00\u6837\u654f\u6377\uff0c\u50cf\u865a\u673a\u4e00\u6837\u5b89\u5168\u201d\uff08The speed of containers, the security of VMs\uff09\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"633\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-1024x633.png\" alt=\"\" class=\"wp-image-18023\" style=\"width:628px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-1024x633.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-300x185.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-768x475.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-1536x949.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-830x513.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-230x142.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-350x216.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346-480x297.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-346.png 1974w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4e3a\u4e86\u4e0e\u4e0a\u5c42\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u5bf9\u63a5\uff0cKata Containers \u4f1a\u542f\u52a8\u4e00\u4e2a\u8fdb\u7a0b\uff08shimv2\uff09\u6765\u8d1f\u8d23\u5bb9\u5668\u7684\u751f\u547d\u5468\u671f\u7ba1\u7406\u3002shimv2 \u76f8\u5f53\u4e8e Kata Containers \u4e0e\u5bb9\u5668\u8fd0\u884c\u65f6\u4e4b\u95f4\u7684\u517c\u5bb9\u5c42\uff0c\u652f\u6301\u6807\u51c6\u7684\u5bb9\u5668\u63a5\u53e3\uff0c\u5982 CRI\uff08\u5bb9\u5668\u8fd0\u884c\u65f6\u63a5\u53e3\uff09\u6216 Docker API\u3002\u8fd9\u4f7f\u5f97\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u80fd\u591f\u50cf\u64cd\u4f5c\u666e\u901a\u5bb9\u5668\u4e00\u6837\u7ba1\u7406\u5bb9\u5668\uff0c\u800c\u4e0d\u9700\u8981\u610f\u8bc6\u5230\u5bb9\u5668\u5b9e\u9645\u4e0a\u662f\u8fd0\u884c\u5728\u4e00\u4e2a\u865a\u62df\u673a\u4e2d\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"630\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-1024x630.png\" alt=\"\" class=\"wp-image-18025\" style=\"width:576px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-1024x630.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-300x185.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-768x473.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-1536x945.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-830x511.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-230x142.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-350x215.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348-480x295.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-348.png 1846w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u9664\u4e86 Kata Containers\uff0c2018 \u5e74\u5e95\uff0cAWS \u53d1\u5e03\u4e86\u5b89\u5168\u5bb9\u5668\u9879\u76ee Firecracker\u3002\u5176\u6838\u5fc3\u662f\u4e00\u4e2a\u7528 Rust \u7f16\u5199\u7684\u865a\u62df\u5316\u7ba1\u7406\u5668\uff0c\u5229\u7528 Linux \u5185\u6838\u865a\u62df\u673a\uff08KVM\uff09\u6765\u521b\u5efa\u548c\u8fd0\u884c\u8f7b\u91cf\u7ea7\u865a\u62df\u673a\u3002\u4e0d\u96be\u770b\u51fa\uff0c\u65e0\u8bba\u662f Kata Containers \u8fd8\u662f Firecracker\uff0c\u5b83\u4eec\u5b9e\u73b0\u5b89\u5168\u5bb9\u5668\u7684\u65b9\u6cd5\u6b8a\u9014\u540c\u5f52\uff0c\u90fd\u662f\u4e3a\u6bcf\u4e2a\u8fdb\u7a0b\u5206\u914d\u72ec\u7acb\u7684\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\uff0c\u4ece\u800c\u6709\u6548\u9632\u6b62\u5bb9\u5668\u8fdb\u7a0b\u201c\u9003\u9038\u201d\u6216\u593a\u53d6\u5bbf\u4e3b\u673a\u63a7\u5236\u6743\u7684\u95ee\u9898\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u8fd0\u884c\u65f6\u751f\u6001<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5982\u56fe 7-20 \u6240\u793a\uff0c\u76ee\u524d\u5df2\u6709\u5341\u51e0\u79cd\u5bb9\u5668\u8fd0\u884c\u65f6\u5b9e\u73b0\u4e86 CRI \u63a5\u53e3\uff0c\u5177\u4f53\u9009\u62e9\u54ea\u4e00\u79cd\u53d6\u51b3\u4e8e Kubernetes \u5b89\u88c5\u65f6\u5bbf\u4e3b\u673a\u7684\u5bb9\u5668\u8fd0\u884c\u65f6\u73af\u5883\u3002\u4f46\u5bf9\u4e8e\u4e91\u8ba1\u7b97\u5382\u5546\u800c\u8a00\uff0c\u9664\u975e\u51fa\u4e8e\u5b89\u5168\u6027\u9700\u8981\uff08\u5982\u5fc5\u987b\u5b9e\u73b0\u5185\u6838\u7ea7\u522b\u7684\u9694\u79bb\uff09\uff0c\u5927\u591a\u6570\u60c5\u51b5\u90fd\u4f1a\u9009\u62e9 Containerd \u4f5c\u4e3a\u5bb9\u5668\u8fd0\u884c\u65f6\u3002\u6bd5\u7adf\u5bf9\u4e8e\u5b83\u4eec\u800c\u8a00\uff0c\u6027\u80fd\u4e0e\u7a33\u5b9a\u624d\u662f\u6838\u5fc3\u7684\u751f\u4ea7\u529b\u4e0e\u7ade\u4e89\u529b\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"348\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-1024x348.png\" alt=\"\" class=\"wp-image-18026\" style=\"width:556px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-1024x348.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-300x102.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-768x261.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-1536x522.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-830x282.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-230x78.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-350x119.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349-480x163.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-349.png 1996w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u6301\u4e45\u5316\u5b58\u50a8\u8bbe\u8ba1<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u955c\u50cf\u4f5c\u4e3a\u4e0d\u53ef\u53d8\u7684\u57fa\u7840\u8bbe\u65bd\uff0c\u8981\u6c42\u5728\u4efb\u4f55\u73af\u5883\u4e0b\u80fd\u590d\u5236\u51fa\u5b8c\u5168\u4e00\u81f4\u7684\u5bb9\u5668\u5b9e\u4f8b\u3002\u8fd9\u610f\u5473\u7740\uff0c\u5bb9\u5668\u5185\u90e8\u5199\u5165\u7684\u6570\u636e\u4e0e\u955c\u50cf\u65e0\u5173\uff0c\u4e00\u65e6\u5bb9\u5668\u91cd\u542f\uff0c\u6240\u6709\u5199\u5165\u7684\u6570\u636e\u90fd\u4f1a\u4e22\u5931\u3002\u90a3\u5bb9\u5668\u7cfb\u7edf\u600e\u4e48\u5b9e\u73b0\u6570\u636e\u6301\u4e45\u5316\u5b58\u50a8\u5462\uff1f\u672c\u8282\uff0c\u6211\u4eec\u7531\u6d45\u5165\u6df1\uff0c\u5148\u4ece Docker \u5f00\u59cb\uff0c\u9010\u6b65\u4e86\u89e3\u5bb9\u5668\u6301\u4e45\u5316\u5b58\u50a8\u7684\u539f\u7406\u3001\u4e0d\u540c\u5b58\u50a8\u7c7b\u578b\u7684\u7279\u70b9\u53ca\u5176\u9002\u7528\u573a\u666f\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Docker \u7684\u5b58\u50a8\u8bbe\u8ba1<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Docker \u901a\u8fc7\u5c06\u5bbf\u4e3b\u673a\u76ee\u5f55\u6302\u8f7d\u5230\u5bb9\u5668\u5185\u90e8\u7684\u65b9\u5f0f\uff0c\u5b9e\u73b0\u6570\u636e\u6301\u4e45\u5316\u5b58\u50a8\u3002\u5982\u56fe 7-21 \u6240\u793a\uff0c\u76ee\u524d\u5b83\u652f\u6301\u4e09\u79cd\u6302\u8f7d\u65b9\u5f0f\uff1abind mount\u3001volume \u548c tmpfs mount\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"657\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-1024x657.png\" alt=\"\" class=\"wp-image-18028\" style=\"width:490px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-1024x657.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-300x192.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-768x492.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-830x532.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-230x147.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-350x224.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351-480x308.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-351.png 1438w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>bind mount \u662f Docker \u6700\u65e9\u652f\u6301\u7684\u6302\u8f7d\u7c7b\u578b\uff0c\u4e5f\u662f\u6211\u4eec\u6700\u719f\u6089\u7684\u6302\u8f7d\u65b9\u5f0f\u3002\u5982\u4e0b\u547d\u4ee4\u6240\u793a\uff0c\u542f\u52a8\u4e00\u4e2a Nginx \u5bb9\u5668\uff0c\u5e76\u5c06\u5bbf\u4e3b\u673a\u7684 \/usr\/share\/nginx\/html \u76ee\u5f55\u6302\u8f7d\u5230\u5bb9\u5668\u5185 \/data \u76ee\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker run -v \/usr\/share\/nginx\/html:\/data nginx:lastest<\/pre>\n\n\n\n<p>\u4e0a\u9762\u7684\u6302\u8f7d\uff0c\u5b9e\u9645\u4e0a\u662f\u901a\u8fc7 mount \u7cfb\u7edf\u8c03\u7528\u5b9e\u73b0\u7684\u3002\u5982\u4e0b\u4ee3\u7801\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5c06\u5bbf\u4e3b\u673a\u4e2d\u7684 \/usr\/share\/nginx\/html \u6302\u8f7d\u5230\u5bb9\u5668\u6839\u6587\u4ef6\u7cfb\u7edf\u7684 \/data \u8def\u5f84\nmount(\"\/usr\/share\/nginx\/html\", \"rootfs\/data\", \"none\", MS_BIND, NULL);\n<\/pre>\n\n\n\n<p>\u901a\u8fc7 mount \u7cfb\u7edf\u8c03\u7528\u5b9e\u73b0\u7684\u6301\u4e45\u5316\u5b58\u50a8\u5b58\u5728\u4ee5\u4e0b\u7f3a\u9677\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u4e0e\u64cd\u4f5c\u7cfb\u7edf\u7684\u5f3a\u8026\u5408<\/strong>\uff1a\u5bb9\u5668\u5185\u7684\u76ee\u5f55\u901a\u8fc7 mount \u6302\u8f7d\u5230\u5bbf\u4e3b\u673a\u7684\u7edd\u5bf9\u8def\u5f84\uff0c\u8fd9\u4f7f\u5f97\u5bb9\u5668\u7684\u8fd0\u884c\u73af\u5883\u4e0e\u64cd\u4f5c\u7cfb\u7edf\u7d27\u5bc6\u7ed1\u5b9a\u3002\u4e00\u65b9\u9762\uff0cbind mount \u65b9\u5f0f\u65e0\u6cd5\u5199\u5165 Dockerfile\uff0c\u5426\u5219\u955c\u50cf\u5728\u5176\u4ed6\u73af\u5883\u4e2d\u53ef\u80fd\u65e0\u6cd5\u542f\u52a8\u3002\u53e6\u4e00\u65b9\u9762\uff0c\u5bbf\u4e3b\u673a\u4e2d\u88ab\u6302\u8f7d\u7684\u76ee\u5f55\u4e0e Docker \u5e76\u65e0\u76f4\u63a5\u5173\u8054\uff0c\u5176\u4ed6\u8fdb\u7a0b\u53ef\u80fd\u4f1a\u8bef\u64cd\u4f5c\uff0c\u5b58\u5728\u6f5c\u5728\u7684\u5b89\u5168\u98ce\u9669\uff1b<\/li>\n\n\n\n<li><strong>\u96be\u4ee5\u6ee1\u8db3\u591a\u6837\u5316\u7684\u5b58\u50a8\u9700\u6c42<\/strong>\uff1a\u968f\u7740\u5bb9\u5668\u5e7f\u6cdb\u5e94\u7528\uff0c\u5b58\u50a8\u9700\u6c42\u4e5f\u53d8\u5f97\u66f4\u52a0\u590d\u6742\u3002\u5b58\u50a8\u4f4d\u7f6e\u4e0d\u4ec5\u9650\u4e8e\u5bbf\u4e3b\u673a\uff0c\u8fd8\u53ef\u80fd\u6d89\u53ca\u5916\u90e8\u7f51\u7edc\u5b58\u50a8\uff1b\u5b58\u50a8\u4ecb\u8d28\u4e0d\u4ec5\u662f\u78c1\u76d8\uff0c\u8fd8\u53ef\u80fd\u662f\u5185\u5b58\u6587\u4ef6\u7cfb\u7edf\uff08\u5982 tmpfs\uff09\uff1b\u5b58\u50a8\u7c7b\u578b\u4e5f\u4e0d\u5c40\u9650\u4e8e\u6587\u4ef6\u7cfb\u7edf\uff0c\u8fd8\u5305\u62ec\u5757\u8bbe\u5907\u6216\u5bf9\u8c61\u5b58\u50a8\uff1b<\/li>\n\n\n\n<li><strong>\u4f4e\u6548\u7684\u7f51\u7edc\u5b58\u50a8\u5904\u7406<\/strong>\uff0c\u5bf9\u4e8e\u7f51\u7edc\u5b58\u50a8\uff0c\u5b9e\u5728\u6ca1\u5fc5\u8981\u5148\u5c06\u5176\u6302\u8f7d\u5230\u64cd\u4f5c\u7cfb\u7edf\u518d\u6302\u8f7d\u5230\u5bb9\u5668\u5185\u67d0\u4e2a\u76ee\u5f55\u3002Docker \u5b8c\u5168\u53ef\u4ee5\u76f4\u63a5\u5bf9\u63a5 iSCSI\u3001NFS \u7f51\u7edc\u5b58\u50a8\u534f\u8bae\uff0c\u7ed5\u8fc7\u64cd\u4f5c\u7cfb\u7edf\uff0c\u964d\u4f4e\u8d44\u6e90\u5360\u7528\u548c\u8bbf\u95ee\u5ef6\u8fdf\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4e3a\u4e86\u89e3\u51b3\u4e0a\u8ff0\u95ee\u9898\uff0cDocker \u4ece 1.7 \u7248\u672c\u8d77\u5f15\u5165\u4e86\u5168\u65b0\u7684\u6302\u8f7d\u7c7b\u578b \u2014\u2014 Volume\uff08\u5b58\u50a8\u5377\uff09\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u72ec\u7acb\u7684\u5b58\u50a8\u7a7a\u95f4<\/strong>\uff1aVolume \u4f1a\u5728\u5bbf\u4e3b\u673a\u4e2d\u5f00\u8f9f\u4e00\u4e2a\u4e13\u5c5e\u4e8e Docker \u7684\u7a7a\u95f4\uff08\u901a\u5e38\u5728 Linux \u4e2d\u4e3a \/var\/lib\/docker\/volumes\/ \u76ee\u5f55\uff09\uff0c\u8fd9\u6837\u5c31\u907f\u514d\u4e86 bind mount \u5bf9\u5bbf\u4e3b\u673a\u7edd\u5bf9\u8def\u5f84\u7684\u4f9d\u8d56\uff1b<\/li>\n\n\n\n<li><strong>\u652f\u6301\u591a\u79cd\u5b58\u50a8\u7cfb\u7edf<\/strong>\uff1a\u8003\u8651\u5230\u5b58\u50a8\u7c7b\u578b\u7684\u591a\u6837\u6027\uff0c\u4ec5\u4f9d\u8d56 Docker \u672c\u8eab\u6765\u5b9e\u73b0\u6240\u6709\u5b58\u50a8\u9700\u6c42\u5e76\u4e0d\u73b0\u5b9e\u3002\u56e0\u6b64\uff0cDocker \u5728 1.10 \u7248\u672c\u4e2d\u53c8\u5f15\u5165\u4e86 Volume Driver \u673a\u5236\uff0c\u501f\u52a9\u793e\u533a\u7684\u529b\u91cf\u6269\u5c55\u5b58\u50a8\u9a71\u52a8\uff0c\u652f\u6301\u66f4\u591a\u5b58\u50a8\u7cfb\u7edf\u548c\u534f\u8bae\u3002\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u7ecf\u8fc7\u4e00\u7cfb\u5217\u7684\u8bbe\u8ba1\uff0c\u73b0\u5728 Docker \u7528\u6237\u53ea\u8981\u901a\u8fc7 docker plugin install \u5b89\u88c5\u989d\u5916\u7684\u7b2c\u4e09\u65b9\u5377\u9a71\u52a8\uff0c\u5c31\u80fd\u4f7f\u7528\u60f3\u8981\u7684\u5b58\u50a8\u65b9\u6848\u3002<\/p>\n\n\n\n<p>\u4e3e\u4e2a\u5177\u4f53\u7684\u4f8b\u5b50\uff0c\u8bf7\u770b\u4f7f\u7528\u963f\u91cc\u4e91\u6587\u4ef6\u5b58\u50a8\uff08NAS\uff09\u7684\u793a\u4f8b\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5148\u5b89\u88c5\u963f\u91cc\u4e91 NAS Volume \u63d2\u4ef6\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker plugin install aliyun\/aliyun-volume-plugin:latest --alias aliyun-nas --grant-all-permissions<\/pre>\n\n\n\n<ul>\n<li>\u63a5\u7740\uff0c\u4f7f\u7528 docker volume create \u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u6302\u8f7d\u5230\u963f\u91cc\u4e91 NAS \u7684\u5b58\u50a8\u5377\uff0c\u6307\u5b9a NAS \u6587\u4ef6\u7cfb\u7edf\u7684\u5730\u5740\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker volume create \\\n--driver aliyun-nas \\\n--opt nasAddr=&lt;Your_NAS_Address> \\\n--opt mountDir=\/myvolume \\\nmy-aliyun-nas-volume<\/pre>\n\n\n\n<ul>\n<li>\u6700\u540e\uff0c\u542f\u52a8\u5bb9\u5668\u65f6\uff0c\u5c06\u521b\u5efa\u7684\u963f\u91cc\u4e91 NAS \u5377\u6302\u8f7d\u5230\u5bb9\u5668\u4e2d\u7684\u76ee\u5f55\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d -v my-aliyun-nas-volume:\/mnt\/nas nginx:latest<\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Kubernetes \u7684\u5b58\u50a8\u8bbe\u8ba1<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u6211\u4eec\u4ece Docker \u8fd4\u56de\u5230 Kubernetes \u4e2d\uff0c\u540c Docker \u7c7b\u4f3c\u7684\u662f\uff1a<\/p>\n\n\n\n<ul>\n<li>Kubernetes \u4e5f\u62bd\u8c61\u51fa\u4e86 Volume \u7684\u6982\u5ff5\u6765\u89e3\u51b3\u6301\u4e45\u5316\u5b58\u50a8\uff1b<\/li>\n\n\n\n<li>\u5728\u5bbf\u4e3b\u673a\u4e2d\uff0c\u4e5f\u5f00\u8f9f\u4e86\u5c5e\u4e8e Kubernetes \u7684\u7a7a\u95f4\uff08\u8be5\u76ee\u5f55\u662f \/var\/lib\/kubelet\/pods\/[pod uid]\/volumes\uff09\uff1b<\/li>\n\n\n\n<li>\u4e5f\u8bbe\u8ba1\u4e86\u5b58\u50a8\u9a71\u52a8\uff08\u5728 Kubernetes \u4e2d\u79f0 Volume Plugin\uff09\u6269\u5c55\u652f\u6301\u51fa\u4f17\u591a\u7684\u5b58\u50a8\u7c7b\u578b\uff0c\u5982\u672c\u5730\u5b58\u50a8\u3001\u7f51\u7edc\u5b58\u50a8\uff08\u5982 NFS\u3001iSCSI\uff09\u3001\u4e91\u5382\u5546\u7684\u5b58\u50a8\u670d\u52a1\uff08\u5982 AWS EBS\u3001GCE PD\u3001\u963f\u91cc\u4e91 NAS \u7b49\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4e0d\u540c\u7684\u662f\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u5de5\u4e1a\u7ea7\u7684\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\uff0cKubernetes \u7684 Volume \u673a\u5236\u6bd4 Docker \u66f4\u590d\u6742\u3001\u652f\u6301\u7684\u5b58\u50a8\u7c7b\u578b\u66f4\u4e30\u5bcc\u3002Kubernetes \u652f\u6301\u7684\u5b58\u50a8\u7c7b\u578b\uff0c\u5982\u56fe 7-22 \u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-1024x314.png\" alt=\"\" class=\"wp-image-18029\" style=\"width:576px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-1024x314.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-300x92.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-768x235.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-1536x471.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-830x254.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-230x70.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-350x107.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352-480x147.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-352.png 2036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4e4d\u4e00\u770b\uff0c\u8fd9\u4e48\u591a Volume \u7c7b\u578b\u5b9e\u5728\u96be\u4ee5\u4e0b\u624b\u3002\u7136\u800c\uff0c\u603b\u7ed3\u8d77\u6765\u5c31 3 \u7c7b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u666e\u901a Volume<\/strong>\uff1a\u4e3b\u8981\u7528\u4e8e\u4e34\u65f6\u6570\u636e\u5b58\u50a8\uff0c\u5305\u62ec emptyDir \u548c hostPath \u7b49\u7c7b\u578b\uff1b\n<ul>\n<li>emptyDir\uff1a\u5728 Pod \u5220\u9664\u65f6\u6570\u636e\u4f1a\u88ab\u6e05\u7a7a\uff1b<\/li>\n\n\n\n<li>hostPath\uff1a\u6570\u636e\u5b58\u50a8\u5728\u8282\u70b9\u672c\u5730\u8def\u5f84\u4e0a\uff0c\u5982\u679c Pod \u88ab\u8c03\u5ea6\u5230\u5176\u4ed6\u8282\u70b9\uff0c\u5219\u65e0\u6cd5\u8bbf\u95ee\u539f\u6709\u6570\u636e\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6301\u4e45\u5316\u7684 Volume<\/strong>\uff1a\u901a\u8fc7 PersistentVolume\uff08PV\uff09\u548c PersistentVolumeClaim\uff08PVC\uff09\u673a\u5236\u5b9e\u73b0\uff0c\u652f\u6301\u957f\u671f\u5b58\u50a8\u4e14\u4e0e Pod \u7684\u751f\u547d\u5468\u671f\u89e3\u8026\u3002\u5e38\u89c1\u7684\u7c7b\u578b\u5305\u62ec NFS\u3001\u4e91\u5b58\u50a8\uff08\u5982 AWS EBS\u3001GCE PD\uff09\u7b49\uff1b<\/li>\n\n\n\n<li><strong>\u7279\u6b8a\u7684 Volume<\/strong>\uff1a\u7528\u4e8e\u7ba1\u7406\u914d\u7f6e\u548c\u654f\u611f\u6570\u636e\uff0c\u4f8b\u5982 Secret \u548c ConfigMap\u3002\u4e25\u683c\u6765\u8bf4\uff0c\u8fd9\u7c7b Volume \u5e76\u975e\u4f20\u7edf\u610f\u4e49\u4e0a\u7684\u5b58\u50a8\u7c7b\u578b\uff0c\u800c\u662f\u901a\u8fc7\u5b9e\u73b0\u6807\u51c6\u7684 POSIX\uff08\u53ef\u79fb\u690d\u64cd\u4f5c\u7cfb\u7edf\u63a5\u53e3\uff09\u63a5\u53e3\uff0c\u63d0\u4f9b\u5bf9 Kubernetes \u96c6\u7fa4\u4e2d\u914d\u7f6e\u4fe1\u606f\u7684\u4fbf\u6377\u8bbf\u95ee\u3002\u8fd9\u90e8\u5206\u5185\u5bb9\uff0c\u7b14\u8005\u5c31\u4e0d\u518d\u5c55\u5f00\u8ba8\u8bba\u4e86\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u666e\u901a\u7684 Volume<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Kubernetes \u8bbe\u8ba1\u666e\u901a Volume \u7684\u521d\u8877\u5e76\u975e\u4e3a\u4e86\u6301\u4e45\u5316\u5b58\u50a8\u6570\u636e\uff0c\u800c\u662f\u4e3a\u4e86\u5b9e\u73b0\u5bb9\u5668\u95f4\u7684\u6570\u636e\u5171\u4eab\u3002\u8bf7\u770b\u4e24\u4e2a\u5178\u578b\u793a\u4f8b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>EmptyDir<\/strong>\uff1a\u8fd9\u79cd Volume \u7c7b\u578b\u5e38\u7528\u4e8e Sidecar \u6a21\u5f0f\u3002\u4f8b\u5982\uff0c\u65e5\u5fd7\u6536\u96c6\u5bb9\u5668\u901a\u8fc7 EmptyDir \u8bbf\u95ee\u4e1a\u52a1\u5bb9\u5668\u7684\u65e5\u5fd7\u6587\u4ef6\uff1b<\/li>\n\n\n\n<li><strong>HostPath<\/strong>\uff1a\u4e0e EmptyDir \u4e0d\u540c\uff0cHostPath \u5141\u8bb8\u540c\u4e00\u8282\u70b9\u4e0a\u7684\u6240\u6709\u5bb9\u5668\u5171\u4eab\u5bbf\u4e3b\u673a\u7684\u672c\u5730\u5b58\u50a8\u3002\u4f8b\u5982\uff0c\u5728 Loki \u65e5\u5fd7\u7cfb\u7edf\u4e2d\uff0cPod \u6302\u8f7d\u5bbf\u4e3b\u673a\u7684 HostPath Volume \u540e\uff0cLoki \u53ef\u4ee5\u6536\u96c6\u5e76\u8bfb\u53d6\u5bbf\u4e3b\u673a\u4e0a\u6240\u6709 Pod \u751f\u6210\u7684\u65e5\u5fd7\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5982\u56fe 7-23 \u6240\u793a\uff0cEmptyDir \u7c7b\u578b\u7684 Volume \u968f Pod \u751f\u547d\u5468\u671f\u800c\u5b58\u5728\u3002\u5f53 Pod \u88ab\u9500\u6bc1\u65f6\uff0cEmptyDir Volume \u4e5f\u4f1a\u88ab\u5220\u9664\u3002\u5bf9\u4e8e HostPath\uff0c\u5f53 Pod \u88ab\u8c03\u5ea6\u5230\u5176\u4ed6\u8282\u70b9\u65f6\uff0c\u6570\u636e\u4e5f\u76f8\u5f53\u4e8e\u4e22\u5931\u4e86\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"701\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-1024x701.png\" alt=\"\" class=\"wp-image-18031\" style=\"width:546px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-1024x701.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-300x206.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-768x526.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-1536x1052.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-830x569.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-230x158.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-350x240.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354-480x329.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-354.png 2032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u6301\u4e45\u5316\u7684 Volume<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u7531\u4e8e Pod \u968f\u65f6\u53ef\u80fd\u88ab\u8c03\u5ea6\u5230\u5176\u4ed6\u8282\u70b9\uff0c\u5982\u679c\u8981\u5b9e\u73b0\u6570\u636e\u7684\u6301\u4e45\u5316\u5b58\u50a8\uff0c\u5c31\u5f97\u4f9d\u8d56\u7f51\u7edc\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\u3002\u8fd9\u5c31\u662f\u5f15\u5165 PV\uff08PersistentVolume\uff0c\u6301\u4e45\u5377\uff09\u7684\u539f\u56e0\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a PV \u8d44\u6e90\u7684 YAML \u914d\u7f6e\u793a\u4f8b\u3002\u5176 spec \u90e8\u5206\u5b9a\u4e49\u4e86\u5173\u952e\u914d\u7f6e\u9879\uff0c\u5305\u62ec\uff1a\u5b58\u50a8\u5bb9\u91cf\uff085Gi\uff09\u3001\u8bbf\u95ee\u6a21\u5f0f\uff08ReadWriteOnce\uff0c\u8868\u793a\u5141\u8bb8\u5355\u4e2a\u8282\u70b9\u8fdb\u884c\u8bfb\u5199\uff09\u3001\u8fdc\u7a0b\u5b58\u50a8\u7c7b\u578b\uff08\u5982 NFS\uff09\uff0c\u4ee5\u53ca\u6570\u636e\u56de\u6536\u7b56\u7565\uff08Recycle\uff0c\u8868\u793a\u5728 PV \u91ca\u653e\u540e\u81ea\u52a8\u6e05\u9664\u6570\u636e\u4ee5\u4f9b\u91cd\u7528\uff09\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: pv1\nspec:\n  capacity:  #\u5bb9\u91cf\n    storage: 5Gi\n  accessModes:  #\u8bbf\u95ee\u6a21\u5f0f\n  - ReadWriteOnce\n  persistentVolumeReclaimPolicy: Recycle  #\u56de\u6536\u7b56\u7565\n  storageClassName: manual  \n  nfs:\n    path: \/\n    server: 172.17.0.2<\/pre>\n\n\n\n<p>\u76f4\u63a5\u4f7f\u7528 PV \u65f6\uff0c\u9700\u8981\u8be6\u7ec6\u63cf\u8ff0\u5b58\u50a8\u7684\u914d\u7f6e\u4fe1\u606f\uff0c\u8fd9\u5bf9\u4e1a\u52a1\u5de5\u7a0b\u5e08\u5e76\u4e0d\u53cb\u597d\u3002\u4e1a\u52a1\u5de5\u7a0b\u5e08\u53ea\u60f3\u77e5\u9053\u6211\u6709\u591a\u5927\u7684\u7a7a\u95f4\u3001I\/O \u662f\u5426\u6ee1\u8db3\u8981\u6c42\uff0c\u80af\u5b9a\u4e0d\u5173\u5fc3\u5b58\u50a8\u5e95\u5c42\u7684\u914d\u7f6e\u7ec6\u8282\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u7b80\u5316\u5b58\u50a8\u7684\u4f7f\u7528\uff0cKubernetes \u5c06\u5b58\u50a8\u670d\u52a1\u518d\u6b21\u62bd\u8c61\uff0c\u628a\u4e1a\u52a1\u5de5\u7a0b\u5e08\u5173\u5fc3\u7684\u903b\u8f91\u518d\u62bd\u8c61\u4e00\u5c42\uff0c\u4e8e\u662f\u6709\u4e86 PVC\uff08Persistent Volume Claim\uff0c\u6301\u4e45\u5377\u58f0\u660e\uff09\uff0c\u8fd9\u79cd\u8bbe\u8ba1\u5f88\u50cf\u8f6f\u4ef6\u5f00\u53d1\u4e2d\u7684\u201c\u9762\u5411\u5bf9\u8c61\u201d\u601d\u60f3\uff1a<\/p>\n\n\n\n<ul>\n<li>PVC \u53ef\u4ee5\u7406\u89e3\u4e3a\u6301\u4e45\u5316\u5b58\u50a8\u7684\u201c\u63a5\u53e3\u201d\uff0c\u5b83\u63d0\u4f9b\u4e86\u5bf9\u67d0\u79cd\u6301\u4e45\u5316\u5b58\u50a8\u7684\u63cf\u8ff0\uff0c\u4f46\u4e0d\u63d0\u4f9b\u5177\u4f53\u7684\u5b9e\u73b0\uff1b<\/li>\n\n\n\n<li>\u800c\u6301\u4e45\u5316\u5b58\u50a8\u7684\u5b9e\u73b0\u90e8\u5206\u5219\u7531 PV \u8d1f\u8d23\u5b8c\u6210\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8fd9\u6837\u8bbe\u8ba1\u7684\u597d\u5904\u662f\uff0c\u4f5c\u4e3a\u4e1a\u52a1\u5f00\u53d1\u8005\uff0c\u6211\u4eec\u53ea\u9700\u8981\u4e0e PVC \u8fd9\u4e2a\u201c\u63a5\u53e3\u201d\u8fdb\u884c\u4ea4\u4e92\uff0c\u800c\u4e0d\u5fc5\u5173\u5fc3\u5b58\u50a8\u7684\u5177\u4f53\u7684\u5b9e\u73b0\u662f NFS \u8fd8\u662f Ceph\u3002\u8bf7\u770b\u4e0b\u9762 PVC \u8d44\u6e90\u7684 YAML \u914d\u7f6e\u793a\u4f8b\u3002\u53ef\u4ee5\u770b\u5230\uff0c\u5176\u4e2d\u6ca1\u6709\u4efb\u4f55\u4e0e\u5b58\u50a8\u5b9e\u73b0\u76f8\u5173\u7684\u7ec6\u8282\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: pv-claim\nspec:\n  storageClassName: manual\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 3Gi<\/pre>\n\n\n\n<p>\u73b0\u5728\uff0c\u8fd8\u6709\u4e2a\u95ee\u9898\uff0cPV \u548c PVC \u4e24\u8005\u4e4b\u95f4\u5e76\u6ca1\u6709\u660e\u786e\u76f8\u5173\u7684\u7ed1\u5b9a\u53c2\u6570\uff0c\u5b83\u4eec\u4e4b\u95f4\u662f\u5982\u4f55\u7ed1\u5b9a\u7684\uff1fPV \u548c PVC \u7684\u7ed1\u5b9a\u662f\u81ea\u52a8\u7684\uff0c\u4f9d\u8d56\u4ee5\u4e0b\u4e24\u4e2a\u5339\u914d\u6761\u4ef6\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>Spec \u53c2\u6570\u5339\u914d<\/strong>\uff1aKubernetes \u4f1a\u6839\u636e PVC \u4e2d\u58f0\u660e\u7684\u89c4\u683c\u81ea\u52a8\u5bfb\u627e\u7b26\u5408\u6761\u4ef6\u7684 PV\u3002\u8fd9\u5305\u62ec\u5b58\u50a8\u5bb9\u91cf\u3001\u6240\u9700\u7684\u8bbf\u95ee\u6a21\u5f0f\uff08\u5982 ReadWriteOnce\u3001ReadOnlyMany \u6216 ReadWriteMany\uff09\uff0c\u4ee5\u53ca\u5b58\u50a8\u7c7b\u578b\uff08\u5982\u6587\u4ef6\u7cfb\u7edf\u6216\u5757\u5b58\u50a8\uff09\uff1b<\/li>\n\n\n\n<li><strong>\u5b58\u50a8\u7c7b\u5339\u914d<\/strong>\uff1aPV \u548c PVC \u5fc5\u987b\u5177\u6709\u76f8\u540c\u7684 storageClassName\uff0c\u5b83\u5b9a\u4e49\u4e86\u5b58\u50a8\u7c7b\u578b\u548c\u7279\u6027\uff0c\u786e\u4fdd PVC \u8bf7\u6c42\u7684\u5b58\u50a8\u8d44\u6e90\u4e0e PV \u63d0\u4f9b\u7684\u8d44\u6e90\u4e00\u81f4\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b YAML \u914d\u7f6e\u5c55\u793a\u4e86\u5982\u4f55\u5728 Pod \u4e2d\u4f7f\u7528 PVC\u3002\u5f53 PVC \u6210\u529f\u7ed1\u5b9a\u5230 PV \u540e\uff0cNFS \u8fdc\u7a0b\u5b58\u50a8\u5c06\u88ab\u6302\u8f7d\u5230 Pod \u5185\u6307\u5b9a\u7684\u76ee\u5f55\uff0c\u6bd4\u5982 nginx \u5bb9\u5668\u4e2d\u7684 \/data \u76ee\u5f55\u3002\u8fd9\u6837\uff0cPod \u5185\u7684\u5e94\u7528\u5c31\u53ef\u4ee5\u50cf\u4f7f\u7528\u672c\u5730\u5b58\u50a8\u4e00\u6837\uff0c\u4f7f\u7528\u8fdc\u7a0b\u5b58\u50a8\u8d44\u6e90\u4e86\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: test-nfs\nspec:\n  containers:\n  - image: nginx:alpine\n    imagePullPolicy: IfNotPresent\n    name: nginx\n    volumeMounts:\n    - mountPath: \/data\n      name: nfs-volume\n  volumes:\n  - name: nfs-volume\n    persistentVolumeClaim:\n      claimName: pv-claim<\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>PV \u7684\u4f7f\u7528\uff1a\u4ece\u624b\u52a8\u5230\u81ea\u52a8<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5728 Kubernetes \u4e2d\uff0c\u5982\u679c\u6ca1\u6709\u73b0\u6210\u7684 PV \u6ee1\u8db3 PVC \u7684\u9700\u6c42\uff0cPVC \u4f1a\u4fdd\u6301\u5728 Pending \u72b6\u6001\uff0c\u76f4\u5230\u627e\u5230\u5408\u9002\u7684 PV\u3002\u5728\u6b64\u671f\u95f4\uff0cPod \u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u3002\u5bf9\u4e8e\u5c0f\u89c4\u6a21\u96c6\u7fa4\uff0c\u53ef\u4ee5\u63d0\u524d\u624b\u52a8\u521b\u5efa\u591a\u4e2a PV \u4ee5\u5339\u914d PVC\uff0c\u4f46\u5728\u5927\u89c4\u6a21\u96c6\u7fa4\u4e2d\uff0cPod \u6570\u91cf\u53ef\u80fd\u8fbe\u5230\u6210\u5343\u4e0a\u4e07\uff0c\u663e\u7136\u65e0\u6cd5\u4f9d\u9760\u4eba\u5de5\u65b9\u5f0f\u63d0\u524d\u521b\u5efa\u5982\u6b64\u591a\u7684 PV\u3002<\/p>\n\n\n\n<p>\u4e3a\u6b64\uff0cKubernetes \u63d0\u4f9b\u4e86\u4e00\u5957\u81ea\u52a8\u521b\u5efa PV \u7684\u673a\u5236 \u2014\u2014 \u52a8\u6001\u4f9b\u7ed9\uff08Dynamic Provisioning\uff09\u3002\u76f8\u5bf9\u800c\u8a00\uff0c\u524d\u9762\u901a\u8fc7\u4eba\u5de5\u521b\u5efa PV \u7684\u65b9\u5f0f\u88ab\u79f0\u4e3a\u201c\u9759\u6001\u4f9b\u7ed9\u201d\uff08Static Provisioning\uff09\u3002<\/p>\n\n\n\n<p>\u52a8\u6001\u4f9b\u7ed9\u7684\u5173\u952e\u5728\u4e8e Kubernetes \u7684 StorageClass \u8d44\u6e90\uff0c\u5b83\u5145\u5f53\u4e86 PV \u6a21\u677f\u7684\u89d2\u8272\uff0c\u4f7f\u5f97 PV \u53ef\u4ee5\u6839\u636e\u9700\u8981\u81ea\u52a8\u751f\u6210\u3002\u58f0\u660e StorageClass \u65f6\uff0c\u5fc5\u987b\u660e\u786e\u4e24\u7c7b\u4fe1\u606f\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>PV \u7684\u5c5e\u6027<\/strong>\uff1a\u5b9a\u4e49 PV \u7684\u7279\u6027\uff0c\u5305\u62ec\u5b58\u50a8\u7a7a\u95f4\u7684\u5927\u5c0f\u3001\u8bfb\u5199\u6a21\u5f0f\uff08\u5982 ReadWriteOnce\u3001ReadOnlyMany \u6216 ReadWriteMany\uff09\uff0c\u4ee5\u53ca\u56de\u6536\u7b56\u7565\uff08\u5982 Retain\u3001Recycle \u6216 Delete\uff09\u7b49\uff1b<\/li>\n\n\n\n<li><strong>Provisioner \u7684\u5c5e\u6027<\/strong>\uff1a\u786e\u5b9a\u5b58\u50a8\u4f9b\u5e94\u5546\uff08\u5373 Volume Plugin\uff09\u53ca\u5176\u76f8\u5173\u53c2\u6570\u3002Kubernetes \u652f\u6301\u4e24\u79cd\u7c7b\u578b\u7684\u5b58\u50a8\u63d2\u4ef6\uff1a\n<ul>\n<li><strong>In-Tree \u63d2\u4ef6<\/strong>\uff1a\u8fd9\u4e9b\u63d2\u4ef6\u662f Kubernetes \u6e90\u7801\u7684\u4e00\u90e8\u5206\uff0c\u901a\u5e38\u4ee5\u524d\u7f00\u201ckubernetes.io\u201d\u547d\u540d\uff0c\u5982 kubernetes.io\/aws\u3001kubernetes.io\/azure \u7b49\u3002\u5b83\u4eec\u76f4\u63a5\u96c6\u6210\u5728 Kubernetes \u9879\u76ee\u4e2d\uff0c\u4e3a\u7279\u5b9a\u7684\u5b58\u50a8\u670d\u52a1\u63d0\u4f9b\u652f\u6301\uff1b<\/li>\n\n\n\n<li><strong>Out-of-Tree \u63d2\u4ef6<\/strong>\uff1a\u8fd9\u4e9b\u63d2\u4ef6\u6839\u636e Kubernetes \u63d0\u4f9b\u7684\u5b58\u50a8\u63a5\u53e3\u7531\u7b2c\u4e09\u65b9\u5b58\u50a8\u4f9b\u5e94\u5546\u5b9e\u73b0\uff0c\u4ee3\u7801\u72ec\u7acb\u4e8e Kubernetes \u6838\u5fc3\u4ee3\u7801\u3002Out-of-Tree \u63d2\u4ef6\u5141\u8bb8\u66f4\u7075\u6d3b\u5730\u96c6\u6210\u5404\u79cd\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\uff0c\u4ee5\u9002\u5e94\u4e0d\u540c\u7684\u5b58\u50a8\u9700\u6c42\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a Kubernetes StorageClass \u914d\u7f6e\u793a\u4f8b\u3002\u8be5 StorageClass \u4f7f\u7528 AWS Elastic Block Store\uff08aws-ebs\uff09\u4f5c\u4e3a\u5b58\u50a8\u4f9b\u5e94\u5546\uff0c\u5e76\u901a\u8fc7 type \u5c5e\u6027\u8bbe\u7f6e\u4e3a gp2\uff0c\u8868\u793a\u4f7f\u7528 AWS \u7684\u901a\u7528\u578b SSD \u5377\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: storage.k8s.io\/v1\nkind: StorageClass\nmetadata:\n  name: standard\nprovisioner: kubernetes.io\/aws-ebs\nparameters:\n  type: gp2\nreclaimPolicy: Retain\nallowVolumeExpansion: true\nmountOptions:\n  - debug\nvolumeBindingMode: Immediate\n<\/pre>\n\n\n\n<p>\u5f53 StorageClass \u8d44\u6e90\u63d0\u4ea4\u5230 Kubernetes \u96c6\u7fa4\u540e\uff0cKubernetes \u4f1a\u6839\u636e StorageClass \u5b9a\u4e49\u7684\u6a21\u677f\u4ee5\u53ca PVC \u7684\u8bf7\u6c42\u89c4\u683c\uff0c\u81ea\u52a8\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 PV \u5b9e\u4f8b\u3002\u521b\u5efa\u5b8c\u6210\u540e\uff0cPV \u4f1a\u81ea\u52a8\u4e0e PVC \u7ed1\u5b9a\uff0cPVC \u7684\u72b6\u6001\u4ece Pending \u8f6c\u53d8\u4e3a Bound\uff0c\u8868\u793a\u5b58\u50a8\u8d44\u6e90\u5df2\u51c6\u5907\u597d\u3002\u968f\u540e\uff0cPod \u5c31\u80fd\u4f7f\u7528 StorageClass \u5b9a\u4e49\u7684\u5b58\u50a8\u7c7b\u578b\u4e86\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Kubernetes \u5b58\u50a8\u7cfb\u7edf\u8bbe\u8ba1<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u76f8\u4fe1\u5927\u90e8\u5206\u8bfb\u8005\u5bf9\u5982\u4f55\u4f7f\u7528 Volume \u5df2\u7ecf\u6ca1\u6709\u7591\u95ee\u4e86\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u7ee7\u7eed\u63a2\u8ba8\u5b58\u50a8\u7cfb\u7edf\u4e0e Kubernetes \u7684\u96c6\u6210\uff0c\u4ee5\u53ca\u5b83\u4eec\u662f\u5982\u4f55\u4e0e Pod \u76f8\u5173\u8054\u7684\u3002<\/p>\n\n\n\n<p>\u5728\u6df1\u5165\u8fd9\u4e2a\u9ad8\u7ea7\u4e3b\u9898\u4e4b\u524d\uff0c\u6211\u4eec\u9700\u8981\u5148\u638c\u63e1\u4e00\u4e9b\u5173\u4e8e\u64cd\u4f5c\u5b58\u50a8\u8bbe\u5907\u7684\u57fa\u7840\u77e5\u8bc6\u3002Kubernetes \u7ee7\u627f\u4e86\u64cd\u4f5c\u7cfb\u7edf\u63a5\u5165\u5916\u7f6e\u5b58\u50a8\u7684\u8bbe\u8ba1\uff0c\u5c06\u65b0\u589e\u6216\u5378\u8f7d\u5b58\u50a8\u8bbe\u5907\u5206\u89e3\u4e3a\u4ee5\u4e0b\u4e09\u4e2a\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u51c6\u5907<\/strong>\uff08Provision\uff09\uff1a\u9996\u5148\uff0c\u9700\u8981\u786e\u5b9a\u54ea\u79cd\u8bbe\u5907\u8fdb\u884c Provision\u3002\u8fd9\u4e00\u6b65\u7c7b\u4f3c\u4e8e\u7ed9\u64cd\u4f5c\u7cfb\u7edf\u51c6\u5907\u4e00\u5757\u65b0\u7684\u786c\u76d8\uff0c\u786e\u5b9a\u63a5\u5165\u5b58\u50a8\u8bbe\u5907\u7684\u7c7b\u578b\u3001\u5bb9\u91cf\u7b49\u57fa\u672c\u53c2\u6570\u3002\u5176\u9006\u5411\u64cd\u4f5c\u4e3a delete\uff08\u79fb\u9664\uff09\u8bbe\u5907\u3002<\/li>\n\n\n\n<li><strong>\u9644\u52a0<\/strong>\uff08Attach\uff09\uff1a\u63a5\u4e0b\u6765\uff0c\u5c06\u51c6\u5907\u597d\u7684\u5b58\u50a8\u9644\u52a0\u5230\u7cfb\u7edf\u4e2d\u3002Attach \u53ef\u7c7b\u6bd4\u4e3a\u5c06\u5b58\u50a8\u8bbe\u5907\u63a5\u5165\u64cd\u4f5c\u7cfb\u7edf\uff0c\u6b64\u65f6\u5c3d\u7ba1\u8bbe\u5907\u8fd8\u4e0d\u80fd\u4f7f\u7528\uff0c\u4f46\u4f60\u53ef\u4ee5\u7528\u64cd\u4f5c\u7cfb\u7edf\u7684 fdisk -l \u547d\u4ee4\u67e5\u770b\u5230\u8bbe\u5907\u3002\u8fd9\u4e00\u6b65\u786e\u5b9a\u5b58\u50a8\u8bbe\u5907\u7684\u540d\u79f0\u3001\u9a71\u52a8\u65b9\u5f0f\u7b49\u9762\u5411\u7cfb\u7edf\u7684\u4fe1\u606f\uff0c\u5176\u9006\u5411\u64cd\u4f5c\u4e3a Detach\uff08\u5206\u79bb\uff09\u8bbe\u5907\u3002<\/li>\n\n\n\n<li><strong>\u6302\u8f7d<\/strong>\uff08Mount\uff09\uff1a\u6700\u540e\uff0c\u5c06\u9644\u52a0\u597d\u7684\u5b58\u50a8\u6302\u8f7d\u5230\u7cfb\u7edf\u4e2d\u3002Mount \u53ef\u7c7b\u6bd4\u4e3a\u5c06\u8bbe\u5907\u6302\u8f7d\u5230\u7cfb\u7edf\u7684\u6307\u5b9a\u4f4d\u7f6e\uff0c\u8fd9\u5c31\u662f\u64cd\u4f5c\u7cfb\u7edf\u4e2d mount \u547d\u4ee4\u7684\u4f5c\u7528\uff0c\u5176\u9006\u5411\u64cd\u4f5c\u4e3a\u5378\u8f7d\uff08Unmount\uff09\u5b58\u50a8\u8bbe\u5907\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\u6ce8\u610f<br><br>\u5982\u679c Pod \u4e2d\u4f7f\u7528\u7684\u662f EmptyDir\u3001HostPath \u8fd9\u7c7b Volume\uff0c\u5e76\u4e0d\u4f1a\u7ecf\u5386\u9644\u52a0\/\u5206\u79bb\u7684\u64cd\u4f5c\uff0c\u5b83\u4eec\u53ea\u4f1a\u88ab\u6302\u8f7d\/\u5378\u8f7d\u5230\u67d0\u4e00\u4e2a Pod \u4e2d\u3002<\/pre>\n\n\n\n<p>Kubernetes \u4e2d\u7684 Volume \u521b\u5efa\u548c\u7ba1\u7406\u4e3b\u8981\u7531 VolumeManager\uff08\u5377\u7ba1\u7406\u5668\uff09\u3001AttachDetachController\uff08\u6302\u8f7d\u63a7\u5236\u5668\uff09\u548c PVController\uff08PV \u751f\u547d\u5468\u671f\u7ba1\u7406\u5668\uff09\u8d1f\u8d23\u3002\u524d\u9762\u63d0\u5230\u7684 Provision\u3001Delete\u3001Attach\u3001Detach\u3001Mount \u548c Unmount \u64cd\u4f5c\u7531\u5177\u4f53\u7684 VolumePlugin\uff08\u7b2c\u4e09\u65b9\u5b58\u50a8\u63d2\u4ef6\uff0c\u4e5f\u79f0 CSI \u63d2\u4ef6\uff09\u5b9e\u73b0\u3002<\/p>\n\n\n\n<p>\u56fe 7-24 \u5c55\u793a\u4e86\u4e00\u4e2a\u5e26\u6709 PVC \u7684 Pod \u521b\u5efa\u8fc7\u7a0b\uff1a<\/p>\n\n\n\n<ol>\n<li>\u9996\u5148\uff0c\u7528\u6237\u521b\u5efa\u4e00\u4e2a\u5305\u542b PVC \u7684 Pod\uff0c\u8be5 PVC \u8981\u6c42\u4f7f\u7528\u52a8\u6001\u5b58\u50a8\u5377\uff1b<\/li>\n\n\n\n<li>\u9ed8\u8ba4\u8c03\u5ea6\u5668 kube-scheduler \u6839\u636e Pod \u914d\u7f6e\u3001\u8282\u70b9\u72b6\u6001\u3001PV \u914d\u7f6e\u7b49\u4fe1\u606f\uff0c\u5c06 Pod \u8c03\u5ea6\u5230\u4e00\u4e2a\u5408\u9002\u7684\u8282\u70b9\u4e2d\uff1b<\/li>\n\n\n\n<li>PVController \u4f1a\u6301\u7eed\u76d1\u6d4b ApiServer\uff0c\u5f53\u53d1\u73b0\u4e00\u4e2a PVC \u5df2\u521b\u5efa\u4f46\u4ecd\u5904\u4e8e\u672a\u7ed1\u5b9a\u72b6\u6001\u65f6\uff0c\u5b83\u4f1a\u5c1d\u8bd5\u5c06\u4e00\u4e2a PV \u4e0e\u8be5 PVC \u8fdb\u884c\u7ed1\u5b9a\u3002\u9996\u5148\uff0cPVController \u4f1a\u5728\u96c6\u7fa4\u5185\u67e5\u627e\u9002\u5408\u7684 PV\uff1b\u5982\u679c\u627e\u4e0d\u5230\u76f8\u5e94\u7684 PV\uff0c\u5b83\u4f1a\u8c03\u7528 Volume Plugin \u4e2d\u7684\u63a5\u53e3\u6267\u884c Provision \u64cd\u4f5c\u3002Provision \u8fc7\u7a0b\u5305\u62ec\u4ece\u8fdc\u7a0b\u5b58\u50a8\u4ecb\u8d28\u521b\u5efa\u4e00\u4e2a Volume\uff0c\u5e76\u5728\u96c6\u7fa4\u4e2d\u521b\u5efa\u4e00\u4e2a PV \u5bf9\u8c61\uff0c\u7136\u540e\u5c06\u6b64 PV \u4e0e PVC \u7ed1\u5b9a\uff1b<\/li>\n\n\n\n<li>\u5982\u679c\u4e00\u4e2a Pod \u88ab\u8c03\u5ea6\u5230\u67d0\u4e2a\u8282\u70b9\u540e\uff0c\u5b83\u6240\u5b9a\u4e49\u7684 PV \u8fd8\u6ca1\u6709\u88ab\u6302\u8f7d\uff0cAttachDetachController \u5c31\u4f1a\u8c03\u7528 Volume Plugin \u4e2d\u7684\u63a5\u53e3\uff0c\u628a\u8fdc\u7aef\u7684 Volume \u6302\u8f7d\u5230\u76ee\u6807\u8282\u70b9\u4e2d\u7684\u8bbe\u5907\u4e0a\uff08\u4f8b\u5982\uff1a\/dev\/vdb\uff09\uff1b<\/li>\n\n\n\n<li>\u5728\u8282\u70b9\u4e2d\uff0c\u5f53 VolumeManager \u53d1\u73b0\u4e00\u4e2a Pod \u5df2\u8c03\u5ea6\u5230\u81ea\u5df1\u7684\u8282\u70b9\u4e0a\u5e76\u4e14 Volume \u5df2\u7ecf\u5b8c\u6210\u6302\u8f7d\u65f6\uff0c\u5b83\u4f1a\u6267\u884c mount \u64cd\u4f5c\uff0c\u5c06\u672c\u5730\u8bbe\u5907\uff08\u5373\u521a\u624d\u5f97\u5230\u7684 \/dev\/vdb\uff09\u6302\u8f7d\u5230 Pod \u5728\u8282\u70b9\u4e0a\u7684\u4e00\u4e2a\u5b50\u76ee\u5f55 <code>\/var\/lib\/kubelet\/pods\/[pod uid]\/volumes\/kubernetes.io~iscsi\/[PV name]<\/code>\uff08\u4ee5 iSCSI \u7c7b\u578b\u7684\u5b58\u50a8\u4e3a\u4f8b\uff09\uff1b<\/li>\n\n\n\n<li>\u6700\u540e\uff0cKubelet \u542f\u52a8 Pod\uff0c\u5e76\u4f7f\u7528 bind mount \u65b9\u5f0f\u5c06\u5df2\u6302\u8f7d\u5230\u672c\u5730\u76ee\u5f55\u7684\u5377\u6620\u5c04\u5230 Pod \u5bb9\u5668\u5185\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u56fe  Pod \u6302\u8f7d\u6301\u4e45\u5316 Volume \u7684\u8fc7\u7a0b<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"770\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-1024x770.png\" alt=\"\" class=\"wp-image-18033\" style=\"width:548px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-1024x770.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-300x225.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-768x577.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-1536x1155.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-2048x1539.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-830x624.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-230x173.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-350x263.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-356-480x361.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4e0a\u8ff0\u6d41\u7a0b\u4e2d\u7b2c\u4e09\u65b9\u5b58\u50a8\u4f9b\u5e94\u5546\u5b9e\u73b0 Volume Plugin \u5373 CSI\uff08Container Storage Interface\uff0c\u5bb9\u5668\u5b58\u50a8\u63a5\u53e3\uff09\u63d2\u4ef6\u3002CSI \u662f\u4e00\u4e2a\u5f00\u653e\u6027\u7684\u6807\u51c6\uff0c\u76ee\u6807\u662f\u4e3a\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\uff08\u4e0d\u4ec5\u4ec5\u662f Kubernetes\uff0c\u8fd8\u5305\u62ec Docker Swarm \u548c Mesos \u7b49\uff09\u63d0\u4f9b\u7edf\u4e00\u7684\u5b58\u50a8\u63a5\u53e3\u3002<\/p>\n\n\n\n<p>CSI \u63d2\u4ef6\u5728\u5b9e\u73b0\u4e0a\u662f\u4e00\u4e2a\u53ef\u6267\u884c\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5b83\u4ee5 gRPC \u7684\u65b9\u5f0f\u5bf9\u5916\u63d0\u4f9b\u4e86\u4e09\u4e2a\u4e3b\u8981\u7684 gRPC \u670d\u52a1\uff1aIdentity Service\u3001Controller Service\u3001Node Service \u7528\u4e8e\u5377\u7684\u7ba1\u7406\u3001\u6302\u8f7d\u548c\u5378\u8f7d\u7b49\u64cd\u4f5c\u3002\u7b14\u8005\u4ecb\u7ecd\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>\u5176\u4e2d\uff0cIdentity Service \u7528\u4e8e\u5bf9\u5916\u66b4\u9732\u63d2\u4ef6\u672c\u8eab\u7684\u4fe1\u606f\uff0c\u5b83\u7684\u63a5\u53e3\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">service Identity {\n  \/\/ \u8fd4\u56de\u63d2\u4ef6\u7684\u540d\u79f0\u3001\u7248\u672c\u548c\u5176\u4ed6\u5143\u6570\u636e\u3002\n  rpc GetPluginInfo(GetPluginInfoRequest)\n    returns (GetPluginInfoResponse) {}\n\n  \/\/ \u8fd4\u56de\u63d2\u4ef6\u652f\u6301\u7684\u529f\u80fd\uff0c\u4f8b\u5982\u662f\u5426\u652f\u6301\u5377\u7684\u5feb\u7167\u7b49\u3002\n  rpc GetPluginCapabilities(GetPluginCapabilitiesRequest)\n    returns (GetPluginCapabilitiesResponse) {}\n\n  rpc Probe (ProbeRequest)\n    returns (ProbeResponse) {}\n}\n<\/pre>\n\n\n\n<p>Controller Service \u7ba1\u7406\u5377\u7684\u751f\u547d\u5468\u671f\uff0c\u5305\u62ec\u521b\u5efa\u3001\u5220\u9664\u548c\u83b7\u53d6\u5377\u7684\u4fe1\u606f\uff0c\u5b83\u7684\u63a5\u53e3\u5b9a\u4e49\u5982\u4e0b\u6240\u793a\u3002\u53ef\u4ee5\u770b\u51fa\uff0c\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684\u64cd\u4f5c\u5c31\u662f\u56fe 7-24 Master \u8282\u70b9\u4e2d \u51c6\u5907\uff08Provision\uff09\u548c \u9644\u52a0\uff08Attach\uff09\u7684\u903b\u8f91\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">service Controller {\n  \/\/ \u521b\u5efa\u4e00\u4e2a\u65b0\u5377\uff0c\u5e76\u8fd4\u56de\u8be5\u5377\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\n  rpc CreateVolume (CreateVolumeRequest)\n    returns (CreateVolumeResponse) {}\n  \/\/ \u5220\u9664\u6307\u5b9a\u7684\u5377\u3002\n  rpc DeleteVolume (DeleteVolumeRequest)\n    returns (DeleteVolumeResponse) {}\n  \/\/ \u5c06\u5377\u7ed1\u5b9a\u5230\u7279\u5b9a\u7684\u8282\u70b9\uff0c\u51c6\u5907\u540e\u7eed\u7684\u6302\u8f7d\u64cd\u4f5c\u3002\n  rpc ControllerPublishVolume (ControllerPublishVolumeRequest)\n    returns (ControllerPublishVolumeResponse) {}\n\n  \/\/ \u4ece\u8282\u70b9\u89e3\u7ed1\u5377\uff0c\u51c6\u5907\u8fdb\u884c\u5220\u9664\u6216\u5176\u4ed6\u64cd\u4f5c\u3002\n  rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest)\n    returns (ControllerUnpublishVolumeResponse) {}\n  ...\n<\/pre>\n\n\n\n<p>Node Service \u4e3b\u8981\u7531 Kubelet \u8c03\u7528\u5904\u7406\u5377\u5728\u8282\u70b9\u4e0a\u7684\u6302\u8f7d\u548c\u5378\u8f7d\u64cd\u4f5c\u3002\u5b83\u7684\u63a5\u53e3\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">service Node {\n  \/\/ \u5c06\u5377\u6302\u8f7d\u5230\u8282\u70b9\u7684\u8bbe\u5907\u4e0a\uff0c\u4f7f\u5176\u51c6\u5907\u597d\u88ab Pod \u4f7f\u7528\u3002\n  rpc NodeStageVolume (NodeStageVolumeRequest)\n    returns (NodeStageVolumeResponse) {}\n  \/\/ \u5c06\u5377\u4ece\u8282\u70b9\u7684\u8bbe\u5907\u4e2d\u5378\u8f7d\u3002\n  rpc NodeUnstageVolume (NodeUnstageVolumeRequest)\n    returns (NodeUnstageVolumeResponse) {}\n  \/\/ \u5728\u6307\u5b9a\u7684 Pod \u4e2d\u5c06\u5377\u6302\u8f7d\u5230\u5bb9\u5668\u7684\u6587\u4ef6\u7cfb\u7edf\u4e0a\u3002\n  rpc NodePublishVolume (NodePublishVolumeRequest)\n    returns (NodePublishVolumeResponse) {}\n  ...\n<\/pre>\n\n\n\n<p>CSI \u63d2\u4ef6\u673a\u5236\u4e3a\u5b58\u50a8\u4f9b\u5e94\u5546\u548c\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u4e4b\u95f4\u7684\u4ea4\u4e92\u63d0\u4f9b\u4e86\u6807\u51c6\u5316\u7684\u63a5\u53e3\u3002\u4e91\u5b58\u50a8\u5382\u5546\u53ea\u9700\u6839\u636e\u8fd9\u4e00\u6807\u51c6\u63a5\u53e3\u5b9e\u73b0\u81ea\u5df1\u7684\u4e91\u5b58\u50a8\u63d2\u4ef6\uff0c\u5373\u53ef\u65e0\u7f1d\u8854\u63a5 Kubernetes \u7684\u5e95\u5c42\u7f16\u6392\u7cfb\u7edf\uff0cKubernetes \u4e5f\u7531\u6b64\u5177\u5907\u4e86\u591a\u6837\u5316\u7684\u4e91\u5b58\u50a8\u3001\u5907\u4efd\u548c\u5feb\u7167\u7b49\u80fd\u529b\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5b58\u50a8\u5206\u7c7b\uff1a\u5757\u5b58\u50a8\u3001\u6587\u4ef6\u5b58\u50a8\u548c\u5bf9\u8c61\u5b58\u50a8<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5f97\u76ca Kubernetes \u7684\u5f00\u653e\u6027\u8bbe\u8ba1\uff0c\u901a\u8fc7\u56fe 7-25 \u611f\u53d7\u63d0\u4f9b\u4e86 CSI \u63d2\u4ef6\u652f\u6301\u7684\u5b58\u50a8\u751f\u6001\uff0c\u57fa\u672c\u4e0a\u5305\u542b\u4e86\u5e02\u9762\u4e0a\u6240\u6709\u7684\u5b58\u50a8\u4f9b\u5e94\u5546\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-1024x412.png\" alt=\"\" class=\"wp-image-18035\" style=\"width:540px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-1024x412.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-300x121.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-768x309.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-1536x619.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-2048x825.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-830x334.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-230x93.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-350x141.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-358-480x193.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4e0a\u8ff0\u4f17\u591a\u7684\u5b58\u50a8\u7cfb\u7edf\u65e0\u6cd5\u4e00\u4e00\u5c55\u5f00\uff0c\u4f46\u4f5c\u4e3a\u4e1a\u52a1\u5f00\u53d1\u5de5\u7a0b\u5e08\u800c\u8a00\uff0c\u76f4\u9762\u7684\u95ee\u9898\u662f\uff0c\u6211\u5e94\u8be5\u9009\u62e9\u54ea\u79cd\u5b58\u50a8\u7c7b\u578b\uff1f\u65e0\u8bba\u662f\u5185\u7f6e\u7684\u5b58\u50a8\u63d2\u4ef6\u8fd8\u662f\u7b2c\u4e09\u65b9\u7684 CSI \u5b58\u50a8\u63d2\u4ef6\uff0c\u603b\u7ed3\u63d0\u4f9b\u7684\u5b58\u50a8\u670d\u52a1\u7c7b\u578b\u5c31 3 \u79cd\uff1a\u5757\u5b58\u50a8\uff08Block Storage\uff09\u3001\u6587\u4ef6\u5b58\u50a8\uff08File Storage\uff09\u548c\u5bf9\u8c61\u5b58\u50a8\uff08Object Storage\uff09\u3002\u8fd9\u4e09\u79cd\u5b58\u50a8\u7c7b\u578b\u7279\u70b9\u4e0e\u533a\u522b\uff0c\u7b14\u8005\u4ecb\u7ecd\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u5757\u5b58\u50a8<\/strong>\uff1a\u5757\u5b58\u50a8\u662f\u6700\u63a5\u8fd1\u7269\u7406\u4ecb\u8d28\u7684\u4e00\u79cd\u5b58\u50a8\u65b9\u5f0f\uff0c\u5e38\u89c1\u7684\u786c\u76d8\u5c31\u5c5e\u4e8e\u5757\u8bbe\u5907\u3002\u5757\u5b58\u50a8\u4e0d\u5173\u5fc3\u6570\u636e\u7684\u7ec4\u7ec7\u65b9\u5f0f\u548c\u7ed3\u6784\uff0c\u53ea\u662f\u7b80\u5355\u5730\u5c06\u6240\u6709\u6570\u636e\u6309\u56fa\u5b9a\u5927\u5c0f\u5206\u5757\uff0c\u6bcf\u5757\u8d4b\u4e88\u4e00\u4e2a\u7528\u4e8e\u5bfb\u5740\u7684\u7f16\u53f7\u3002\u6570\u636e\u7684\u8bfb\u5199\u901a\u8fc7\u4e0e\u5757\u8bbe\u5907\u5339\u914d\u7684\u534f\u8bae\uff08\u5982 SCSI\u3001SATA\u3001SAS\u3001FCP\u3001FCoE\u3001iSCSI \u7b49\uff09\u8fdb\u884c\u3002\u5757\u5b58\u50a8\u5904\u4e8e\u6574\u4e2a\u5b58\u50a8\u8f6f\u4ef6\u6808\u7684\u5e95\u5c42\uff0c\u4e0d\u7ecf\u8fc7\u64cd\u4f5c\u7cfb\u7edf\uff0c\u56e0\u6b64\u5177\u6709\u8d85\u4f4e\u65f6\u5ef6\u548c\u8d85\u9ad8\u541e\u5410\u3002\u4f46\u7f3a\u70b9\u662f\u6bcf\u4e2a\u5757\u662f\u72ec\u7acb\u7684\uff0c\u7f3a\u4e4f\u96c6\u4e2d\u63a7\u5236\u673a\u5236\u6765\u89e3\u51b3\u6570\u636e\u51b2\u7a81\u548c\u540c\u6b65\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5757\u5b58\u50a8\u8bbe\u5907\u901a\u5e38\u4e0d\u80fd\u5171\u4eab\uff0c\u65e0\u6cd5\u88ab\u591a\u4e2a\u5ba2\u6237\u7aef\uff08\u8282\u70b9\uff09\u540c\u65f6\u6302\u8f7d\u3002\u5728 Kubernetes \u4e2d\uff0c\u5757\u5b58\u50a8\u7c7b\u578b\u7684 Volume \u7684\u8bbf\u95ee\u6a21\u5f0f\u5fc5\u987b\u662f RWO\uff08ReadWriteOnce\uff09\uff0c\u5373\u53ef\u8bfb\u53ef\u5199\uff0c\u4f46\u53ea\u80fd\u88ab\u5355\u4e2a\u8282\u70b9\u6302\u8f7d\u3002\u7531\u4e8e\u5757\u5b58\u50a8\u4e0d\u5173\u5fc3\u6570\u636e\u7684\u7ec4\u7ec7\u65b9\u5f0f\u6216\u5185\u5bb9\uff0c\u63a5\u53e3\u7b80\u5355\u6734\u7d20\uff0c\u56e0\u6b64\u4e3b\u8981\u7528\u4e8e\u6587\u4ef6\u7cfb\u7edf\u3001\u4e13\u4e1a\u5907\u4efd\u7ba1\u7406\u8f6f\u4ef6\u3001\u5206\u533a\u8f6f\u4ef6\u4ee5\u53ca\u6570\u636e\u5e93\uff0c\u800c\u975e\u76f4\u63a5\u63d0\u4f9b\u7ed9\u666e\u901a\u7528\u6237\u3002<\/li>\n\n\n\n<li><strong>\u6587\u4ef6\u5b58\u50a8<\/strong>\uff1a\u5757\u8bbe\u5907\u5b58\u50a8\u7684\u662f\u6700\u539f\u59cb\u7684\u4e8c\u8fdb\u5236\u6570\u636e\uff080 \u548c 1\uff09\uff0c\u5bf9\u4e8e\u4eba\u7c7b\u7528\u6237\u6765\u8bf4\uff0c\u8fd9\u6837\u7684\u6570\u636e\u65e2\u96be\u4ee5\u4f7f\u7528\u4e5f\u96be\u4ee5\u7ba1\u7406\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u4f7f\u7528\u201c\u6587\u4ef6\u201d\u8fd9\u4e00\u6982\u5ff5\u6765\u7ec4\u7ec7\u8fd9\u4e9b\u6570\u636e\u3002\u6240\u6709\u7528\u4e8e\u540c\u4e00\u7528\u9014\u7684\u6570\u636e\u6309\u7167\u4e0d\u540c\u5e94\u7528\u7a0b\u5e8f\u8981\u6c42\u7684\u7ed3\u6784\u65b9\u5f0f\u7ec4\u6210\u4e0d\u540c\u7c7b\u578b\u7684\u6587\u4ef6\uff0c\u5e76\u7528\u4e0d\u540c\u7684\u540e\u7f00\u6765\u6307\u4ee3\u8fd9\u4e9b\u7c7b\u578b\u3002\u6bcf\u4e2a\u6587\u4ef6\u6709\u4e00\u4e2a\u4fbf\u4e8e\u7406\u89e3\u548c\u8bb0\u5fc6\u7684\u540d\u79f0\u3002\u5f53\u6587\u4ef6\u6570\u91cf\u8f83\u591a\u65f6\uff0c\u901a\u8fc7\u67d0\u79cd\u5212\u5206\u65b9\u5f0f\u5bf9\u8fd9\u4e9b\u6587\u4ef6\u5206\u7ec4\uff0c\u6240\u6709\u6587\u4ef6\u548c\u76ee\u5f55\u5f62\u6210\u4e00\u4e2a\u6811\u72b6\u7ed3\u6784\u3002\u518d\u8865\u5145\u6743\u9650\u3001\u6587\u4ef6\u540d\u79f0\u3001\u521b\u5efa\u65f6\u95f4\u3001\u6240\u6709\u8005\u3001\u4fee\u6539\u8005\u7b49\u5143\u6570\u636e\u4fe1\u606f\u3002\u8fd9\u79cd\u5b9a\u4e49\u6587\u4ef6\u5206\u914d\u3001\u5b9e\u73b0\u65b9\u5f0f\u3001\u5b58\u50a8\u4fe1\u606f\u548c\u63d0\u4f9b\u529f\u80fd\u7684\u6807\u51c6\u88ab\u79f0\u4e3a\u201c\u6587\u4ef6\u7cfb\u7edf\u201d\uff08File System\uff09\u3002\u5e38\u89c1\u7684\u6587\u4ef6\u7cfb\u7edf\u6709 FAT32\u3001NTFS\u3001exFAT\u3001ext2\/3\/4\u3001XFS\u3001BTRFS \u7b49\u7b49\u3002\u5982\u679c\u6587\u4ef6\u5b58\u50a8\u5728\u7f51\u7edc\u670d\u52a1\u5668\u4e2d\uff0c\u5ba2\u6237\u7aef\u7528\u7c7b\u4f3c\u8bbf\u95ee\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u7684\u65b9\u5f0f\u8bbf\u95ee\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\uff0c\u8fd9\u6837\u7684\u7cfb\u7edf\u79f0\u4e3a\u201c\u7f51\u7edc\u6587\u4ef6\u7cfb\u7edf\u201d\u3002\u5e38\u89c1\u7684\u7f51\u7edc\u6587\u4ef6\u7cfb\u7edf\u6709 Windows \u7f51\u7edc\u7684 CIFS\uff08Common Internet File System\uff0c\u4e5f\u79f0 SMB\uff09\u548c\u7c7b Unix \u7cfb\u7edf\u7684 NFS\uff08Network File System\uff09\u3002<\/li>\n\n\n\n<li><strong>\u5bf9\u8c61\u5b58\u50a8<\/strong>\uff1a\u6587\u4ef6\u5b58\u50a8\u7684\u6811\u72b6\u7ed3\u6784\u548c\u8def\u5f84\u8bbf\u95ee\u65b9\u5f0f\u4fbf\u4e8e\u4eba\u7c7b\u7406\u89e3\u3001\u8bb0\u5fc6\u548c\u8bbf\u95ee\uff0c\u4f46\u8ba1\u7b97\u673a\u9700\u8981\u9010\u7ea7\u5206\u89e3\u8def\u5f84\u5e76\u67e5\u627e\uff0c\u6700\u7ec8\u5b9a\u4f4d\u5230\u6240\u9700\u6587\u4ef6\uff0c\u8fd9\u5bf9\u4e8e\u5e94\u7528\u7a0b\u5e8f\u800c\u8a00\u65e2\u4e0d\u5fc5\u8981\uff0c\u4e5f\u6d6a\u8d39\u6027\u80fd\u3002\u5757\u5b58\u50a8\u5219\u6027\u80fd\u51fa\u8272\uff0c\u4f46\u96be\u4ee5\u7406\u89e3\u4e14\u65e0\u6cd5\u5171\u4eab\u3002\u9009\u62e9\u56f0\u96be\u75c7\u51fa\u73b0\u7684\u540c\u65f6\uff0c\u4eba\u4eec\u601d\u8003\uff1a\u201c\u662f\u5426\u53ef\u4ee5\u6709\u4e00\u79cd\u65e2\u5177\u5907\u9ad8\u6027\u80fd\u3001\u5b9e\u73b0\u5171\u4eab\u3001\u53c8\u80fd\u6ee1\u8db3\u5927\u89c4\u6a21\u6269\u5c55\u9700\u6c42\u7684\u65b0\u578b\u5b58\u50a8\u7cfb\u7edf\uff1f\u201d\u3002\u4e8e\u662f\uff0c\u5bf9\u8c61\u5b58\u50a8\u5e94\u8fd0\u800c\u751f\u3002\u5bf9\u8c61\u5b58\u50a8\u4e2d\u7684\u201c\u5bf9\u8c61\u201d\u53ef\u4ee5\u7406\u89e3\u4e3a\u5143\u6570\u636e\u4e0e\u903b\u8f91\u6570\u636e\u5757\u7684\u7ec4\u5408\uff1a<ul><li>\u5143\u6570\u636e\u63d0\u4f9b\u4e86\u5bf9\u8c61\u7684\u4e0a\u4e0b\u6587\u4fe1\u606f\uff0c\u5982\u6570\u636e\u7c7b\u578b\u3001\u5927\u5c0f\u3001\u6743\u9650\u3001\u521b\u5efa\u4eba\u3001\u521b\u5efa\u65f6\u95f4\u7b49\uff1b<\/li><li>\u6570\u636e\u5757\u5219\u5b58\u50a8\u4e86\u5bf9\u8c61\u7684\u5177\u4f53\u5185\u5bb9\u3002<\/li><\/ul>\u5bf9\u8c61\u5b58\u50a8\u4e2d\uff0c\u6240\u6709\u6570\u636e\u5904\u4e8e\u540c\u4e00\u5c42\u6b21\uff0c\u901a\u8fc7\u552f\u4e00\u6807\u8bc6\u6765\u8bc6\u522b\u548c\u67e5\u627e\uff08\u6269\u5c55\u7b80\u5355\uff09\uff0c\u975e\u5e38\u9002\u5408\u5904\u7406\u6570\u636e\u91cf\u5927\u3001\u589e\u901f\u5feb\u7684\u975e\u7ed3\u6784\u5316\u6570\u636e\uff08\u5982\u89c6\u9891\u3001\u56fe\u50cf\u7b49\uff09\u3002\u6700\u8457\u540d\u7684\u5bf9\u8c61\u5b58\u50a8\u670d\u52a1\u662f AWS S3\uff08Simple Storage Service\uff09\uff0c\u5b83\u7684\u63a5\u53e3\u89c4\u8303\u5df2\u7ecf\u6210\u4e3a\u4e1a\u5185\u5bf9\u8c61\u5b58\u50a8\u670d\u52a1\u4e8b\u5b9e\u6807\u51c6\u3002\u5982\u679c\u4f60\u8003\u8651\u964d\u4f4e\u4e91\u6210\u672c\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5f00\u6e90\u9879\u76ee\u5982 Ceph\u3001Minio \u6216 Swift \u7b49\u81ea\u5efa\u5bf9\u8c61\u5b58\u50a8\u670d\u52a1\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5bb9\u5668\u95f4\u901a\u4fe1\u7684\u539f\u7406<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8981\u7406\u89e3\u5bb9\u5668\u7f51\u7edc\u7684\u5de5\u4f5c\u539f\u7406\uff0c\u4e00\u5b9a\u8981\u4ece Flannel \u9879\u76ee\u5165\u624b\u3002Flannel \u662f CoreOS \u63a8\u51fa\u7684\u5bb9\u5668\u7f51\u7edc\u89e3\u51b3\u65b9\u6848\uff0c\u662f\u4e1a\u754c\u516c\u8ba4\u662f\u201c\u6700\u7b80\u5355\u201d\u7684\u5bb9\u5668\u7f51\u7edc\u89e3\u51b3\u65b9\u6848\u3002\u63a5\u4e0b\u6765\uff0c\u7b14\u8005\u5c06\u4ee5 Flannel \u4e3a\u4f8b\uff0c\u4ecb\u7ecd\u5bb9\u5668\u95f4\u901a\u4fe1\u7684\u4e09\u79cd\u6a21\u5f0f\u3001\u5bb9\u5668\u7f51\u7edc\u63a5\u53e3\uff08CNI\uff09\u7684\u8bbe\u8ba1\u53ca\u751f\u6001\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Overlay \u8986\u76d6\u7f51\u7edc\u6a21\u5f0f<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u672c\u4e66\u7b2c\u4e09\u7ae0 5.4 \u8282\u5df2\u8be6\u7ec6\u4ecb\u7ecd\u4e86 Overlay \u7f51\u7edc\u7684\u8bbe\u8ba1\u601d\u60f3\u3002\u7b80\u800c\u8a00\u4e4b\uff0c\u5b83\u5728\u73b0\u6709\u4e09\u5c42\u7f51\u7edc\u4e4b\u4e0a\u201c\u53e0\u52a0\u201d\u4e86\u4e00\u5c42\u7531\u5185\u6838 VXLAN \u6a21\u5757\u7ba1\u7406\u7684\u865a\u62df\u4e8c\u5c42\u7f51\u7edc\u3002<\/p>\n\n\n\n<p>\u4e3a\u5728\u5bbf\u4e3b\u673a\u7f51\u7edc\u4e0a\u6784\u5efa\u865a\u62df\u4e8c\u5c42\u901a\u4fe1\u7f51\u7edc\uff08\u5373\u5efa\u7acb\u96a7\u9053\u7f51\u7edc\uff09\uff0cVXLAN \u6a21\u5757\u4f1a\u5728\u901a\u4fe1\u53cc\u65b9\u914d\u7f6e\u7279\u6b8a\u7684\u7f51\u7edc\u8bbe\u5907\u4f5c\u4e3a\u96a7\u9053\u7aef\u70b9\uff0c\u79f0\u4e3a VTEP\uff08VXLAN Tunnel Endpoints\uff0cVXLAN \u96a7\u9053\u7aef\u70b9\uff09\u3002VTEP \u662f\u865a\u62df\u7f51\u7edc\u8bbe\u5907\uff0c\u5177\u5907 IP \u5730\u5740\u548c MAC \u5730\u5740\u3002\u5b83\u6839\u636e VXLAN \u901a\u4fe1\u89c4\u8303\uff0c\u8d1f\u8d23\u5c06\u5206\u5e03\u5728\u4e0d\u540c\u8282\u70b9\u548c\u5b50\u7f51\u7684\u201c\u4e3b\u673a\u201d\uff08\u5982\u5bb9\u5668\u6216\u865a\u62df\u673a\uff09\u53d1\u9001\u7684\u6570\u636e\u5305\u8fdb\u884c\u5c01\u88c5\u548c\u89e3\u5c01\uff0c\u4ece\u800c\u4f7f\u5b83\u4eec\u80fd\u591f\u50cf\u5728\u540c\u4e00\u5c40\u57df\u7f51\u5185\u4e00\u6837\u8fdb\u884c\u901a\u4fe1\u3002<\/p>\n\n\n\n<p>\u4e0a\u8ff0\u57fa\u4e8e VTEP \u8bbe\u5907\u6784\u5efa\u201c\u96a7\u9053\u201d\u901a\u4fe1\u7684\u6d41\u7a0b\uff0c\u53ef\u4ee5\u603b\u7ed3\u4e3a\u56fe 7-26\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"457\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-1024x457.png\" alt=\"\" class=\"wp-image-18037\" style=\"width:578px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-1024x457.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-300x134.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-768x343.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-1536x685.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-830x370.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-230x103.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-350x156.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359-480x214.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-359.png 2004w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4ece\u56fe 7-26 \u53ef\u4ee5\u770b\u5230\uff0c\u5bbf\u4e3b\u673a\u5185\u7684\u5bb9\u5668\u901a\u8fc7 veth-pair\uff08\u865a\u62df\u7f51\u5361\uff09\u6865\u63a5\u5230\u540d\u4e3a cni0 \u7684 Linux Bridge\u3002\u540c\u65f6\uff0c\u6bcf\u4e2a\u5bbf\u4e3b\u673a\u90fd\u6709\u4e00\u4e2a\u540d\u4e3a flannel.1 \u7684\u8bbe\u5907\uff0c\u4f5c\u4e3a VXLAN \u6240\u9700\u7684 VTEP \u8bbe\u5907\u3002\u5f53\u5bb9\u5668\u63a5\u6536\u6216\u53d1\u9001\u6570\u636e\u5305\u65f6\uff0c\u5b83\u4eec\u901a\u8fc7 flannel.1 \u8bbe\u5907\u8fdb\u884c\u5c01\u88c5\u548c\u89e3\u5c01\u3002<\/p>\n\n\n\n<p>\u5728 VXLAN \u89c4\u8303\u4e2d\uff0c\u6570\u636e\u5305\u7531\u4e24\u5c42\u6784\u6210\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u5185\u5c42\u5e27<\/strong>\uff08Inner Ethernet Header\uff09\uff0c\u5c5e\u4e8e VXLAN \u903b\u8f91\u7f51\u7edc\uff1b<\/li>\n\n\n\n<li><strong>\u5916\u5c42\u5e27<\/strong>\uff08Outer Ethernet Header\uff09\uff0c\u5c5e\u4e8e\u5bbf\u4e3b\u673a\u7f51\u7edc\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5f53 Kubernetes \u8282\u70b9\u52a0\u5165 Flannel \u7f51\u7edc\u540e\uff0cFlannel \u4f1a\u542f\u52a8\u540d\u4e3a flanneld \u7684\u670d\u52a1\uff0c\u4f5c\u4e3a DaemonSet \u5728\u96c6\u7fa4\u4e2d\u8fd0\u884c\u3002flanneld \u8d1f\u8d23\u4e3a\u6bcf\u4e2a\u8282\u70b9\u5185\u7684\u5bb9\u5668\u5206\u914d\u5b50\u7f51\uff0c\u5e76\u540c\u6b65\u96c6\u7fa4\u5185\u7684\u7f51\u7edc\u914d\u7f6e\u4fe1\u606f\uff0c\u4ee5\u786e\u4fdd\u5404\u8282\u70b9\u4e4b\u95f4\u7684\u7f51\u7edc\u8fde\u901a\u6027\u548c\u4e00\u81f4\u6027\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u6765\u5206\u6790\u5f53 Node1 \u4e2d\u7684 Container-1 \u4e0e Node2 \u4e2d\u7684 Container-2 \u901a\u4fe1\u65f6\uff0cFlannel \u662f\u5982\u4f55\u8fdb\u884c\u5c01\u5305\u548c\u89e3\u5305\u7684\u3002<\/p>\n\n\n\n<p>\u9996\u5148\uff0c\u5f53 Container-1 \u53d1\u51fa\u8bf7\u6c42\u65f6\uff0c\u76ee\u6807\u5730\u5740\u4e3a 100.10.2.3 \u7684 IP \u6570\u636e\u5305\u4f1a\u901a\u8fc7 cni0 Linux \u7f51\u6865\u3002\u7531\u4e8e\u8be5\u5730\u5740\u4e0d\u5728 cni0 \u7f51\u6865\u7684\u8f6c\u53d1\u8303\u56f4\u5185\uff0c\u6570\u636e\u5305\u5c06\u88ab\u9001\u5165 Linux \u5185\u6838\u534f\u8bae\u6808\uff0c\u8fdb\u4e00\u6b65\u8def\u7531\u5230 flannel.1 \u8bbe\u5907\u8fdb\u884c\u5904\u7406\u3002<\/p>\n\n\n\n<p>Node1 \u4e2d\u7684\u8def\u7531\u4fe1\u606f\u7531 flanneld \u6dfb\u52a0\uff0c\u89c4\u5219\u5927\u81f4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[root@Node1 ~]# route -n\nKernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n100.10.1.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0\n100.10.2.0      100.10.2.0      255.255.255.0   UG    0      0        0 flannel.1\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u4e24\u6761\u8def\u7531\u7684\u610f\u601d\u662f\uff1a<\/p>\n\n\n\n<ul>\n<li>\u51e1\u662f\u53d1\u5f80 100.10.1.0\/24 \u7f51\u6bb5\u7684 IP \u62a5\u6587\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u63a5\u53e3 cni0\u3002<\/li>\n\n\n\n<li>\u51e1\u662f\u53d1\u5f80 100.10.2.0\/24 \u7f51\u6bb5\u7684 IP \u62a5\u6587\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u63a5\u53e3 flannel.1\uff0c\u5e76\u4e14\u6700\u540e\u4e00\u8df3\u7684\u7f51\u5173\u5730\u5740\u662f 10.224.1.0\uff08\u4e5f\u5c31\u662f Node2 \u4e2d VTEP \u7684\u8bbe\u5907\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6839\u636e\u4e0a\u8ff0\u8def\u7531\u89c4\u5219\uff0cContainer-1 \u53d1\u51fa\u7684\u6570\u636e\u5305\u4f1a\u4ea4\u7531 flannel.1 \u8bbe\u5907\u5904\u7406\uff0c\u5373\u6570\u636e\u5305\u8fdb\u5165\u4e86\u96a7\u9053\u7684\u201c\u8d77\u59cb\u7aef\u70b9\u201d\u3002\u5f53\u201c\u8d77\u59cb\u7aef\u70b9\u201d\u63a5\u6536\u5230\u539f\u59cb\u7684 IP \u6570\u636e\u5305\u540e\uff0c\u5b83\u4f1a\u6784\u9020 VXLAN \u7f51\u7edc\u7684\u5185\u5c42\u4ee5\u592a\u7f51\u5e27\uff0c\u5e76\u5c06\u5176\u53d1\u9001\u5230\u96a7\u9053\u7f51\u7edc\u7684\u201c\u76ee\u7684\u7aef\u70b9\u201d\uff0c\u5373 Node2 \u4e2d\u7684 VTEP \u8bbe\u5907\u3002\u8fd9\u6837\uff0c\u865a\u62df\u4e8c\u5c42\u7f51\u7edc\u5c31\u6210\u529f\u5efa\u7acb\uff0c\u5bb9\u5668\u53ef\u4ee5\u8de8\u8282\u70b9\u8fdb\u884c\u901a\u4fe1\u3002<\/p>\n\n\n\n<p>\u6784\u9020 VXLAN \u7f51\u7edc\u5185\u5c42\u4ee5\u592a\u7f51\u5e27\u7684\u524d\u63d0\u662f\uff0cNode1 \u8282\u70b9\u7684 flannel.1 \u8bbe\u5907\u9700\u8981\u77e5\u9053 Node2 \u4e2d flannel.1 \u8bbe\u5907\u7684 IP \u5730\u5740\u548c MAC \u5730\u5740\u3002\u5f53\u524d\uff0c\u6211\u4eec\u5df2\u7ecf\u901a\u8fc7 Node1 \u7684\u8def\u7531\u8868\u83b7\u5f97\u4e86 VTEP \u8bbe\u5907\u7684 IP \u5730\u5740\uff08100.10.2.0\uff09\u3002\u90a3\u4e48\uff0c\u5982\u4f55\u83b7\u53d6 flannel.1 \u8bbe\u5907\u7684 MAC \u5730\u5740\u5462\uff1f<\/p>\n\n\n\n<p>\u5b9e\u9645\u4e0a\uff0cNode2 \u4e2d VTEP \u8bbe\u5907\u7684 MAC \u5730\u5740\u5df2\u7531 flanneld \u81ea\u52a8\u6dfb\u52a0\u5230 Node1 \u7684 ARP \u8868\u4e2d\u3002\u5728 Node1 \u4e2d\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[root@Node1 ~]# ip n | grep flannel.1\n100.10.2.0  dev flannel.1 lladdr ba:74:f9:db:69:c1 PERMANENT # PERMANENT \u8868\u793a\u6c38\u4e0d\u8fc7\u671f\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u8bb0\u5f55\u7684\u610f\u601d\u662f\uff0cIP \u5730\u5740 10.10.2.0\uff08\u4e5f\u5c31\u662f Node2 flannel.1 \u8bbe\u5907\u7684 IP\uff09\u5bf9\u5e94\u7684 MAC \u5730\u5740\u662f ba:74:f9:db:69:c1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u6ce8\u610f<br><br>\u8fd9\u91cc ARP \u8868\u8bb0\u5f55\u5e76\u4e0d\u662f\u901a\u8fc7 ARP \u534f\u8bae\u5b66\u4e60\u5f97\u5230\u7684\uff0c\u800c\u662f flanneld \u9884\u5148\u4e3a\u6bcf\u4e2a\u8282\u70b9\u8bbe\u7f6e\u597d\u7684\uff0c\u6ca1\u6709\u8fc7\u671f\u65f6\u95f4\u3002<\/pre>\n\n\n\n<p>\u73b0\u5728\uff0c\u5185\u5c42\u4ee5\u592a\u7f51\u5e27\u5df2\u5b8c\u6210\u5c01\u88c5\u3002\u63a5\u4e0b\u6765\uff0cLinux \u5185\u6838\u5c06\u5185\u5c42\u5e27\u5c01\u88c5\u81f3\u5bbf\u4e3b\u673a UDP \u62a5\u6587\u5185\uff0c\u4ee5\u201c\u642d\u4fbf\u8f66\u201d\u7684\u65b9\u5f0f\u53d1\u9001\u5230\u5bbf\u4e3b\u673a\u7684\u4e8c\u5c42\u7f51\u7edc\u4e2d\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u5b9e\u73b0\u201c\u642d\u4fbf\u8f66\u201d\u673a\u5236\uff0cLinux \u5185\u6838\u4f1a\u5728\u5185\u5c42\u6570\u636e\u5e27\u524d\u6dfb\u52a0\u4e00\u4e2a\u7279\u6b8a\u7684 VXLAN Header\uff0c\u7528\u4e8e\u6807\u8bc6\u201c\u4e58\u5ba2\u201d \u8981\u8f6c\u53d1\u7ed9 VXLAN \u6a21\u5757\u5904\u7406\u3002VXLAN Header \u4e2d\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u6807\u5fd7 \u2014\u2014 VNI\uff08VXLAN Network Identifier\uff09\uff0c\u8fd9\u662f VTEP \u8bbe\u5907\u5224\u65ad\u6570\u636e\u5305\u662f\u5426\u5c5e\u4e8e\u81ea\u5df1\u5904\u7406\u7684\u4f9d\u636e\u3002\u5728 Flannel \u7684 VXLAN \u6a21\u5f0f\u4e0b\uff0c\u6240\u6709\u8282\u70b9\u7684 VNI \u9ed8\u8ba4\u4e3a 1\uff0c\u8fd9\u4e5f\u662f VTEP \u8bbe\u5907\u547d\u540d\u4e3a flannel.1 \u7684\u539f\u56e0\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0cLinux \u5185\u6838\u4f1a\u5c06\u4e8c\u5c42\u6570\u636e\u5e27\u5c01\u88c5\u8fdb\u5bbf\u4e3b\u673a\u7684 UDP \u62a5\u6587\u3002<\/p>\n\n\n\n<p>\u5728\u8fdb\u884c UDP \u5c01\u88c5\u65f6\uff0c\u9996\u5148\u9700\u8981\u786e\u5b9a\u56db\u5143\u7ec4\u4fe1\u606f\uff0c\u5373\u76ee\u7684 IP \u548c\u76ee\u7684\u7aef\u53e3\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cLinux \u5185\u6838\u4e3a VXLAN \u5206\u914d\u7684 UDP \u7aef\u53e3\u4e3a 4789\uff0c\u56e0\u6b64\u76ee\u7684\u7aef\u53e3\u4e3a 4789\u3002\u800c\u76ee\u7684 IP \u5730\u5740\u5219\u901a\u8fc7\u8f6c\u53d1\u8868\uff08forwarding database\uff0cfdb\uff09\u83b7\u53d6\uff0cfdb \u8868\u4e2d\u7684\u4fe1\u606f\u4e5f\u7531 flanneld \u63d0\u524d\u914d\u7f6e\u3002\u5728 Node1 \u4e2d\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[root@Node1 ~]# bridge fdb show | grep flannel.1\nba:74:f9:db:69:c1 dev flannel.1 dst 192.168.50.3 self permanent\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u8bb0\u5f55\u7684\u610f\u601d\u662f\uff0c\u76ee\u7684 MAC \u5730\u5740\u4e3a ba:74:f9:db:69:c1\uff08 Node2 VTEP \u8bbe\u5907\u7684 MAC \u5730\u5740\uff09\u7684\u6570\u636e\u5e27\u5c01\u88c5\u540e\uff0c\u5e94\u8be5\u53d1\u5f80\u54ea\u4e2a\u76ee\u7684IP\uff08192.168.50.3\uff09\u3002<\/p>\n\n\n\n<p>\u81f3\u6b64\uff0cVTEP \u8bbe\u5907\u5df2\u6536\u96c6\u5230\u6240\u6709\u5c01\u88c5\u6240\u9700\u7684\u4fe1\u606f\uff0c\u5e76\u8c03\u7528\u5bbf\u4e3b\u673a\u7f51\u7edc\u7684 UDP \u534f\u8bae\u53d1\u9001\u51fd\u6570\u5c06\u6570\u636e\u5305\u53d1\u51fa\u3002\u63a5\u4e0b\u6765\u7684\u8fc7\u7a0b\u4e0e\u672c\u673a UDP \u7a0b\u5e8f\u53d1\u9001\u6570\u636e\u5305\u7c7b\u4f3c\uff0c\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u6765\u770b Node2 \u6536\u5230\u6570\u636e\u5305\u540e\u7684\u5904\u7406\u6d41\u7a0b\u3002<\/p>\n\n\n\n<p>\u5f53\u6570\u636e\u5305\u5230\u8fbe Node2 \u7684 8472 \u7aef\u53e3\u65f6\uff0c\u5185\u6838\u4e2d\u7684 VXLAN \u6a21\u5757\u4f1a\u68c0\u67e5\u4ee5\u4e0b\u4e24\u4e2a\u6761\u4ef6\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>VNI \u6bd4\u8f83<\/strong>\uff1aVXLAN \u6a21\u5757\u4f1a\u68c0\u67e5 VXLAN Header \u4e2d\u7684 VNI \u662f\u5426\u4e0e\u672c\u673a\u7684 VXLAN \u7f51\u7edc\u7684 VNI \u4e00\u81f4\uff1b<\/li>\n\n\n\n<li><strong>MAC \u5730\u5740\u6bd4\u8f83<\/strong>\uff1a\u63a5\u7740\uff0c\u6bd4\u8f83\u5185\u5c42\u6570\u636e\u5e27\u4e2d\u7684\u76ee\u7684 MAC \u5730\u5740\u4e0e\u672c\u673a\u7684 flannel.1 \u8bbe\u5907\u7684 MAC \u5730\u5740\u662f\u5426\u5339\u914d\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5982\u679c\u4e0a\u8ff0\u4e24\u4e2a\u6761\u4ef6\u90fd\u6ee1\u8db3\uff0cVXLAN \u6a21\u5757\u4f1a\u53bb\u9664\u6570\u636e\u5305\u4e2d\u7684 VXLAN Header \u548c\u5185\u5c42\u4ee5\u592a\u7f51\u5e27 Header\uff0c\u6062\u590d\u51fa Container-1 \u539f\u59cb\u53d1\u9001\u7684\u6570\u636e\u5305\u3002\u968f\u540e\uff0c\u6839\u636e Node2 \u8282\u70b9\u7684\u8def\u7531\u89c4\u5219\uff08\u7531 flanneld \u63d0\u524d\u914d\u7f6e\uff09\uff0c\u7ee7\u7eed\u8fdb\u884c\u8def\u7531\u5904\u7406\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[root@Node2 ~]# route -n\nKernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n...\n100.10.2.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0<\/pre>\n\n\n\n<p>\u4ece\u4e0a\u9762\u7684\u8def\u7531\u89c4\u5219\u53ef\u4ee5\u770b\u51fa\uff0c\u76ee\u6807\u5730\u5740\u5c5e\u4e8e 100.10.2.0\/24 \u7f51\u6bb5\u7684\u6570\u636e\u5305\u4f1a\u88ab\u4ea4\u7ed9 cni0 \u63a5\u53e3\u5904\u7406\u3002\u63a5\u4e0b\u6765\uff0c\u6570\u636e\u5305\u5c06\u6309\u7167 Linux \u7f51\u6865\u7684\u5904\u7406\u6d41\u7a0b\u8f6c\u53d1\u81f3\u5bf9\u5e94\u7684 Pod\u3002<\/p>\n\n\n\n<p>\u81f3\u6b64\uff0cFlannel VXLAN \u6a21\u5f0f\u7684\u6574\u4e2a\u5de5\u4f5c\u6d41\u7a0b\u5ba3\u544a\u7ed3\u675f\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u4e09\u5c42\u8def\u7531\u6a21\u5f0f<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Flannel \u7684 host-gw \u6a21\u5f0f\u662f\u201chost gateway\u201d\u7684\u7f29\u5199\u3002\u4ece\u540d\u79f0\u53ef\u4ee5\u770b\u51fa\uff0chost-gw \u5de5\u4f5c\u6a21\u5f0f\u901a\u8fc7\u5bbf\u4e3b\u673a\u8def\u7531\u8868\u5b9e\u73b0\u5bb9\u5668\u95f4\u901a\u4fe1\u3002<\/p>\n\n\n\n<p>\u8be5\u6a21\u5f0f\u7684\u5de5\u4f5c\u539f\u7406\u7b80\u5355\u660e\u4e86\uff0c\u5982\u56fe 7-27 \u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"485\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-1024x485.png\" alt=\"\" class=\"wp-image-18038\" style=\"width:558px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-1024x485.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-300x142.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-768x364.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-1536x727.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-830x393.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-230x109.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-350x166.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360-480x227.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-360.png 1994w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u73b0\u5728\uff0c\u5047\u8bbe Node1 \u4e2d\u7684 container-1 \u4e0e Node2 \u4e2d\u7684 container-2 \u901a\u4fe1\uff0c\u6211\u4eec\u6765\u770b host-gw \u6a21\u5f0f\u662f\u5982\u4f55\u5de5\u4f5c\u7684\u3002<\/p>\n\n\n\n<p>\u9996\u5148\uff0c\u5f53 Kubernetes \u8282\u70b9\u52a0\u5165 Flannel \u7f51\u7edc\u540e\uff0cflanneld \u4f1a\u5728\u4e0a\u9762\u521b\u5efa\u4ee5\u4e0b\u8def\u7531\u89c4\u5219\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ip route\n100.96.2.0\/24 via 10.244.1.0 dev eth0\n<\/pre>\n\n\n\n<p>\u8fd9\u6761\u8def\u7531\u7684\u542b\u4e49\u662f\uff0c\u76ee\u7684\u5730\u4e3a 100.96.2.0\/24 \u7684 IP \u5305\u5e94\u901a\u8fc7 eth0 \u63a5\u53e3\u53d1\u9001\uff0c\u5176\u4e0b\u4e00\u8df3\u5730\u5740\u4e3a 10.244.1.0\uff08via 10.244.1.0\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u4ec0\u4e48\u662f\u4e0b\u4e00\u8df3<br><br>\u6240\u8c13\u201c\u4e0b\u4e00\u8df3\u201d\u662f\u6307 IP \u6570\u636e\u5305\u53d1\u9001\u65f6\u9700\u8981\u7ecf\u8fc7\u67d0\u4e2a\u8def\u7531\u8bbe\u5907\u7684\u4e2d\u8f6c\uff0c\u4e0b\u4e00\u8df3\u7684\u5730\u5740\u5c31\u662f\u8be5\u4e2d\u8f6c\u8def\u7531\u8bbe\u5907\u7684 IP \u5730\u5740\u3002\u4f8b\u5982\uff0c\u5982\u679c\u4f60\u4e2a\u4eba\u7535\u8111\u4e2d\u914d\u7f6e\u7684\u7f51\u5173\u5730\u5740\u4e3a 192.168.0.1\uff0c\u90a3\u4e48\u672c\u673a\u53d1\u51fa\u7684\u6240\u6709 IP \u5305\u90fd\u9700\u8981\u7ecf\u8fc7 192.168.0.1 \u8fdb\u884c\u4e2d\u8f6c\u3002<\/pre>\n\n\n\n<p>\u4e00\u65e6\u786e\u5b9a\u4e86\u4e0b\u4e00\u8df3\u5730\u5740\uff0cNode1 \u4e2d\u7684 container-1 \u53d1\u51fa\u7684 IP \u5305\u5c06\u88ab\u5bbf\u4e3b\u673a\u7f51\u7edc\u8def\u7531\u81f3\u4e0b\u4e00\u8df3\u5730\u5740\uff0c\u5373 Node2 \u8282\u70b9\u3002<\/p>\n\n\n\n<p>\u540c\u6837\uff0cNode2 \u4e2d\u4e5f\u6709 flanneld \u63d0\u524d\u521b\u5efa\u7684\u8def\u7531\u89c4\u5219\u3002\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ip route\n100.10.0.0\/24 dev cni0 proto kernel scope link src 100.10.0.1<\/pre>\n\n\n\n<p>\u8fd9\u6761\u8def\u7531\u89c4\u5219\u7684\u542b\u4e49\u662f\uff0c\u76ee\u7684\u5730\u5c5e\u4e8e 100.10.0.0\/24 \u7f51\u6bb5\u7684 IP \u5305\u5e94\u88ab\u9001\u5f80 cni0 \u7f51\u6865\u3002\u63a5\u4e0b\u6765\u7684\u5904\u7406\u8fc7\u7a0b\u7b14\u8005\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002<\/p>\n\n\n\n<p>\u7531\u6b64\u53ef\u89c1\uff0cFlannel \u7684 host-gw \u6a21\u5f0f\u5b9e\u9645\u4e0a\u5c06\u6bcf\u4e2a\u5bb9\u5668\u5b50\u7f51\uff08\u5982 Node1 \u4e2d\u7684 100.10.1.0\/24\uff09\u7684\u4e0b\u4e00\u8df3\u8bbe\u7f6e\u4e3a\u76ee\u6807\u4e3b\u673a\u7684 IP \u5730\u5740\uff0c\u5229\u7528\u5bbf\u4e3b\u673a\u7684\u8def\u7531\u529f\u80fd\u5145\u5f53\u5bb9\u5668\u95f4\u901a\u4fe1\u7684\u201c\u8def\u7531\u7f51\u5173\u201d\uff0c\u8fd9\u4e5f\u662f\u201chost-gw\u201d\u540d\u79f0\u7684\u7531\u6765\u3002<\/p>\n\n\n\n<p>host-gw \u6a21\u5f0f\u6ca1\u6709\u5c01\u5305\/\u89e3\u5305\u7684\u989d\u5916\u6d88\u8017\uff0c\u5728\u6027\u80fd\u8868\u73b0\u4e0a\u80af\u5b9a\u4f18\u4e8e\u524d\u9762\u4ecb\u7ecd\u7684 Overlay \u6a21\u5f0f\u3002\u4f46\u7531\u4e8e\u5b83\u4f9d\u8d56\u4e8e\u4e0b\u4e00\u8df3\u8def\u7531\uff0c\u56e0\u6b64\u5b83\u80af\u5b9a\u65e0\u6cd5\u7528\u4e8e\u5bbf\u4e3b\u673a\u8de8\u5b50\u7f51\u7684\u901a\u4fe1\u3002<\/p>\n\n\n\n<p>\u4e09\u5c42\u8def\u7531\u6a21\u5f0f\u9664\u4e86 Flannel \u7684 host-gw \u6a21\u5f0f\u5916\uff0c\u8fd8\u6709\u4e00\u4e2a\u66f4\u5177\u4ee3\u8868\u6027\u7684\u9879\u76ee \u2014\u2014 Calico\u3002<\/p>\n\n\n\n<p>Calico \u548c Flannel \u7684\u539f\u7406\u90fd\u662f\u76f4\u63a5\u5229\u7528\u5bbf\u4e3b\u673a\u7684\u8def\u7531\u529f\u80fd\u5b9e\u73b0\u5bb9\u5668\u95f4\u901a\u4fe1\uff0c\u4f46\u4e0d\u540c\u4e4b\u5904\u5728\u4e8e<strong>Calico \u901a\u8fc7 BGP \u534f\u8bae\u5b9e\u73b0\u8def\u7531\u89c4\u5219\u7684\u81ea\u52a8\u5316\u5206\u53d1<\/strong>\u3002\u56e0\u6b64 Calico \u7684\u7075\u6d3b\u6027\u66f4\u5f3a\uff0c\u66f4\u9002\u5408\u5927\u89c4\u6a21\u5bb9\u5668\u7ec4\u7f51\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u4ec0\u4e48\u662f BGP<br><br>BGP\uff08Border Gateway Protocol\uff0c\u8fb9\u754c\u7f51\u5173\u534f\u8bae\uff09\u4f7f\u7528 TCP \u4f5c\u4e3a\u4f20\u8f93\u5c42\u7684\u8def\u7531\u534f\u8bae\uff0c\u7528\u4e8e\u4ea4\u4e92 AS\uff08Autonomous System\uff0c\u81ea\u6cbb\u57df\uff09\u4e4b\u95f4\u7684\u8def\u7531\u89c4\u5219\u3002\u6bcf\u4e2a BGP \u670d\u52a1\u5b9e\u4f8b\u4e00\u822c\u79f0\u4e3a\u201cBGP Router\u201d\uff0c\u4e0e BGP Router \u8fde\u63a5\u7684\u5bf9\u7aef\u79f0\u4e3a\u201cBGP Peer\u201d\u3002\u6bcf\u4e2a BGP Router \u6536\u5230 Peer \u4f20\u6765\u7684\u8def\u7531\u4fe1\u606f\u540e\uff0c\u7ecf\u8fc7\u6821\u9a8c\u5224\u65ad\u540e\uff0c\u5c06\u5176\u5b58\u50a8\u5728\u8def\u7531\u8868\u4e2d\u3002<\/pre>\n\n\n\n<p>\u4e86\u89e3 BGP \u534f\u8bae\u4e4b\u540e\uff0c\u518d\u770b Calico \u7684\u67b6\u6784\uff08\u56fe 7-28 \uff09\uff0c\u5c31\u80fd\u7406\u89e3\u5b83\u5404\u4e2a\u7ec4\u4ef6\u7684\u4f5c\u7528\u4e86\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>Felix<\/strong>\uff1a\u8d1f\u8d23\u5728\u5bbf\u4e3b\u673a\u4e0a\u63d2\u5165\u8def\u7531\u89c4\u5219\uff0c\u76f8\u5f53\u4e8e BGP Router\uff1b<\/li>\n\n\n\n<li><strong>BGP Client<\/strong>\uff1aBGP \u7684\u5ba2\u6237\u7aef\uff0c\u8d1f\u8d23\u5728\u96c6\u7fa4\u5185\u5206\u53d1\u8def\u7531\u89c4\u5219\uff0c\u76f8\u5f53\u4e8e BGP Peer\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"547\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-1024x547.png\" alt=\"\" class=\"wp-image-18039\" style=\"width:506px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-1024x547.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-300x160.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-768x410.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-1536x821.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-830x444.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-230x123.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-350x187.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361-480x257.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-361.png 1972w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u9664\u4e86\u5bf9\u8def\u7531\u4fe1\u606f\u7684\u7ef4\u62a4\u7684\u533a\u522b\u5916\uff0cCalico \u4e0e Flannel \u7684\u53e6\u4e00\u4e2a\u4e0d\u540c\u4e4b\u5904\u5728\u4e8e\uff0c\u5b83\u4e0d\u4f1a\u8bbe\u7f6e\u4efb\u4f55\u865a\u62df\u7f51\u6865\u8bbe\u5907\u3002\u89c2\u5bdf\u56fe 7-28\uff0cCalico \u5e76\u672a\u521b\u5efa Linux Bridge\uff0c\u800c\u662f\u5c06\u6bcf\u4e2a Veth-Pair \u8bbe\u5907\u7684\u53e6\u4e00\u7aef\u653e\u7f6e\u5728\u5bbf\u4e3b\u673a\u4e2d\uff08\u540d\u79f0\u4ee5 cali \u4e3a\u524d\u7f00\uff09\uff0c\u7136\u540e\u6839\u636e\u8def\u7531\u89c4\u5219\u8fdb\u884c\u8f6c\u53d1\u3002\u4f8b\u5982\uff0cNode2 \u4e2d container-1 \u7684\u8def\u7531\u89c4\u5219\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ip route\n10.223.2.3 dev cali2u3d scope link\n<\/pre>\n\n\n\n<p>\u8fd9\u6761\u8def\u7531\u89c4\u5219\u7684\u542b\u4e49\u662f\uff0c\u53d1\u5f80 10.223.2.3 \u7684\u6570\u636e\u5305\u5e94\u8fdb\u5165\u4e0e container-1 \u8fde\u63a5\u7684 cali2u3d \u8bbe\u5907\uff08\u4e5f\u5c31\u662f Veth-Pair \u8bbe\u5907\u7684\u53e6\u4e00\u7aef\uff09\u3002<\/p>\n\n\n\n<p>\u7531\u6b64\u53ef\u89c1\uff0cCalico \u5b9e\u9645\u4e0a\u5c06\u96c6\u7fa4\u4e2d\u6bcf\u4e2a\u8282\u70b9\u7684\u5bb9\u5668\u89c6\u4e3a\u4e00\u4e2a AS\uff08Autonomous System\uff0c\u81ea\u6cbb\u57df\uff09\uff0c\u5e76\u5c06\u8282\u70b9\u89c6\u4e3a\u8fb9\u754c\u8def\u7531\u5668\uff0c\u8282\u70b9\u4e4b\u95f4\u76f8\u4e92\u4ea4\u4e92\u8def\u7531\u89c4\u5219\uff0c\u4ece\u800c\u6784\u5efa\u51fa\u5bb9\u5668\u95f4\u7684\u4e09\u5c42\u8def\u7531\u7f51\u7edc\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Underlay \u5e95\u5c42\u7f51\u7edc\u6a21\u5f0f<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u63a5\u4e0b\u6765\u4ecb\u7ecd\u7684\u662f\u6700\u540e\u4e00\u79cd\u5bb9\u5668\u95f4\u901a\u4fe1\u6a21\u5f0f \u2014\u2014 Underlay \u5e95\u5c42\u7f51\u7edc\u6a21\u5f0f\u3002<\/p>\n\n\n\n<p>Underlay \u6a21\u5f0f\u672c\u8d28\u4e0a\u662f<strong>\u76f4\u63a5\u5229\u7528\u5bbf\u4e3b\u673a\u7684\u4e8c\u5c42\u7f51\u7edc\u8fdb\u884c\u901a\u4fe1<\/strong>\u3002\u5728\u8fd9\u79cd\u6a21\u5f0f\u4e0b\uff0c\u5bb9\u5668\u901a\u5e38\u4f9d\u8d56\u4e8e MACVLAN \u6280\u672f\u6765\u7ec4\u7f51\u3002<\/p>\n\n\n\n<p>MAC \u5730\u5740\u901a\u5e38\u662f\u7f51\u5361\u63a5\u53e3\u7684\u552f\u4e00\u6807\u8bc6\uff0c\u4fdd\u6301\u4e00\u5bf9\u4e00\u5173\u7cfb\u3002\u800c MACVLAN \u6280\u672f\u6253\u7834\u4e86\u8fd9\u4e00\u89c4\u5219\uff0c\u5b83\u501f\u9274 VLAN \u5b50\u63a5\u53e3\u7684\u6982\u5ff5\uff0c\u5728\u7269\u7406\u8bbe\u5907\u4e4b\u4e0a\u3001\u5185\u6838\u7f51\u7edc\u6808\u4e4b\u4e0b\u521b\u5efa\u591a\u4e2a\u201c\u865a\u62df\u4ee5\u592a\u7f51\u5361\u201d\uff0c\u6bcf\u4e2a\u865a\u62df\u7f51\u5361\u90fd\u6709\u72ec\u7acb\u7684 MAC \u5730\u5740\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7 MACVLAN \u6280\u672f\u865a\u62df\u51fa\u7684\u526f\u672c\u7f51\u5361\u5728\u529f\u80fd\u4e0a\u4e0e\u771f\u5b9e\u7f51\u5361\u5b8c\u5168\u5bf9\u7b49\u3002\u5728\u63a5\u6536\u5230\u6570\u636e\u5305\u540e\uff0c\u7269\u7406\u7f51\u5361\u627f\u62c5\u7c7b\u4f3c\u4ea4\u6362\u673a\u7684\u804c\u8d23\uff0c\u5b83\u6839\u636e\u76ee\u6807 MAC \u5730\u5740\u5224\u65ad\u8be5\u6570\u636e\u5305\u5e94\u8f6c\u53d1\u81f3\u54ea\u5757\u526f\u672c\u7f51\u5361\u5904\u7406\uff08\u5982\u56fe 7-29 \u6240\u793a\uff09\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-1024x716.png\" alt=\"\" class=\"wp-image-18041\" style=\"width:530px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-1024x716.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-300x210.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-768x537.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-1536x1074.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-2048x1432.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-830x580.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-230x161.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-350x245.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-363-480x336.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u7531\u4e8e\u540c\u4e00\u7269\u7406\u7f51\u5361\u865a\u62df\u51fa\u7684\u526f\u7f51\u5361\u5929\u7136\u4f4d\u4e8e\u540c\u4e00\u5b50\u7f51\uff08VLAN\uff09\u5185\uff0c\u56e0\u6b64\u5b83\u4eec\u53ef\u4ee5\u76f4\u63a5\u5728\u5bbf\u4e3b\u673a\u7684\u4e8c\u5c42\u7f51\u7edc\u4e2d\u8fdb\u884c\u901a\u4fe1\u3002<\/p>\n\n\n\n<p>Docker \u7684\u7f51\u7edc\u6a21\u578b\u4e2d\u7684 Macvlan \u6a21\u5f0f\uff0c\u6b63\u662f\u5229\u7528\u4e0a\u8ff0\u201c\u5b50\u8bbe\u5907\u201d\u5b9e\u73b0\u7ec4\u7f51\u3002Docker \u4f7f\u7528 Macvlan \u6a21\u5f0f\u914d\u7f6e\u7f51\u7edc\u7684\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker network create -d macvlan \\\n  --subnet=192.168.1.0\/24 \\\n  --gateway=192.168.1.1 \\\n  -o parent=eth0 macvlan_network<\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u51fa\uff0cUnderlay \u5e95\u5c42\u7f51\u7edc\u6a21\u5f0f\u76f4\u63a5\u5229\u7528\u7269\u7406\u7f51\u7edc\u8d44\u6e90\uff0c\u7ed5\u8fc7\u4e86\u5bb9\u5668\u7f51\u7edc\u6865\u63a5\u548c NAT\uff0c\u56e0\u6b64\u5177\u6709\u6700\u4f73\u7684\u6027\u80fd\u8868\u73b0\u3002\u4e0d\u8fc7\uff0c\u7531\u4e8e\u4f9d\u8d56\u786c\u4ef6\u548c\u5e95\u5c42\u7f51\u7edc\u73af\u5883\uff0c\u90e8\u7f72\u65f6\u9700\u8981\u6839\u636e\u5177\u4f53\u7684\u8f6f\u786c\u4ef6\u6761\u4ef6\u8fdb\u884c\u8c03\u6574\uff0c\u7f3a\u4e4f Overlay \u7f51\u7edc\u90a3\u6837\u7684\u5f00\u7bb1\u5373\u7528\u7684\u7075\u6d3b\u6027\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>CNI \u63d2\u4ef6\u53ca\u751f\u6001<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8bbe\u8ba1\u4e00\u4e2a\u5bb9\u5668\u7f51\u7edc\u6a21\u578b\u662f\u4e00\u4e2a\u5f88\u590d\u6742\u7684\u4e8b\u60c5\uff0cKubernetes \u672c\u8eab\u5e76\u4e0d\u76f4\u63a5\u5b9e\u73b0\u7f51\u7edc\u6a21\u578b\uff0c\u800c\u662f\u901a\u8fc7 CNI\uff08Container Network Interface\uff0c\u5bb9\u5668\u7f51\u7edc\u63a5\u53e3\uff09\u628a\u7f51\u7edc\u53d8\u6210\u5916\u90e8\u53ef\u6269\u5c55\u7684\u529f\u80fd\u3002<\/p>\n\n\n\n<p>CNI \u63a5\u53e3\u6700\u521d\u7531 CoreOS \u4e3a rkt \u5bb9\u5668\u521b\u5efa\uff0c\u5982\u4eca\u5df2\u6210\u4e3a\u5bb9\u5668\u7f51\u7edc\u7684\u4e8b\u5b9e\u6807\u51c6\uff0c\u5e7f\u6cdb\u5e94\u7528\u4e8e Kubernetes\u3001Mesos \u548c OpenShift \u7b49\u5bb9\u5668\u5e73\u53f0\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cCNI \u63a5\u53e3\u5e76\u975e\u7c7b\u4f3c\u4e8e CSI\u3001CRI \u90a3\u6837\u7684 gRPC \u63a5\u53e3\uff0c\u800c\u662f\u6307\u8c03\u7528\u7b26\u5408 CNI \u89c4\u8303\u7684\u53ef\u6267\u884c\u7a0b\u5e8f\uff0c\u8fd9\u4e9b\u7a0b\u5e8f\u88ab\u79f0\u4e3a\u201cCNI \u63d2\u4ef6\u201d\u3002<\/p>\n\n\n\n<p>\u4ee5 Kubernetes \u4e3a\u4f8b\uff0cKubernetes \u8282\u70b9\u9ed8\u8ba4\u7684 CNI \u63d2\u4ef6\u8def\u5f84\u4e3a \/opt\/cni\/bin\u3002\u5728\u8be5\u8def\u5f84\u4e0b\uff0c\u53ef\u4ee5\u67e5\u770b\u5230\u53ef\u7528\u7684 CNI \u63d2\u4ef6\uff0c\u8fd9\u4e9b\u63d2\u4ef6\u6709\u7684\u662f\u5185\u7f6e\u7684\uff0c\u6709\u4e9b\u662f\u5b89\u88c5\u5bb9\u5668\u7f51\u7edc\u65b9\u6848\u65f6\u81ea\u52a8\u4e0b\u8f7d\u7684\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ls \/opt\/cni\/bin\/\nbandwidth  bridge  dhcp  firewall  flannel calico-ipam cilium...<\/pre>\n\n\n\n<p>CNI \u63d2\u4ef6\u7684\u5927\u81f4\u5de5\u4f5c\u6d41\u7a0b\u5982\u56fe 7-30 \u6240\u793a\u3002\u5728\u521b\u5efa Pod \u65f6\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\u6839\u636e CNI \u914d\u7f6e\u89c4\u8303\uff08\u5982\u8bbe\u7f6e VXLAN \u7f51\u7edc\u3001\u914d\u7f6e\u8282\u70b9\u5bb9\u5668\u5b50\u7f51\u7b49\uff09\uff0c\u901a\u8fc7\u6807\u51c6\u8f93\u5165\uff08stdin\uff09\u5411 CNI \u63d2\u4ef6\u4f20\u9012\u7f51\u7edc\u914d\u7f6e\u4fe1\u606f\u3002\u5f85 CNI \u63d2\u4ef6\u5b8c\u6210\u7f51\u7edc\u914d\u7f6e\u540e\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\u901a\u8fc7\u6807\u51c6\u8f93\u51fa\uff08stdout\uff09\u63a5\u6536\u914d\u7f6e\u7ed3\u679c\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-1024x498.png\" alt=\"\" class=\"wp-image-18043\" style=\"width:552px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-1024x498.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-300x146.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-768x373.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-1536x746.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-830x403.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-230x112.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-350x170.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365-480x233.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-365.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4e3e\u4e2a\u5177\u4f53\u4f8b\u5b50\uff0c\u4f7f\u7528 Flannel \u914d\u7f6e VXLAN \u7f51\u7edc\uff0c\u6765\u5e2e\u52a9\u4f60\u7406\u89e3 CNI \u63d2\u4ef6\u7684\u5de5\u4f5c\u6d41\u7a0b\u3002<\/p>\n\n\n\n<p>\u9996\u5148\uff0c\u5f53\u5728\u5bbf\u4e3b\u673a\u5b89\u88c5 flanneld \u65f6\uff0cflanneld \u542f\u52a8\u4f1a\u5728\u6bcf\u53f0\u5bbf\u4e3b\u673a\u751f\u6210\u5bf9\u5e94\u7684 CNI \u914d\u7f6e\u6587\u4ef6\uff0c\u544a\u8bc9 Kubernetes\uff1a\u8be5\u96c6\u7fa4\u4f7f\u7528 flannel \u5bb9\u5668\u7f51\u7edc\u65b9\u6848\u3002 CNI \u914d\u7f6e\u6587\u4ef6\u901a\u5e38\u4f4d\u4e8e \/etc\/cni\/net.d\/ \u76ee\u5f55\u4e0b\u3002\u5b83\u7684\u914d\u7f6e\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"cniVersion\": \"0.4.0\",\n  \"name\": \"container-cni-list\",\n  \"plugins\": [\n    {\n      \"type\": \"flannel\",\n      \"delegate\": {\n        \"isDefaultGateway\": true,\n        \"hairpinMode\": true,\n        \"ipMasq\": true,\n        \"kubeconfig\": \"\/etc\/kube-flannel\/kubeconfig\"\n      }\n    }\n  ]\n}\n<\/pre>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\uff08\u5982 CRI-O \u6216 containerd\uff09\u4f1a\u52a0\u8f7d\u4e0a\u8ff0 CNI \u914d\u7f6e\u6587\u4ef6\uff0c\u5c06 plugins \u5217\u8868\u4e2d\u7684\u7b2c\u4e00\u4e2a\u63d2\u4ef6\uff08Flannel\uff09\u8bbe\u7f6e\u4e3a\u9ed8\u8ba4\u63d2\u4ef6\u3002\u5728 Kubernetes \u542f\u52a8\u5bb9\u5668\u4e4b\u524d\uff08\u5373\u5728\u521b\u5efa Infra \u5bb9\u5668\u65f6\uff09\uff0ckubelet \u8c03\u7528 CNI \u63d2\u4ef6\uff0c\u4f20\u5165\u4e0b\u9762\u4e24\u7c7b\u53c2\u6570\uff0c\u6765\u4e3a Infra \u5bb9\u5668\u914d\u7f6e\u7f51\u7edc\u3002<\/p>\n\n\n\n<ul>\n<li><strong>Pod \u4fe1\u606f<\/strong>\uff1a\u5982\u5bb9\u5668\u7684\u552f\u4e00\u6807\u8bc6\u7b26\u3001Pod \u6240\u5728\u7684\u547d\u540d\u7a7a\u95f4\u3001Pod \u7684\u540d\u79f0\u7b49\uff0c\u8fd9\u4e9b\u4fe1\u606f\u4e00\u822c\u7ec4\u7ec7\u6210 JSON \u5bf9\u8c61\uff1b<\/li>\n\n\n\n<li><strong>CNI \u63d2\u4ef6\u8981\u6267\u884c\u7684\u64cd\u4f5c<\/strong>\uff1a\n<ul>\n<li>add \u64cd\u4f5c\uff1a\u7528\u4e8e\u5206\u914d IP \u5730\u5740\u3001\u521b\u5efa veth pair \u8bbe\u5907\u7b49\uff0c\u5e76\u5c06\u5bb9\u5668\u6dfb\u52a0\u5230 Flannel \u7f51\u7edc\u4e2d\uff1b<\/li>\n\n\n\n<li>del \u64cd\u4f5c\uff1a\u7528\u4e8e\u6e05\u9664\u5bb9\u5668\u7684\u7f51\u7edc\u914d\u7f6e\uff0c\u5c06\u5bb9\u5668\u4ece Flannel \u7f51\u7edc\u4e2d\u5220\u9664\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\u4f1a\u901a\u8fc7\u6807\u51c6\u8f93\u5165\u5c06\u4e0a\u8ff0\u53c2\u6570\u4f20\u9012\u7ed9 CNI \u63d2\u4ef6\u3002\u540e\u7eed\u7684\u903b\u8f91\u5219\u662f CNI \u63d2\u4ef6\u7684\u5177\u4f53\u64cd\u4f5c\uff0c\u5177\u4f53\u7ec6\u8282\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo '{\n  \"cniVersion\": \"0.4.0\",\n  \"name\": \"flannel\",\n  \"type\": \"flannel\",\n  \"containerID\": \"abc123def456\",\n  \"namespace\": \"default\",\n  \"podName\": \"my-pod\",\n  \"netns\": \"\/var\/run\/netns\/abc123def456\",\n  \"ifname\": \"eth0\",\n  \"args\": {\n    \"isDefaultGateway\": true\n  }\n}' | \/opt\/cni\/bin\/flannel add abc123def456\n<\/pre>\n\n\n\n<p>\u6700\u540e\uff0cCNI \u63d2\u4ef6\u6267\u884c\u5b8c\u6bd5\u540e\uff0c\u4f1a\u5c06\u5bb9\u5668\u7684 IP \u5730\u5740\u7b49\u4fe1\u606f\u8fd4\u56de\u7ed9\u5bb9\u5668\u8fd0\u884c\u65f6\uff0c\u5e76\u7531 kubelet \u66f4\u65b0\u5230 Pod \u7684\u72b6\u6001\u5b57\u6bb5\u4e2d\uff0c\u6574\u4e2a\u5bb9\u5668\u7f51\u7edc\u914d\u7f6e\u5c31\u5ba3\u544a\u7ed3\u675f\u4e86\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7 CNI \u8fd9\u79cd\u5f00\u653e\u6027\u7684\u8bbe\u8ba1\uff0c\u9700\u8981\u63a5\u5165\u4ec0\u4e48\u6837\u7684\u7f51\u7edc\uff0c\u8bbe\u8ba1\u4e00\u4e2a\u5bf9\u5e94\u7684\u7f51\u7edc\u63d2\u4ef6\u5373\u53ef\u3002\u8fd9\u6837\u4e00\u6765\u8282\u7701\u4e86\u5f00\u53d1\u8d44\u6e90\u96c6\u4e2d\u7cbe\u529b\u5230 Kubernetes \u672c\u8eab\uff0c\u4e8c\u6765\u53ef\u4ee5\u5229\u7528\u5f00\u6e90\u793e\u533a\u7684\u529b\u91cf\u6253\u9020\u4e00\u6574\u4e2a\u4e30\u5bcc\u7684\u751f\u6001\u3002\u73b0\u5982\u4eca\uff0c\u5982\u56fe 7-31 \u6240\u793a\uff0c\u652f\u6301 CNI \u89c4\u8303\u7684\u7f51\u7edc\u63d2\u4ef6\u591a\u8fbe\u51e0\u5341\u79cd\u3002\u8fd9\u4e9b\u7f51\u7edc\u63d2\u4ef6\u7b14\u8005\u65e0\u6cd5\u9010\u4e00\u89e3\u91ca\uff0c\u4f46\u5c31\u5b9e\u73b0\u7684\u5bb9\u5668\u901a\u4fe1\u6a21\u5f0f\u800c\u8a00\uff0c\u603b\u7ed3\u5c31\u4e0a\u9762\u4e09\u79cd\u7c7b\u578b\uff1aOverlay \u8986\u76d6\u7f51\u7edc\u6a21\u5f0f\u3001\u4e09\u5c42\u8def\u7531\u6a21\u5f0f \u548c Underlay \u5e95\u5c42\u7f51\u7edc\u6a21\u5f0f\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-1024x314.png\" alt=\"\" class=\"wp-image-18044\" style=\"width:548px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-1024x314.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-300x92.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-768x236.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-1536x471.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-830x255.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-230x71.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-350x107.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366-480x147.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-366.png 2020w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u9700\u8981\u8865\u5145\u7684\u662f\uff0c\u5bf9\u4e8e\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf\u800c\u8a00\uff0c\u7f51\u7edc\u5e76\u975e\u5b64\u7acb\u7684\u529f\u80fd\u6a21\u5757\uff0c\u8fd8\u8981\u914d\u5957\u5404\u7c7b\u7684\u7f51\u7edc\u8bbf\u95ee\u7b56\u7565\u80fd\u529b\u652f\u6301\u3002\u4f8b\u5982\uff0c\u7528\u6765\u9650\u5236 Pod \u51fa\u5165\u7ad9\u89c4\u5219\u7f51\u7edc\u7b56\u7565\uff08NetworkPolicy\uff09\uff0c\u5bf9\u7f51\u7edc\u6d41\u91cf\u6570\u636e\u8fdb\u884c\u5206\u6790\u76d1\u63a7\u7b49\u7b49\u989d\u5916\u529f\u80fd\u3002\u8fd9\u4e9b\u9700\u6c42\u660e\u663e\u4e0d\u5c5e\u4e8e CNI \u89c4\u8303\u5185\u7684\u8303\u7574\uff0c\u56e0\u6b64\u5e76\u4e0d\u662f\u6bcf\u4e2a CNI \u63d2\u4ef6\u90fd\u4f1a\u652f\u6301\u8fd9\u4e9b\u989d\u5916\u529f\u80fd\u3002\u5982\u679c\u4f60\u9009\u62e9 Flannel \u63d2\u4ef6\uff0c\u5fc5\u987b\u914d\u5957\u5176\u4ed6\u63d2\u4ef6\uff08\u5982 Calico \u6216 Cilium\uff09\u624d\u80fd\u542f\u7528\u7f51\u7edc\u7b56\u7565\u3002\u56e0\u6b64\uff0c\u6709\u8fd9\u65b9\u9762\u9700\u6c42\u7684\uff0c\u5e94\u8be5\u8003\u8651\u529f\u80fd\u66f4\u5168\u9762\u7684\u7f51\u7edc\u63d2\u4ef6\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u6a21\u578b\u53ca\u7f16\u6392\u8c03\u5ea6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u8fc7\u53bb\u7684\u96c6\u7fa4\u7ba1\u7406\u5e73\u53f0\uff08\u5982 Mesos\u3001Swarm\uff09\u64c5\u957f\u7684\u662f\uff0c\u901a\u8fc7\u7279\u5b9a\u89c4\u5219\u5c06\u5bb9\u5668\u8c03\u5ea6\u5230\u6700\u4f73\u8282\u70b9\u4e0a\uff0c\u8fd9\u4e00\u529f\u80fd\u79f0\u4e3a\u201c\u8c03\u5ea6\u201d\u3002\u800c Kubernetes \u64c5\u957f\u7684\uff0c\u662f\u6839\u636e\u7cfb\u7edf\u89c4\u5219\u548c\u7528\u6237\u9700\u6c42\uff0c\u81ea\u52a8\u5316\u5730\u5904\u7406\u597d\u5bb9\u5668\u95f4\u7684\u5404\u79cd\u5173\u7cfb\uff0c\u8fd9\u4e2a\u529f\u80fd\u5c31\u662f\u6211\u4eec\u5e38\u542c\u5230\u7684 \u201c\u7f16\u6392\u201d\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u6a21\u578b<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5728 Kubernetes \u4e2d\uff0cPod \u662f\u6700\u5c0f\u7684\u8c03\u5ea6\u5355\u5143\u3002\u56e0\u6b64\uff0c\u6240\u6709\u4e0e\u8c03\u5ea6\u548c\u8d44\u6e90\u7ba1\u7406\u76f8\u5173\u7684\u5c5e\u6027\u90fd\u5e94\u5305\u542b\u5728 Pod \u5bf9\u8c61\u4e2d\u3002<\/p>\n\n\n\n<p>\u4e0e\u8c03\u5ea6\u5bc6\u5207\u76f8\u5173\u7684\u4e3b\u8981\u662f CPU \u548c\u5185\u5b58\u7684\u914d\u7f6e\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: qos-demo-5\n  namespace: qos-example\nspec:\n  containers:\n    - name: qos-demo-ctr-5\n      image: nginx\n      resources:\n        limits:\n          memory: \"200Mi\"\n          cpu: \"700m\"\n        requests:\n          memory: \"200Mi\"\n          cpu: \"700m\"\n<\/pre>\n\n\n\n<p>\u50cf CPU \u8fd9\u7c7b\u7684\u8d44\u6e90\u88ab\u79f0\u4f5c\u53ef\u538b\u7f29\u8d44\u6e90\u3002\u8fd9\u7c7b\u8d44\u6e90\u4e0d\u8db3\u65f6\uff0cPod \u5185\u7684\u8fdb\u7a0b\u53d8\u5f97\u5361\u987f\uff0c\u4f46 Pod \u4e0d\u4f1a\u56e0\u6b64\u88ab\u6740\u6389\u3002<\/p>\n\n\n\n<p>Kubernetes \u4e2d\u7684 CPU \u8d44\u6e90\u8ba1\u91cf\u5355\u4f4d\u4e3a\u201c\u4e2a\u6570\u201d\u3002\u4f8b\u5982\uff0cCPU=1 \u8868\u793a Pod \u7684 CPU \u9650\u989d\u4e3a 1 \u4e2a CPU\u3002\u5177\u4f53\u7684\u201c1 \u4e2a CPU\u201d\u5b9a\u4e49\u53d6\u51b3\u4e8e\u5bbf\u4e3b\u673a\u7684\u786c\u4ef6\u914d\u7f6e\uff0c\u5b83\u53ef\u80fd\u5bf9\u5e94\u591a\u6838\u5904\u7406\u5668\u4e2d\u7684\u4e00\u4e2a\u6838\u5fc3\u3001\u4e00\u4e2a\u8d85\u7ebf\u7a0b\uff08Hyper-Threading\uff09\u6216\u865a\u62df\u673a\u4e2d\u7684\u4e00\u4e2a\u865a\u62df\u5904\u7406\u5668\uff08vCPU\uff09\u3002\u5bf9\u4e8e\u4e0d\u540c\u786c\u4ef6\u73af\u5883\u6784\u5efa\u7684 Kubernetes \u96c6\u7fa4\uff0c1 \u4e2a CPU \u7684\u5b9e\u9645\u7b97\u529b\u53ef\u80fd\u6709\u6240\u4e0d\u540c\uff0c\u4f46 Kubernetes \u53ea\u4fdd\u8bc1 Pod \u80fd\u591f\u4f7f\u7528\u5230\u201c1 \u4e2a CPU\u201d\u8fd9\u4e00\u903b\u8f91\u5355\u4f4d\u7684\u7b97\u529b\u3002<\/p>\n\n\n\n<p>\u5b9e\u9645\u4e0a\uff0cKubernetes \u4e2d\u5e38\u7528\u7684 CPU \u8ba1\u91cf\u5355\u4f4d\u662f\u6beb\u6838\uff08Millcores\uff0c\u7f29\u5199 m\uff09\u30021 \u4e2a CPU \u7b49\u4e8e 1000m\u3002\u8fd9\u6837\u53ef\u4ee5\u66f4\u7cbe\u786e\u5730\u5ea6\u91cf\u548c\u5206\u914d CPU \u8d44\u6e90\u3002\u4f8b\u5982\uff0c\u5206\u914d\u7ed9\u67d0\u4e2a\u5bb9\u5668 500m CPU\uff0c\u76f8\u5f53\u4e8e 0.5 \u4e2a CPU\u3002<\/p>\n\n\n\n<p>\u50cf\u5185\u5b58\u8fd9\u6837\u7684\u8d44\u6e90\u88ab\u79f0\u4f5c\u4e0d\u53ef\u538b\u7f29\u8d44\u6e90\u3002\u8fd9\u7c7b\u8d44\u6e90\u4e0d\u8db3\u65f6\uff0c\u53ef\u80fd\u4f1a\u6740\u6b7b Pod \u4e2d\u7684\u8fdb\u7a0b\uff0c\u751a\u81f3\u9a71\u9010\u6574\u4e2a Pod\u3002 \u5bf9\u4e8e\u5185\u5b58\u8d44\u6e90\u6765\u8bf4\uff0c\u6700\u57fa\u672c\u7684\u8ba1\u91cf\u5355\u4f4d\u662f\u5b57\u8282\u3002\u5982\u679c\u6ca1\u6709\u660e\u786e\u6307\u5b9a\u5355\u4f4d\uff0c\u9ed8\u8ba4\u4ee5\u5b57\u8282\u4e3a\u8ba1\u91cf\u5355\u4f4d\u3002\u4e3a\u4e86\u65b9\u4fbf\u4f7f\u7528\uff0cKubernetes \u652f\u6301\u4ee5 Ki\u3001Mi\u3001Gi\u3001Ti\u3001Pi\u3001Ei \u6216 K\u3001M\u3001G\u3001T\u3001P\u3001E \u4e3a\u5355\u4f4d\u6765\u8868\u793a\u5185\u5b58\u5927\u5c0f\u3002\u4f8b\u5982\uff0c\u4e0b\u9762\u662f\u4e00\u4e9b\u76f8\u540c\u5185\u5b58\u503c\u7684\u4e0d\u540c\u8868\u793a\u65b9\u5f0f\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">128974848, 129e6, 129M, 123Mi<\/pre>\n\n\n\n<p>\u6ce8\u610f\u533a\u5206 Mi \u548c M\uff0c1Mi=1024&#215;1024\uff0c1M=1000&#215;1000\u3002\u968f\u7740\u6570\u503c\u7684\u589e\u52a0\uff0cMi \u548c M \u8ba1\u7b97\u7684\u5dee\u5f02\u4f1a\u8d8a\u6765\u8d8a\u5927\uff0c\u56e0\u6b64\u4f7f\u7528\u5e26\u5c0f i \u7684\u66f4\u51c6\u786e\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u5206\u914d<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Kubernetes \u4f7f\u7528\u4ee5\u4e0b\u4e24\u4e2a\u5c5e\u6027\u6765\u63cf\u8ff0 Pod \u7684\u8d44\u6e90\u5206\u914d\u548c\u9650\u5236\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>requests<\/strong>\uff1a\u8868\u793a\u5bb9\u5668\u8bf7\u6c42\u7684\u8d44\u6e90\u91cf\uff0cKubernetes \u4f1a\u786e\u4fdd Pod \u83b7\u5f97\u8fd9\u4e9b\u8d44\u6e90\u3002requests \u662f\u8c03\u5ea6\u7684\u4f9d\u636e\uff0c\u8c03\u5ea6\u5668\u53ea\u6709\u5728\u8282\u70b9\u4e0a\u6709\u8db3\u591f\u53ef\u7528\u8d44\u6e90\u65f6\uff0c\u624d\u4f1a\u5c06 Pod \u8c03\u5ea6\u5230\u8be5\u8282\u70b9\u3002<\/li>\n\n\n\n<li><strong>limits<\/strong>\uff1a\u8868\u793a\u5bb9\u5668\u53ef\u4f7f\u7528\u7684\u8d44\u6e90\u4e0a\u9650\uff0c\u9632\u6b62\u5bb9\u5668\u8fc7\u5ea6\u6d88\u8017\u8d44\u6e90\uff0c\u5bfc\u81f4\u8282\u70b9\u8fc7\u8f7d\u3002limits \u4f1a\u914d\u7f6e\u5230 cgroups \u4e2d\u76f8\u5e94\u4efb\u52a1\u7684 \/sys\/fs\/cgroup \u6587\u4ef6\u4e2d\u3002<\/li>\n<\/ul>\n\n\n\n<p>Pod \u662f\u7531\u4e00\u4e2a\u6216\u591a\u4e2a\u5bb9\u5668\u7ec4\u6210\u7684\uff0c\u56e0\u6b64\u8d44\u6e90\u9700\u6c42\u662f\u5728\u5bb9\u5668\u7ea7\u522b\u8fdb\u884c\u63cf\u8ff0\u7684\u3002\u5982\u56fe 7-32 \u6240\u793a\uff0c\u6bcf\u4e2a\u5bb9\u5668\u90fd\u53ef\u4ee5\u901a\u8fc7 resources \u5c5e\u6027\u5355\u72ec\u8bbe\u5b9a\u76f8\u5e94\u7684 requests \u548c limits\u3002\u4f8b\u5982\uff0ccontainer-1 \u6307\u5b9a\u5176\u5bb9\u5668\u8fdb\u7a0b\u9700\u8981 500m\uff08\u5373 0.5 \u4e2a CPU\uff09\u624d\u80fd\u88ab\u8c03\u5ea6\uff0c\u5e76\u4e14\u5141\u8bb8\u6700\u591a\u4f7f\u7528 1000m\uff08\u5373 1 \u4e2a CPU\uff09\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-1024x541.png\" alt=\"\" class=\"wp-image-18046\" style=\"width:554px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-1024x541.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-300x159.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-768x406.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-1536x812.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-830x439.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-230x122.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-350x185.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368-480x254.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-368.png 2044w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>requests \u548c limits \u9664\u4e86\u7528\u4e8e\u8868\u660e\u8d44\u6e90\u9700\u6c42\u548c\u9650\u5236\u8d44\u6e90\u4f7f\u7528\u4e4b\u5916\uff0c\u8fd8\u6709\u4e00\u4e2a\u9690\u542b\u529f\u80fd\uff0c\u5b83\u51b3\u5b9a\u4e86 Pod \u7684 QoS\uff08Quality of Service\uff0c\u670d\u52a1\u8d28\u91cf\uff09\u7b49\u7ea7\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u670d\u52a1\u8d28\u91cf\u7b49\u7ea7<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Kubernetes \u6839\u636e\u6bcf\u4e2a Pod \u4e2d\u5bb9\u5668\u8d44\u6e90\u914d\u7f6e\u60c5\u51b5\uff0c\u4e3a Pod \u8bbe\u7f6e\u4e0d\u540c\u7684\u670d\u52a1\u8d28\u91cf\uff08QoS\uff0cQuality of Service\uff09\u7b49\u7ea7\u3002\u4e0d\u540c\u7684 QoS \u7b49\u7ea7\u51b3\u5b9a\u4e86\u5f53\u8282\u70b9\u8d44\u6e90\u7d27\u5f20\u65f6\uff0cKubernetes \u8be5\u5982\u4f55\u5904\u7406\u8282\u70b9\u4e0a\u7684 Pod\uff0c\u4e5f\u5c31\u662f\u63a5\u4e0b\u6765\u8981\u8ba8\u8bba\u7684\u9a71\u9010\uff08eviction\uff09\u673a\u5236\u3002<\/p>\n\n\n\n<p>\u56fe 7-33 \u5c55\u793a\u4e86 Pod \u7684 QoS \u7ea7\u522b\u4e0e\u8d44\u6e90\u914d\u7f6e\u4e4b\u95f4\u7684\u5bf9\u5e94\u5173\u7cfb\uff0c\u5177\u4f53\u540d\u79f0\u53ca\u542b\u4e49\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>Guaranteed<\/strong>\uff1aPod \u4e2d\u6bcf\u4e2a\u5bb9\u5668\u5fc5\u987b\u914d\u7f6e\u76f8\u7b49\u7684 CPU \u548c\u5185\u5b58 requests \u4e0e limits\u3002\u6b64\u7c7b Pod \u901a\u5e38\u7528\u4e8e\u9700\u8981\u7a33\u5b9a\u8d44\u6e90\u7684\u5e94\u7528\uff08\u5982\u6570\u636e\u5e93\uff09\u3002\u5728\u8282\u70b9\u8d44\u6e90\u7d27\u5f20\u65f6\uff0cGuaranteed \u7c7b\u578b\u7684 Pod \u6700\u4e0d\u5bb9\u6613\u88ab\u9a71\u9010\u3002<\/li>\n\n\n\n<li><strong>Burstable<\/strong>\uff1aPod \u4e2d\u81f3\u5c11\u6709\u4e00\u4e2a\u5bb9\u5668\u8bbe\u7f6e\u4e86 requests \u6216 limits\uff0c\u4f46\u5e76\u975e\u6240\u6709\u5bb9\u5668\u7684\u8bf7\u6c42\u548c\u9650\u5236\u90fd\u76f8\u7b49\u3002Burstable \u7c7b\u578b\u7684 Pod \u5728\u8d44\u6e90\u4f7f\u7528\u4e0a\u6709\u4e00\u5b9a\u7075\u6d3b\u6027\uff0c\u4f46\u4f18\u5148\u7ea7\u4f4e\u4e8e Guaranteed \u7c7b\u578b\u3002\u5728\u8282\u70b9\u8d44\u6e90\u7d27\u5f20\u65f6\uff0c\u53ef\u80fd\u4f1a\u88ab\u9a71\u9010\u3002<\/li>\n\n\n\n<li><strong>Best Effort<\/strong>\uff1aPod \u4e2d\u7684\u5bb9\u5668\u6ca1\u6709\u8bbe\u7f6e CPU \u6216\u5185\u5b58\u7684 requests \u548c limits\u3002Best Effort \u7c7b\u578b\u7684 Pod \u901a\u5e38\u7528\u4e8e\u4e34\u65f6\u6216\u975e\u5173\u952e\u4efb\u52a1\uff0c\u4f1a\u5c3d\u53ef\u80fd\u4f7f\u7528\u53ef\u7528\u8d44\u6e90\uff0c\u4f46\u5728\u8d44\u6e90\u7d27\u5f20\u65f6\u6700\u5bb9\u6613\u88ab\u9a71\u9010\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-1024x495.png\" alt=\"\" class=\"wp-image-18047\" style=\"width:522px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-1024x495.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-300x145.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-768x371.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-1536x742.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-830x401.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-230x111.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-350x169.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369-480x232.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-369.png 1756w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u4ece\u4e0a\u8ff0\u63cf\u8ff0\u53ef\u89c1\uff0c\u672a\u914d\u7f6e requests \u548c limits \u65f6\uff0cPod \u7684 QoS \u7b49\u7ea7\u6700\u4f4e\uff0c\u5728\u8282\u70b9\u8d44\u6e90\u7d27\u5f20\u65f6\u6700\u5bb9\u6613\u53d7\u5230\u5f71\u54cd\u3002\u56e0\u6b64\uff0c\u5408\u7406\u914d\u7f6e requests \u548c limits \u53c2\u6570\uff0c\u80fd\u591f\u63d0\u9ad8\u8c03\u5ea6\u7cbe\u786e\u5ea6\uff0c\u5e76\u589e\u5f3a\u670d\u52a1\u7684\u7a33\u5b9a\u6027\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8282\u70b9\u8d44\u6e90\u7ba1\u7406<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5728 Kubernetes \u7cfb\u7edf\u4e2d\uff0c\u6bcf\u4e2a\u8282\u70b9\u90fd\u8fd0\u884c\u7740\u5bb9\u5668\u8fd0\u884c\u65f6\uff08\u5982 Docker\u3001containerd\uff09\u4ee5\u53ca\u8d1f\u8d23\u7ba1\u7406\u5bb9\u5668\u7684\u7ec4\u4ef6 kubelet\u3002\u8fd9\u4e9b\u57fa\u7840\u670d\u52a1\u5728\u8282\u70b9\u4e0a\u8fd0\u884c\u65f6\uff0c\u4f1a\u5360\u7528\u4e00\u5b9a\u7684\u8d44\u6e90\u3002\u56e0\u6b64\uff0c\u5f53 Kubernetes \u8fdb\u884c\u8d44\u6e90\u7ba1\u7406\u65f6\uff0c\u5fc5\u987b\u4e3a\u8fd9\u4e9b\u57fa\u7840\u670d\u52a1\u9884\u5148\u5206\u914d\u4e00\u90e8\u5206\u8d44\u6e90\u3002<\/p>\n\n\n\n<p>Kubelet \u901a\u8fc7\u4e0b\u9762\u4e24\u4e2a\u53c2\u6570\uff0c\u63a7\u5236\u8282\u70b9\u4e0a\u57fa\u7840\u670d\u52a1\u7684\u8d44\u6e90\u9884\u7559\u989d\u5ea6\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>&#8211;kube-reserved<\/strong>=[cpu=100m][,][memory=100Mi][,][ephemeral-storage=1Gi]\uff1a\u9884\u7559\u7ed9 Kubernetes \u7ec4\u4ef6 CPU\u3001\u5185\u5b58\u548c\u5b58\u50a8\u8d44\u6e90\u3002<\/li>\n\n\n\n<li><strong>&#8211;system-reserved<\/strong>=[cpu=100mi][,][memory=100Mi][,][ephemeral-storage=1Gi]\uff1a\u9884\u7559\u7ed9\u64cd\u4f5c\u7cfb\u7edf\u7684 CPU\u3001\u5185\u5b58\u548c\u5b58\u50a8\u8d44\u6e90\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u8003\u8651 Kubernetes \u9a71\u9010\u673a\u5236\uff0ckubelet \u4f1a\u786e\u4fdd\u8282\u70b9\u4e0a\u7684\u8d44\u6e90\u4f7f\u7528\u7387\u4e0d\u4f1a\u8fbe\u5230 100%\u3002\u56e0\u6b64\uff0cPod \u5b9e\u9645\u53ef\u7528\u7684\u8d44\u6e90\u4f1a\u66f4\u5c11\u4e00\u4e9b\u3002\u6700\u7ec8\uff0c\u4e00\u4e2a\u8282\u70b9\u7684\u8d44\u6e90\u5206\u914d\u5982\u56fe 7-34 \u6240\u793a\u3002<\/p>\n\n\n\n<p>Node Allocatable Resource\uff08\u8282\u70b9\u53ef\u5206\u914d\u8d44\u6e90\uff09= Node Capacity\uff08\u8282\u70b9\u6240\u6709\u8d44\u6e90\uff09 &#8211; Kube Reserved\uff08Kubernetes \u7ec4\u4ef6\u9884\u7559\u8d44\u6e90\uff09- System Reserved\uff08\u7cfb\u7edf\u9884\u7559\u8d44\u6e90\uff09- Eviction Threshold\uff08\u4e3a\u9a71\u9010\u9884\u7559\u7684\u8d44\u6e90\uff09\u3002<\/p>\n\n\n\n<p>\u56fe  Node \u8d44\u6e90\u5206\u914d<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"931\" height=\"1024\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-931x1024.png\" alt=\"\" class=\"wp-image-18048\" style=\"width:406px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-931x1024.png 931w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-273x300.png 273w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-768x844.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-1397x1536.png 1397w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-830x912.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-230x253.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-350x385.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370-480x528.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-370.png 1550w\" sizes=\"(max-width: 931px) 100vw, 931px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u9a71\u9010\u673a\u5236<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5f53\u4e0d\u53ef\u538b\u7f29\u7c7b\u578b\u7684\u8d44\u6e90\uff08\u5982\u53ef\u7528\u5185\u5b58 memory.available\u3001\u5bbf\u4e3b\u673a\u78c1\u76d8\u7a7a\u95f4 nodefs.available\u3001\u955c\u50cf\u5b58\u50a8\u7a7a\u95f4 imagefs.available\uff09\u4e0d\u8db3\u65f6\uff0c\u4fdd\u8bc1\u8282\u70b9\u7a33\u5b9a\u7684\u624b\u6bb5\u662f\u9a71\u9010\uff08Eviction\uff09\u90a3\u4e9b\u4e0d\u592a\u91cd\u8981\u7684 Pod\uff0c\u4f7f\u5176\u80fd\u591f\u91cd\u65b0\u8c03\u5ea6\u5230\u5176\u4ed6\u8282\u70b9\u3002<\/p>\n\n\n\n<p>\u627f\u62c5\u4e0a\u8ff0\u804c\u8d23\u7684\u7ec4\u4ef6\u4e3a kubelet\u3002kubelet \u8fd0\u884c\u5728\u8282\u70b9\u4e0a\uff0c\u80fd\u591f\u8f7b\u677e\u611f\u77e5\u8282\u70b9\u7684\u8d44\u6e90\u8017\u7528\u60c5\u51b5\u3002\u5f53 kubelet \u53d1\u73b0\u4e0d\u53ef\u538b\u7f29\u7c7b\u578b\u7684\u8d44\u6e90\u5373\u5c06\u8017\u5c3d\u65f6\uff0c\u89e6\u53d1\u4e24\u7c7b\u9a71\u9010\u7b56\u7565\u3002<\/p>\n\n\n\n<p>kubelet \u7684\u7b2c\u4e00\u79cd\u9a71\u9010\u7b56\u7565\u662f\u8f6f\u9a71\u9010\uff08soft eviction\uff09\u3002<\/p>\n\n\n\n<p>\u7531\u4e8e\u8282\u70b9\u8d44\u6e90\u8017\u7528\u53ef\u80fd\u662f\u4e34\u65f6\u6027\u6ce2\u52a8\uff0c\u901a\u5e38\u4f1a\u5728\u51e0\u5341\u79d2\u5185\u6062\u590d\u3002\u56e0\u6b64\uff0c\u5f53\u8d44\u6e90\u8017\u7528\u8fbe\u5230\u8bbe\u5b9a\u9608\u503c\u65f6\uff0c\u5e94\u5148\u89c2\u5bdf\u4e00\u6bb5\u65f6\u95f4\u518d\u51b3\u5b9a\u662f\u5426\u89e6\u53d1\u9a71\u9010\u64cd\u4f5c\u3002\u4e0e\u8f6f\u9a71\u9010\u76f8\u5173\u7684 kubelet \u914d\u7f6e\u53c2\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>&#8211;eviction-soft<\/strong>\uff1a\u8f6f\u9a71\u9010\u89e6\u53d1\u6761\u4ef6\u3002\u4f8b\u5982\uff0c\u53ef\u7528\u5185\u5b58\uff08memory.available\uff09&lt; 500Mi\uff0c\u53ef\u7528\u78c1\u76d8\u7a7a\u95f4\uff08nodefs.available\uff09&lt; 10% \u7b49\u7b49\u3002<\/li>\n\n\n\n<li><strong>&#8211;eviction-soft-grace-period<\/strong>\uff1a\u8f6f\u9a71\u9010\u5bbd\u9650\u671f\u3002\u4f8b\u5982\uff0cmemory.available=2m30s\uff0c\u5373\u53ef\u7528\u5185\u5b58 &lt; 500Mi\uff0c\u5e76\u6301\u7eed 2m30s \u540e\uff0c\u624d\u771f\u6b63\u5f00\u59cb\u9a71\u9010 Pod\u3002<\/li>\n\n\n\n<li><strong>&#8211;eviction-max-pod-grace-period<\/strong>\uff1aPod \u4f18\u96c5\u7ec8\u6b62\u5bbd\u9650\u671f\uff0c\u8be5\u53c2\u6570\u51b3\u5b9a\u7ed9 Pod \u591a\u5c11\u65f6\u95f4\u6765\u4f18\u96c5\u5730\u5173\u95ed\uff08graceful shutdown\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>kubelet \u7684\u7b2c\u4e8c\u79cd\u9a71\u9010\u7b56\u7565\u662f\u786c\u9a71\u9010\uff08hard eviction\uff09\u3002<\/p>\n\n\n\n<p>\u786c\u9a71\u9010\u4e3b\u8981\u5173\u6ce8\u8282\u70b9\u7a33\u5b9a\u6027\uff0c\u9632\u6b62\u8d44\u6e90\u8017\u5c3d\u5bfc\u81f4\u8282\u70b9\u4e0d\u53ef\u7528\u3002\u786c\u9a71\u9010\u76f8\u5f53\u76f4\u63a5\uff0c\u5f53 kubelet \u53d1\u73b0\u8282\u70b9\u8d44\u6e90\u8017\u7528\u8fbe\u5230\u786c\u9a71\u9010\u9608\u503c\u65f6\uff0c\u4f1a\u7acb\u5373\u6740\u6b7b\u76f8\u5e94\u7684 Pod\u3002\u4e0e\u786c\u9a71\u9010\u76f8\u5173\u7684 kubelet \u914d\u7f6e\u53c2\u6570\u4ec5\u6709 &#8211;eviction-hard\uff0c\u5176\u914d\u7f6e\u65b9\u5f0f\u4e0e &#8211;eviction-soft \u4e00\u81f4\uff0c\u7b14\u8005\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002<\/p>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5f53 kubelet \u9a71\u9010\u90e8\u5206 Pod \u540e\uff0c\u8282\u70b9\u7684\u8d44\u6e90\u4f7f\u7528\u53ef\u80fd\u5728\u4e00\u6bb5\u65f6\u95f4\u540e\u518d\u6b21\u8fbe\u5230\u9608\u503c\uff0c\u8fdb\u800c\u89e6\u53d1\u65b0\u7684\u9a71\u9010\uff0c\u5f62\u6210\u5faa\u73af\uff0c\u8fd9\u79cd\u73b0\u8c61\u79f0\u4e3a\u201c\u9a71\u9010\u6ce2\u52a8\u201d\u3002\u4e3a\u4e86\u9884\u9632\u8fd9\u79cd\u60c5\u51b5\uff0ckubelet \u9884\u7559\u4e86\u4ee5\u4e0b\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>&#8211;eviction-minimum-reclaim<\/strong>\uff1a\u51b3\u5b9a\u6bcf\u6b21\u9a71\u9010\u65f6\u81f3\u5c11\u8981\u56de\u6536\u7684\u8d44\u6e90\u91cf\uff0c\u4ee5\u505c\u6b62\u9a71\u9010\u64cd\u4f5c\uff1b<\/li>\n\n\n\n<li><strong>&#8211;eviction-pressure-transition-period<\/strong>\uff1a\u51b3\u5b9a kubelet \u4e0a\u62a5\u8282\u70b9\u72b6\u6001\u7684\u65f6\u95f4\u95f4\u9694\u3002\u8f83\u77ed\u7684\u4e0a\u62a5\u5468\u671f\u53ef\u80fd\u5bfc\u81f4\u9891\u7e41\u66f4\u6539\u8282\u70b9\u72b6\u6001\uff0c\u4ece\u800c\u5f15\u53d1\u9a71\u9010\u6ce2\u52a8\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6700\u540e\uff0c\u4ee5\u4e0b\u662f\u4e0e\u9a71\u9010\u76f8\u5173\u7684 kubelet \u914d\u7f6e\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ kubelet --eviction-soft=memory.available&lt;500Mi,nodefs.available &lt; 10%,nodefs.inodesFree &lt; 5%,imagefs.available &lt; 15% \\\n--eviction-soft-grace-period=memory.available=1m30s,nodefs.available=1m30s \\\n--eviction-max-pod-grace-period=120 \\\n--eviction-hard=memory.available&lt;500Mi,nodefs.available &lt; 5% \\\n--eviction-pressure-transition-period=30s \\\n--eviction-minimum-reclaim=\"memory.available=500Mi,nodefs.available=500Mi,imagefs.available=1Gi\"\n<\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u6269\u5c55\u8d44\u6e90\u4e0e\u8bbe\u5907\u63d2\u4ef6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5728 Kubernetes \u4e2d\uff0c\u8282\u70b9\u7684\u6807\u51c6\u8d44\u6e90\uff08\u5982 CPU\u3001\u5185\u5b58\u548c\u5b58\u50a8\uff09\u7531 Kubelet \u81ea\u52a8\u62a5\u544a\uff0c\u4f46\u8282\u70b9\u5185\u7684\u5f02\u6784\u786c\u4ef6\u8d44\u6e90\uff08\u5982 GPU\u3001FPGA\u3001RDMA \u6216\u786c\u4ef6\u52a0\u901f\u5668\uff09\uff0cKubernetes \u5e76\u672a\u8bc6\u522b\u548c\u7ba1\u7406\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u6269\u5c55\u8d44\u6e90<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4f5c\u4e3a\u901a\u7528\u7684\u5bb9\u5668\u7f16\u6392\u5e73\u53f0\uff0cKubernetes \u9700\u8981\u96c6\u6210\u5404\u79cd\u5f02\u6784\u786c\u4ef6\u8d44\u6e90\uff0c\u4ee5\u6ee1\u8db3\u66f4\u5e7f\u6cdb\u7684\u8ba1\u7b97\u9700\u6c42\u3002\u4e3a\u6b64\uff0cKubernetes \u63d0\u4f9b\u4e86\u201c\u6269\u5c55\u8d44\u6e90\u201d\uff08Extended Resource\uff09\u673a\u5236\uff0c\u5141\u8bb8\u7528\u6237\u50cf\u4f7f\u7528\u6807\u51c6\u8d44\u6e90\u4e00\u6837\u58f0\u660e\u548c\u8c03\u5ea6\u7279\u6b8a\u786c\u4ef6\u8d44\u6e90\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u8ba9\u8c03\u5ea6\u5668\u4e86\u89e3\u8282\u70b9\u7684\u5f02\u6784\u8d44\u6e90\uff0c\u8282\u70b9\u9700\u5411 API Server \u62a5\u544a\u8d44\u6e90\u60c5\u51b5\u3002\u62a5\u544a\u65b9\u5f0f\u662f\u901a\u8fc7\u5411 Kubernetes API Server \u53d1\u9001 HTTP PATCH \u8bf7\u6c42\u3002\u4f8b\u5982\uff0c\u67d0\u8282\u70b9\u62e5\u6709 4 \u4e2a GPU \u8d44\u6e90\uff0c\u4ee5\u4e0b\u662f\u76f8\u5e94\u7684 PATCH \u8bf7\u6c42\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PATCH \/api\/v1\/nodes\/&lt;your-node-name>\/status HTTP\/1.1\nAccept: application\/json\nContent-Type: application\/json-patch+json\nHost: k8s-master:8080\n[\n  {\n    \"op\": \"add\",\n    \"path\": \"\/status\/capacity\/nvidia.com~1gpu\",\n    \"value\": \"4\"\n  }\n]<\/pre>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u4e0a\u8ff0 PATCH \u8bf7\u6c42\u4ec5\u544a\u77e5 Kubernetes\uff0c\u8282\u70b9 <code>&lt;your-node-name&gt;<\/code> \u62e5\u6709 4 \u4e2a\u540d\u4e3a GPU \u7684\u8d44\u6e90\uff0c\u4f46 Kubernetes \u5e76\u4e0d\u7406\u89e3 GPU \u8d44\u6e90\u7684\u5177\u4f53\u542b\u4e49\u548c\u7528\u9014\u3002<\/p>\n\n\n\n<p>\u63a5\u7740\uff0c\u8fd0\u884c kubectl describe node \u547d\u4ee4\uff0c\u67e5\u770b\u8282\u70b9\u8d44\u6e90\u60c5\u51b5\u3002\u4ece\u8f93\u51fa\u7ed3\u679c\u4e2d\u53ef\u4ee5\u770b\u5230\uff0c\u4e4b\u524d\u6269\u5c55\u7684 nvidia.com\/gpu \u8d44\u6e90\u5bb9\u91cf\u4e3a 4\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ kubectl describe node &lt;your-node-name>\n...\nStatus\n  Capacity:\n  \tcpu: 2\n  \tmemory: 2049008Ki\n  \tnvidia.com\/gpu: 4<\/pre>\n\n\n\n<p>\u5728\u5b8c\u6210\u4e0a\u8ff0\u64cd\u4f5c\u540e\uff0c\u914d\u7f6e Pod \u7684 YAML \u6587\u4ef6\u65f6\uff0c\u5c31\u53ef\u4ee5\u50cf\u914d\u7f6e\u6807\u51c6\u8d44\u6e90\uff08\u5982 CPU \u548c\u5185\u5b58\uff09\u4e00\u6837\uff0c\u4e3a\u81ea\u5b9a\u4e49\u8d44\u6e90\uff08\u4f8b\u5982 nvidia.com\/gpu\uff09\u8bbe\u7f6e request \u548c limits\u3002\u4ee5\u4e0b\u662f\u5305\u542b nvidia.com\/gpu \u8d44\u6e90\u7533\u8bf7\u7684 Pod \u914d\u7f6e\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: gpu-pod\nspec:\n  containers:\n    - name: cuda-container\n      image: nvidia\/cuda:10.0-base\n      resources:\n        request:\n          nvidia.com\/gpu: 1\n<\/pre>\n\n\n\n<p>\u5728\u4e0a\u8ff0 Pod \u8d44\u6e90\u914d\u7f6e\u4e2d\uff0cGPU \u7684\u8d44\u6e90\u540d\u79f0\u4e3a nvidia.com\/gpu\uff0c\u5e76\u4e14\u4e3a\u5176\u5206\u914d\u4e86 1 \u4e2a\u8be5\u8d44\u6e90\u7684\u914d\u989d\u3002\u8fd9\u8868\u660e Kubernetes \u8c03\u5ea6\u5668\u4f1a\u5c06\u8be5 Pod \u8c03\u5ea6\u5230\u5177\u6709\u8db3\u591f nvidia.com\/gpu \u8d44\u6e90\u7684\u8282\u70b9\u4e0a\u3002<\/p>\n\n\n\n<p>\u4e00\u65e6 Pod \u6210\u529f\u8c03\u5ea6\u5230\u76ee\u6807\u8282\u70b9\uff0c\u7cfb\u7edf\u5c06\u81ea\u52a8\u6267\u884c\u4e00\u7cfb\u5217\u914d\u7f6e\u64cd\u4f5c\uff0c\u4f8b\u5982\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u3001\u6302\u8f7d GPU \u8bbe\u5907\u9a71\u52a8\u7b49\u3002\u8fd9\u4e9b\u64cd\u4f5c\u5b8c\u6210\u540e\uff0c\u5bb9\u5668\u5185\u7684\u7a0b\u5e8f\u4fbf\u53ef\u4f7f\u7528 GPU \u8d44\u6e90\u4e86\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8bbe\u5907\u63d2\u4ef6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u9664\u975e\u7279\u6b8a\u60c5\u51b5\uff0c\u901a\u5e38\u4e0d\u9700\u7528\u624b\u52a8\u7684\u65b9\u5f0f\u6269\u5c55\u5f02\u6784\u8d44\u6e90\u3002<\/p>\n\n\n\n<p>\u5728 Kubernetes \u4e2d\uff0c\u7ba1\u7406\u5f02\u6784\u8d44\u6e90\u4e3b\u8981\u901a\u8fc7\u4e00\u79cd\u79f0\u4e3a<strong>\u8bbe\u5907\u63d2\u4ef6<\/strong>\uff08Device Plugin\uff09\u7684\u673a\u5236\u8d1f\u8d23\u3002\u8be5\u673a\u5236\u7684\u539f\u7406\u662f\uff0c\u901a\u8fc7\u5b9a\u4e49\u4e00\u7cfb\u5217\u6807\u51c6\u5316\u7684 gRPC \u63a5\u53e3\uff0c\u4f7f kubelet \u80fd\u591f\u4e0e\u8bbe\u5907\u63d2\u4ef6\u8fdb\u884c\u4ea4\u4e92\uff0c\u4ece\u800c\u5b9e\u73b0\u8bbe\u5907\u53d1\u73b0\u3001\u72b6\u6001\u66f4\u65b0\u4ee5\u53ca\u8d44\u6e90\u4e0a\u62a5\u7b49\u529f\u80fd\u3002<\/p>\n\n\n\n<p>\u5177\u4f53\u6765\u8bf4\uff0c\u8bbe\u5907\u63d2\u4ef6\u5b9a\u4e49\u4e86\u5982\u4e0b gRPC \u63a5\u53e3\uff0c\u786c\u4ef6\u8bbe\u5907\u63d2\u4ef6\u6309\u7167\u8fd9\u4e9b\u89c4\u8303\u5b9e\u73b0\u63a5\u53e3\u540e\uff0c\u5373\u53ef\u4e0e kubelet \u8fdb\u884c\u4ea4\u4e92\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">service DevicePlugin {\n\t\/\/ \u8fd4\u56de\u8bbe\u5907\u63d2\u4ef6\u7684\u914d\u7f6e\u9009\u9879\u3002\n\trpc GetDevicePluginOptions(Empty) returns (DevicePluginOptions) {}\n\t\/\/ \u5b9e\u65f6\u76d1\u63a7\u8bbe\u5907\u8d44\u6e90\u7684\u72b6\u6001\u53d8\u5316\uff0c\u5e76\u5c06\u8bbe\u5907\u8d44\u6e90\u4fe1\u606f\u4e0a\u62a5\u81f3 Etcd \u4e2d\u3002\n\trpc ListAndWatch(Empty) returns (stream ListAndWatchResponse) {}\n\t\/\/ \u6267\u884c\u7279\u5b9a\u8bbe\u5907\u7684\u521d\u59cb\u5316\u64cd\u4f5c\uff0c\u5e76\u544a\u77e5 kubelet \u5982\u4f55\u4f7f\u8bbe\u5907\u5728\u5bb9\u5668\u4e2d\u53ef\u7528\u3002\n\trpc Allocate(AllocateRequest) returns (AllocateResponse) {}\n\n\t\/\/ \u4ece\u4e00\u7ec4\u53ef\u7528\u7684\u8bbe\u5907\u4e2d\u8fd4\u56de\u4e00\u4e9b\u4f18\u9009\u7684\u8bbe\u5907\u7528\u6765\u5206\u914d\u3002\n\trpc GetPreferredAllocation(PreferredAllocationRequest) returns (PreferredAllocationResponse) {}\n\n\t\/\/ \u5728\u5bb9\u5668\u542f\u52a8\u4e4b\u524d\u8c03\u7528\uff0c\u7528\u4e8e\u7279\u5b9a\u4e8e\u8bbe\u5907\u7684\u521d\u59cb\u5316\u64cd\u4f5c\u3002\u786e\u4fdd\u5bb9\u5668\u80fd\u591f\u6b63\u786e\u5730\u8bbf\u95ee\u548c\u4f7f\u7528\u7279\u5b9a\u7684\u786c\u4ef6\u8d44\u6e90\u3002\n\trpc PreStartContainer(PreStartContainerRequest) returns (PreStartContainerResponse) {}\n}\n<\/pre>\n\n\n\n<p>\u76ee\u524d\uff0cKubernetes \u793e\u533a\u5df2\u6709\u591a\u4e2a\u4e13\u7528\u8bbe\u5907\u63d2\u4ef6\uff0c\u6db5\u76d6 NVIDIA GPU\u3001Intel GPU\u3001AMD GPU\u3001FPGA \u548c RDMA \u7b49\u786c\u4ef6\u3002\u4ee5 GPU \u8bbe\u5907\u63d2\u4ef6\u4e3a\u4f8b\uff0c\u5176\u5de5\u4f5c\u539f\u7406\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u8bbe\u5907\u53d1\u73b0\u4e0e\u6ce8\u518c<\/strong>\uff1a\u8bbe\u5907\u63d2\u4ef6\u5728\u8282\u70b9\u4e0a\u8fd0\u884c\uff0c\u81ea\u52a8\u68c0\u6d4b\u5e76\u5c06 GPU \u8d44\u6e90\u6ce8\u518c\u5230 Kubernetes API\uff0c\u4f8b\u5982\uff0cNVIDIA GPU \u8bbe\u5907\u63d2\u4ef6\u5c06 GPU \u6ce8\u518c\u4e3a nvidia.com\/gpu\uff1b<\/li>\n\n\n\n<li><strong>\u8d44\u6e90\u66b4\u9732\u4e0e\u5206\u914d<\/strong>\uff1a\u8bbe\u5907\u63d2\u4ef6\u901a\u8fc7 Kubernetes API \u5c06 GPU \u8d44\u6e90\u66b4\u9732\u7ed9 Pod\uff0cPod \u53ef\u901a\u8fc7 request \u548c limit \u5b57\u6bb5\u58f0\u660e\u6240\u9700\u7684 GPU \u8d44\u6e90\uff0c\u4f8b\u5982\uff0cPod \u53ef\u4ee5\u5728 limits \u4e2d\u6307\u5b9a nvidia.com\/gpu: 1 \u6765\u8bf7\u6c42\u4e00\u4e2a NVIDIA GPU\uff1b<\/li>\n\n\n\n<li><strong>\u8c03\u5ea6\u4e0e\u4f7f\u7528<\/strong>\uff1a\u5f53 Pod \u8bf7\u6c42\u7279\u6b8a\u786c\u4ef6\u8d44\u6e90\u65f6\uff0cKubernetes \u8c03\u5ea6\u5668\u6839\u636e\u8282\u70b9\u7684\u8d44\u6e90\u72b6\u6001\u548c Pod \u7684\u9700\u6c42\u8fdb\u884c\u8c03\u5ea6\u3002\u4e00\u65e6 Pod \u88ab\u8c03\u5ea6\u5e76\u5206\u914d\u4e86\u8d44\u6e90\uff0ckubelet \u8c03\u7528\u8bbe\u5907\u63d2\u4ef6\u7684 Allocate \u63a5\u53e3\u83b7\u53d6\u8bbe\u5907\u914d\u7f6e\u4fe1\u606f\uff08\u5982\u8bbe\u5907\u8def\u5f84\u3001\u9a71\u52a8\u76ee\u5f55\uff09\uff0c\u5e76\u5c06\u8fd9\u4e9b\u4fe1\u606f\u6dfb\u52a0\u5230\u5bb9\u5668\u521b\u5efa\u8bf7\u6c42\u4e2d\u3002\u6700\u7ec8\uff0c\u5bb9\u5668\u8fd0\u884c\u65f6\uff08\u5982 Docker\u3001Containerd\uff09\u4f1a\u5c06\u786c\u4ef6\u9a71\u52a8\u76ee\u5f55\u6302\u8f7d\u5230\u5bb9\u5668\u5185\uff0c\u5bb9\u5668\u4e2d\u7684\u5e94\u7528\u7a0b\u5e8f\u5373\u53ef\u76f4\u63a5\u8bbf\u95ee\u8fd9\u4e9b\u8bbe\u5907\u4e86\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"549\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-1024x549.png\" alt=\"\" class=\"wp-image-18050\" style=\"width:578px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-1024x549.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-300x161.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-768x412.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-1536x823.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-830x445.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-230x123.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-350x188.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372-480x257.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-372.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u6700\u540e\uff0c\u518d\u6765\u770b\u6269\u5c55\u8d44\u6e90\u548c\u8bbe\u5907\u63d2\u4ef6\u7684\u95ee\u9898\u3002Pod \u53ea\u80fd\u901a\u8fc7\u7c7b\u4f3c\u201cnvidia.com\/gpu:2\u201d\u7684\u8ba1\u6570\u65b9\u5f0f\u7533\u8bf7 2 \u4e2a GPU\uff0c\u4f46\u8fd9\u4e9b GPU \u7684\u5177\u4f53\u578b\u53f7\u3001\u62d3\u6251\u7ed3\u6784\u3001\u662f\u5426\u5171\u4eab\u7b49\u5c5e\u6027\u5e76\u4e0d\u660e\u786e\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u8bbe\u5907\u63d2\u4ef6\u4ec5\u5b9e\u73b0\u4e86\u57fa\u672c\u7684\u5165\u95e8\u7ea7\u529f\u80fd\uff0c\u80fd\u7528\uff0c\u4f46\u4e0d\u597d\u7528\u3002<\/p>\n\n\n\n<p>\u5728\u201c\u6210\u672c\u8981\u7701\u201d\u3001\u201c\u8d44\u6e90\u5229\u7528\u7387\u8981\u9ad8\u201d\u80cc\u666f\u63a8\u52a8\u4e0b\uff0cNvidia\u3001Intel \u7b49\u5934\u90e8\u5382\u5546\u8054\u5408\u63a8\u51fa\u4e86\u201c\u52a8\u6001\u8d44\u6e90\u5206\u914d\u201d\uff08Dynamic Resource Allocation\uff0cDRA\uff09\u673a\u5236\uff0c\u5141\u8bb8\u7528\u6237\u4ee5\u66f4\u590d\u6742\u7684\u65b9\u5f0f\u63cf\u8ff0\u5f02\u6784\u8d44\u6e90\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u7b80\u5355\u7684\u8ba1\u6570\u5f62\u5f0f\u3002DRA \u5c5e\u4e8e\u8f83\u65b0\u7684\u673a\u5236\uff0c\u5177\u4f53\u7684\u63a5\u53e3\u89c4\u8303\u56e0\u786c\u4ef6\u4f9b\u5e94\u5546\u548c Kubernetes \u7248\u672c\u4e0d\u540c\u800c\u6709\u6240\u53d8\u5316\u3002\u9650\u4e8e\u7bc7\u5e45\uff0c\u7b14\u8005\u5c31\u4e0d\u518d\u6269\u5c55\u8ba8\u8bba\u4e86\uff0c\u6709\u5174\u8da3\u7684\u8bfb\u8005\u8bf7\u67e5\u9605\u5176\u4ed6\u8d44\u6599\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u9ed8\u8ba4\u8c03\u5ea6\u5668\u53ca\u6269\u5c55\u8bbe\u8ba1<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u5982\u679c\u8282\u70b9\u53ea\u6709\u51e0\u5341\u4e2a\uff0c\u4e3a\u65b0\u5efa\u7684 Pod \u627e\u5230\u5408\u9002\u7684\u8282\u70b9\u5e76\u4e0d\u56f0\u96be\u3002\u4f46\u5f53\u8282\u70b9\u7684\u6570\u91cf\u6269\u5927\u5230\u51e0\u5343\u53f0\u751a\u81f3\u66f4\u591a\u65f6\uff0c\u60c5\u51b5\u5c31\u590d\u6742\u4e86\uff1a<\/p>\n\n\n\n<ul>\n<li>\u9996\u5148\uff0c\u8282\u70b9\u8d44\u6e90\u65e0\u65f6\u65e0\u523b\u4e0d\u5728\u53d8\u5316\uff0c\u5982\u679c\u6bcf\u6b21\u8c03\u5ea6\u90fd\u9700\u8981\u6570\u5343\u6b21\u8fdc\u7a0b\u8bf7\u6c42\u83b7\u53d6\u4fe1\u606f\uff0c\u52bf\u5fc5\u56e0\u8017\u65f6\u8fc7\u957f\uff0c\u589e\u52a0\u8c03\u5ea6\u5931\u8d25\u7684\u98ce\u9669\u3002<\/li>\n\n\n\n<li>\u5176\u6b21\uff0c\u8c03\u5ea6\u5668\u9891\u7e41\u53d1\u8d77\u7f51\u7edc\u8bf7\u6c42\uff0c\u6781\u5bb9\u6613\u6210\u4e3a\u96c6\u7fa4\u7684\u6027\u80fd\u74f6\u9888\uff0c\u5f71\u54cd\u6574\u4e2a\u96c6\u7fa4\u7684\u8fd0\u884c\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\u4e3a\u4e86\u5145\u5206\u5229\u7528\u786c\u4ef6\u8d44\u6e90\uff0c\u901a\u5e38\u4f1a\u5c06\u5404\u79cd\u7c7b\u578b(CPU \u5bc6\u96c6\u3001IO \u5bc6\u96c6\u3001\u6279\u91cf\u5904\u7406\u3001\u4f4e\u5ef6\u8fdf\u4f5c\u4e1a)\u7684 workloads \u8fd0\u884c\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\uff0c\u8fd9\u79cd\u65b9\u5f0f\u51cf\u5c11\u4e86\u786c\u4ef6\u4e0a\u7684\u6295\u5165\uff0c\u4f46\u4e5f\u4f7f\u8c03\u5ea6\u95ee\u9898\u66f4\u52a0\u590d\u6742\u3002<br><br>\u968f\u7740\u96c6\u7fa4\u89c4\u6a21\u7684\u589e\u5927\uff0c\u9700\u8981\u8c03\u5ea6\u7684\u4efb\u52a1\u7684\u89c4\u6a21\u4e5f\u7ebf\u6027\u589e\u5927\uff0c\u7531\u4e8e\u8c03\u5ea6\u5668\u7684\u5de5\u4f5c\u8d1f\u8f7d\u4e0e\u96c6\u7fa4\u5927\u5c0f\u5927\u81f4\u6210\u6bd4\u4f8b\uff0c\u8c03\u5ea6\u5668\u6709\u6210\u4e3a\u53ef\u4f38\u7f29\u6027\u74f6\u9888\u7684\u98ce\u9669\u3002<\/pre>\n\n\n\n<p>Omega \u8bba\u6587\u4e2d\u63d0\u51fa\u4e86\u4e00\u79cd\u57fa\u4e8e\u201c\u5171\u4eab\u72b6\u6001\u201d\uff08Scheduler Cache\uff09\u7684\u53cc\u5faa\u73af\u8c03\u5ea6\u673a\u5236\uff0c\u7528\u6765\u89e3\u51b3\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u8c03\u5ea6\u6548\u7387\u95ee\u9898\u3002\u53cc\u5faa\u73af\u7684\u8c03\u5ea6\u673a\u5236\u4e0d\u4ec5\u5e94\u7528\u5728 Google \u7684 Omega \u7cfb\u7edf\u4e2d\uff0c\u4e5f\u88ab Kubernetes \u7ee7\u627f\u4e0b\u6765\u3002<\/p>\n\n\n\n<p>Kubernetes \u9ed8\u8ba4\u8c03\u5ea6\u5668\uff08kube-scheduler\uff09\u53cc\u5faa\u73af\u8c03\u5ea6\u673a\u5236\u5982\u56fe 7-36 \u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"488\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-1024x488.png\" alt=\"\" class=\"wp-image-18052\" style=\"width:546px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-1024x488.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-300x143.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-768x366.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-1536x733.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-2048x977.png 2048w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-830x396.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-230x110.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-350x167.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-374-480x229.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u6839\u636e\u56fe 7-36 \u53ef\u4ee5\u770b\u51fa\uff0cKubernetes \u8c03\u5ea6\u7684\u6838\u5fc3\u5728\u4e8e\u4e24\u4e2a\u4e92\u76f8\u72ec\u7acb\u7684\u63a7\u5236\u5faa\u73af\u3002<\/p>\n\n\n\n<p>\u7b2c\u4e00\u4e2a\u63a7\u5236\u5faa\u73af\u88ab\u79f0\u4e3a\u201cInformer \u5faa\u73af\u201d\u3002\u5176\u4e3b\u8981\u903b\u8f91\u662f\u542f\u52a8\u591a\u4e2a Informer \u6765\u76d1\u542c API \u8d44\u6e90\uff08\u4e3b\u8981\u662f Pod \u548c Node\uff09\u72b6\u6001\u7684\u53d8\u5316\u3002\u4e00\u65e6\u8d44\u6e90\u53d1\u751f\u53d8\u5316\uff0cInformer \u4f1a\u89e6\u53d1\u56de\u8c03\u51fd\u6570\u8fdb\u884c\u8fdb\u4e00\u6b65\u5904\u7406\u3002\u4f8b\u5982\uff0c\u5f53\u4e00\u4e2a\u5f85\u8c03\u5ea6\u7684 Pod \u88ab\u521b\u5efa\u65f6\uff0cPod Informer \u4f1a\u89e6\u53d1\u56de\u8c03\uff0c\u5c06 Pod \u5165\u961f\u5230\u8c03\u5ea6\u961f\u5217\uff08PriorityQueue\uff09\uff0c\u4ee5\u4fbf\u5728\u4e0b\u4e00\u9636\u6bb5\u5904\u7406\u3002<\/p>\n\n\n\n<p>\u5f53 API \u8d44\u6e90\u53d1\u751f\u53d8\u5316\u65f6\uff0cInformer \u7684\u56de\u8c03\u51fd\u6570\u8fd8\u8d1f\u8d23\u66f4\u65b0\u8c03\u5ea6\u5668\u7f13\u5b58\uff08Scheduler Cache\uff09\uff0c\u4ee5\u4fbf\u5c06 Pod \u548c Node \u4fe1\u606f\u5c3d\u53ef\u80fd\u7f13\u5b58\uff0c\u4ece\u800c\u63d0\u9ad8\u540e\u7eed\u8c03\u5ea6\u7b97\u6cd5\u7684\u6267\u884c\u6548\u7387\u3002<\/p>\n\n\n\n<p>\u7b2c\u4e8c\u4e2a\u63a7\u5236\u5faa\u73af\u662f\u201cScheduling \u5faa\u73af\u201d\u3002\u5176\u4e3b\u8981\u903b\u8f91\u662f\u4ece\u8c03\u5ea6\u961f\u5217\uff08PriorityQueue\uff09\u4e2d\u4e0d\u65ad\u51fa\u961f\u4e00\u4e2a Pod\uff0c\u5e76\u89e6\u53d1\u4e24\u4e2a\u6838\u5fc3\u7684\u8c03\u5ea6\u9636\u6bb5\uff1a\u9884\u9009\u9636\u6bb5\uff08\u56fe 7-36 \u4e2d\u7684 Predicates\uff09\u548c\u4f18\u9009\u9636\u6bb5\uff08\u56fe 7-36 \u4e2d\u7684 Priority\uff09\u3002<\/p>\n\n\n\n<p>Kubernetes \u4ece v1.15 \u7248\u672c\u8d77\uff0c\u4e3a\u9ed8\u8ba4\u8c03\u5ea6\u5668\uff08kube-scheduler\uff09\u8bbe\u8ba1\u4e86\u53ef\u6269\u5c55\u7684\u673a\u5236 \u2014\u2014 Scheduling Framework\u3002\u5176\u4e3b\u8981\u76ee\u7684\u662f\u5728\u8c03\u5ea6\u5668\u751f\u547d\u5468\u671f\u7684\u5173\u952e\u70b9\uff08\u5982\u56fe7-37\u4e2d\u7684\u7eff\u8272\u77e9\u5f62\u7bad\u5934\u6846\u6240\u793a\uff09\u66b4\u9732\u53ef\u6269\u5c55\u63a5\u53e3\uff0c\u5141\u8bb8\u5b9e\u73b0\u81ea\u5b9a\u4e49\u7684\u8c03\u5ea6\u903b\u8f91\u3002\u8fd9\u5957\u673a\u5236\u57fa\u4e8e\u6807\u51c6 Go \u8bed\u8a00\u63d2\u4ef6\u673a\u5236\uff0c\u9700\u8981\u6309\u7167\u89c4\u8303\u7f16\u5199 Go \u4ee3\u7801\u5e76\u8fdb\u884c\u9759\u6001\u7f16\u8bd1\u96c6\u6210\uff0c\u5176\u901a\u7528\u6027\u76f8\u8f83\u4e8e CNI\u3001CSI \u548c CRI \u7b49\u8f83\u4e3a\u6709\u9650\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-1024x500.png\" alt=\"\" class=\"wp-image-18054\" style=\"width:506px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-1024x500.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-300x146.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-768x375.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-1536x750.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-830x405.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-230x112.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-350x171.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376-480x234.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-376.png 1966w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u56de\u5230\u8c03\u5ea6\u5904\u7406\u903b\u8f91\uff0c\u9996\u5148\u6765\u770b\u9884\u9009\u9636\u6bb5\u7684\u5904\u7406\u3002<\/p>\n\n\n\n<p>\u9884\u9009\u9636\u6bb5\u7684\u4e3b\u8981\u903b\u8f91\u662f\u5728\u8c03\u5ea6\u5668\u751f\u547d\u5468\u671f\u7684 PreFilter \u548c Filter \u9636\u6bb5\uff0c\u8c03\u7528\u76f8\u5173\u7684\u8fc7\u6ee4\u63d2\u4ef6\uff0c\u7b5b\u9009\u51fa\u7b26\u5408 Pod \u8981\u6c42\u7684\u8282\u70b9\u96c6\u5408\u3002\u4ee5\u4e0b\u662f Kubernetes \u9ed8\u8ba4\u8c03\u5ea6\u5668\u5185\u7f6e\u7684\u4e00\u4e9b\u7b5b\u9009\u63d2\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ k8s.io\/kubernetes\/pkg\/scheduler\/algorithmprovider\/registry.go\nfunc getDefaultConfig() *schedulerapi.Plugins {\n  ...\n  Filter: &amp;schedulerapi.PluginSet{\n      Enabled: []schedulerapi.Plugin{\n        {Name: nodeunschedulable.Name},\n        {Name: noderesources.FitName},\n        {Name: nodename.Name},\n        {Name: nodeports.Name},\n        {Name: nodeaffinity.Name},\n        {Name: volumerestrictions.Name},\n        {Name: tainttoleration.Name},\n        {Name: nodevolumelimits.EBSName},\n        {Name: nodevolumelimits.GCEPDName},\n        {Name: nodevolumelimits.CSIName},\n        {Name: nodevolumelimits.AzureDiskName},\n        {Name: volumebinding.Name},\n        {Name: volumezone.Name},\n        {Name: interpodaffinity.Name},\n      },\n    },\n}\n<\/pre>\n\n\n\n<p>\u4e0a\u8ff0\u63d2\u4ef6\u672c\u8d28\u4e0a\u662f\u6309\u7167 Scheduling Framework \u89c4\u8303\u5b9e\u73b0 Filter \u65b9\u6cd5\uff0c\u6839\u636e\u4e00\u7cfb\u5217\u9884\u8bbe\u7684\u7b56\u7565\u7b5b\u9009\u8282\u70b9\u3002\u5b83\u4eec\u7684\u7b5b\u9009\u7b56\u7565\u53ef\u4ee5\u603b\u7ed3\u4e3a\u4ee5\u4e0b\u4e09\u7c7b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u901a\u7528\u8fc7\u6ee4\u7b56\u7565<\/strong>\uff1a\u8d1f\u8d23\u57fa\u7840\u7684\u7b5b\u9009\u64cd\u4f5c\uff0c\u4f8b\u5982\u68c0\u67e5\u8282\u70b9\u662f\u5426\u6709\u8db3\u591f\u7684\u53ef\u7528\u8d44\u6e90\u6ee1\u8db3 Pod \u8bf7\u6c42\uff0c\u6216\u68c0\u67e5 Pod \u8bf7\u6c42\u7684\u5bbf\u4e3b\u673a\u7aef\u53e3\u662f\u5426\u4e0e\u8282\u70b9\u4e2d\u7684\u7aef\u53e3\u51b2\u7a81\u3002\u76f8\u5173\u63d2\u4ef6\u5305\u62ec noderesources\u3001nodeports \u7b49\u3002\u3002<\/li>\n\n\n\n<li><strong>\u8282\u70b9\u76f8\u5173\u7684\u8fc7\u6ee4\u7b56\u7565<\/strong>\uff1a\u4e0e\u8282\u70b9\u7279\u6027\u76f8\u5173\u7684\u7b5b\u9009\u7b56\u7565\u3002\u4f8b\u5982\uff0c\u68c0\u67e5 Pod \u7684\u6c61\u70b9\u5bb9\u5fcd\u5ea6\uff08tolerations\uff09\u662f\u5426\u5339\u914d\u8282\u70b9\u7684\u6c61\u70b9\uff08taints\uff09\uff0c\u68c0\u67e5 Pod \u7684\u8282\u70b9\u4eb2\u548c\u6027\uff08nodeAffinity\uff09\u662f\u5426\u4e0e\u8282\u70b9\u5339\u914d\uff0c\u6216\u68c0\u67e5 Pod \u4e0e\u8282\u70b9\u4e2d\u5df2\u6709 Pod \u4e4b\u95f4\u7684\u4eb2\u548c\u6027\uff08Affinity\uff09\u548c\u53cd\u4eb2\u548c\u6027\uff08Anti-Affinity\uff09\u3002\u76f8\u5173\u63d2\u4ef6\u5305\u62ec tainttoleration\u3001interpodaffinity\u3001nodeunschedulable \u7b49\u3002<\/li>\n\n\n\n<li><strong>Volume \u76f8\u5173\u7684\u8fc7\u6ee4\u7b56\u7565<\/strong>\uff1a\u4e0e\u5b58\u50a8\u5377\u76f8\u5173\u7684\u7b5b\u9009\u7b56\u7565\u3002\u4f8b\u5982\uff0c\u68c0\u67e5 Pod \u6302\u8f7d\u7684 PV \u662f\u5426\u51b2\u7a81\uff08\u5982 AWS EBS \u7c7b\u578b\u7684 Volume \u4e0d\u5141\u8bb8\u591a\u4e2a Pod \u540c\u65f6\u4f7f\u7528\uff09\uff0c\u6216\u8005\u68c0\u67e5\u8282\u70b9\u4e0a\u67d0\u7c7b\u578b PV \u7684\u6570\u91cf\u662f\u5426\u8d85\u9650\u3002\u76f8\u5173\u63d2\u4ef6\u5305\u62ec nodevolumelimits\u3001volumerestrictions \u7b49\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u9884\u9009\u9636\u6bb5\u6267\u884c\u5b8c\u6bd5\u540e\uff0c\u4f1a\u5f97\u5230\u4e00\u4e2a\u53ef\u4f9b Pod \u8c03\u5ea6\u7684\u8282\u70b9\u5217\u8868\u3002\u5982\u679c\u8be5\u5217\u8868\u4e3a\u7a7a\uff0c\u8868\u793a Pod \u65e0\u6cd5\u8c03\u5ea6\u3002\u81f3\u6b64\uff0c\u9884\u9009\u9636\u6bb5\u5ba3\u544a\u7ed3\u675f\uff0c\u63a5\u7740\u8fdb\u5165\u4f18\u9009\u9636\u6bb5\u3002<\/p>\n\n\n\n<p>\u4f18\u9009\u9636\u6bb5\u7684\u8bbe\u8ba1\u4e0e\u9884\u9009\u9636\u6bb5\u7c7b\u4f3c\uff0c\u4e3b\u8981\u901a\u8fc7\u8c03\u7528\u76f8\u5173\u7684\u6253\u5206\u63d2\u4ef6\uff0c\u5bf9\u9884\u9009\u9636\u6bb5\u5f97\u5230\u7684\u8282\u70b9\u8fdb\u884c\u6392\u5e8f\uff0c\u9009\u62e9\u51fa\u8bc4\u5206\u6700\u9ad8\u7684\u8282\u70b9\u6765\u8fd0\u884c Pod\u3002<\/p>\n\n\n\n<p>Kubernetes \u9ed8\u8ba4\u8c03\u5ea6\u5668\u5185\u7f6e\u7684\u6253\u5206\u63d2\u4ef6\u5982\u4e0b\u6240\u793a\u3002\u4e0e\u7b5b\u9009\u63d2\u4ef6\u4e0d\u540c\uff0c\u6253\u5206\u63d2\u4ef6\u989d\u5916\u5305\u542b\u4e00\u4e2a\u6743\u91cd\u5c5e\u6027\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ k8s.io\/kubernetes\/pkg\/scheduler\/algorithmprovider\/registry.go\nfunc getDefaultConfig() *schedulerapi.Plugins {\n  ...\n  Score: &amp;schedulerapi.PluginSet{\n      Enabled: []schedulerapi.Plugin{\n        {Name: noderesources.BalancedAllocationName, Weight: 1},\n        {Name: imagelocality.Name, Weight: 1},\n        {Name: interpodaffinity.Name, Weight: 1},\n        {Name: noderesources.LeastAllocatedName, Weight: 1},\n        {Name: nodeaffinity.Name, Weight: 1},\n        {Name: nodepreferavoidpods.Name, Weight: 10000},\n        {Name: defaultpodtopologyspread.Name, Weight: 1},\n        {Name: tainttoleration.Name, Weight: 1},\n      },\n    }\n    ...\n}\n<\/pre>\n\n\n\n<p>\u4f18\u9009\u9636\u6bb5\u6700\u91cd\u8981\u7684\u7b56\u7565\u662f NodeResources.LeastAllocated\uff0c\u5b83\u7684\u8ba1\u7b97\u516c\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>score=(capacitycpu\u2212\u2211podsrequestedcpu)\u00d710capacitycpu+(capacitymemeory\u2212\u2211pods(requestedmemeory))\u00d710capacitymemeory2score=2capacitycpu\u200b(capacitycpu\u200b\u2212\u2211pods\u200brequestedcpu\u200b)\u00d710\u200b+capacitymemeory\u200b(capacitymemeory\u200b\u2212\u2211pods\u200b(requestedmemeory\u200b))\u00d710\u200b\u200b<\/p>\n\n\n\n<p>\u4e0a\u8ff0\u516c\u5f0f\u5b9e\u9645\u4e0a\u662f\u6839\u636e\u8282\u70b9\u4e2d CPU \u548c\u5185\u5b58\u8d44\u6e90\u7684\u5269\u4f59\u91cf\u8fdb\u884c\u6253\u5206\uff0c\u4ece\u800c\u4f7f Pod \u66f4\u503e\u5411\u4e8e\u8c03\u5ea6\u5230\u8d44\u6e90\u4f7f\u7528\u8f83\u5c11\u7684\u8282\u70b9\uff0c\u907f\u514d\u67d0\u4e9b\u8282\u70b9\u8d44\u6e90\u8fc7\u8f7d\u800c\u5176\u4ed6\u8282\u70b9\u8d44\u6e90\u95f2\u7f6e\u3002<\/p>\n\n\n\n<p>\u4e0e NodeResources.LeastAllocated \u7b56\u7565\u914d\u5408\u4f7f\u7528\u7684\uff0c\u8fd8\u6709 NodeResources.BalancedAllocation \u7b56\u7565\uff0c\u5b83\u7684\u8ba1\u7b97\u516c\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>score=10\u2212variance(cpuFraction,memoryFraction,volumeFraction)\u00d710score=10\u2212variance(cpuFraction,memoryFraction,volumeFraction)\u00d710<\/p>\n\n\n\n<p>\u8fd9\u91cc\u7684 Fraction \u6307\u7684\u662f\u8d44\u6e90\u5229\u7528\u6bd4\u4f8b\u3002\u7b14\u8005\u4ee5 cpuFraction \u4e3a\u4f8b\uff0c\u5b83\u7684\u8ba1\u7b97\u516c\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>cpuFraction=&nbsp;Pod&nbsp;\u7684&nbsp;CPU&nbsp;\u8bf7\u6c42\u8282\u70b9\u4e2d&nbsp;CPU&nbsp;\u603b\u91cfcpuFraction=\u8282\u70b9\u4e2d&nbsp;CPU&nbsp;\u603b\u91cf&nbsp;Pod&nbsp;\u7684&nbsp;CPU&nbsp;\u8bf7\u6c42\u200b<\/p>\n\n\n\n<p>memoryFraction \u548c volumeFraction \u4e5f\u662f\u7c7b\u4f3c\u7684\u6982\u5ff5\u3002Fraction \u7b97\u6cd5\u7684\u4e3b\u8981\u4f5c\u7528\u662f\u8ba1\u7b97\u8d44\u6e90\u5229\u7528\u6bd4\u4f8b\u7684\u65b9\u5dee\uff0c\u4ee5\u8bc4\u4f30\u8282\u70b9\u7684\u8d44\u6e90\uff08CPU\u3001\u5185\u5b58\u3001volume\uff09\u5206\u914d\u662f\u5426\u5747\u8861\uff0c\u907f\u514d\u51fa\u73b0 CPU \u88ab\u8fc7\u5ea6\u5206\u914d\u800c\u5185\u5b58\u6d6a\u8d39\u7684\u60c5\u51b5\u3002\u65b9\u5dee\u8d8a\u5c0f\uff0c\u8bf4\u660e\u8d44\u6e90\u5206\u914d\u8d8a\u5747\u8861\uff0c\u5f97\u5206\u4e5f\u5c31\u8d8a\u9ad8\u3002<\/p>\n\n\n\n<p>\u9664\u4e86\u4e0a\u8ff0\u4e24\u79cd\u4f18\u9009\u7b56\u7565\u5916\uff0c\u8fd8\u6709 InterPodAffinity\uff08\u6839\u636e Pod \u4e4b\u95f4\u7684\u4eb2\u548c\u6027\u3001\u53cd\u4eb2\u548c\u6027\u89c4\u5219\u6765\u6253\u5206\uff09\u3001Nodeaffinity\uff08\u6839\u636e\u8282\u70b9\u7684\u4eb2\u548c\u6027\u89c4\u5219\u6765\u6253\u5206\uff09\u3001ImageLocality\uff08\u6839\u636e\u8282\u70b9\u4e2d\u662f\u5426\u7f13\u5b58\u5bb9\u5668\u955c\u50cf\u6253\u5206\uff09\u3001NodePreferAvoidPods\uff08\u57fa\u4e8e\u8282\u70b9\u7684\u6ce8\u89e3\u4fe1\u606f\u6253\u5206\uff09\u7b49\u7b49\uff0c\u7b14\u8005\u5c31\u4e0d\u518d\u4e00\u4e00\u89e3\u91ca\u4e86\u3002<\/p>\n\n\n\n<p>\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u6253\u5206\u63d2\u4ef6\u7684\u6743\u91cd\u53ef\u4ee5\u5728\u8c03\u5ea6\u5668\u914d\u7f6e\u6587\u4ef6\u4e2d\u8fdb\u884c\u8bbe\u7f6e\uff0c\u4ee5\u8c03\u6574\u5b83\u4eec\u5728\u8c03\u5ea6\u51b3\u7b56\u4e2d\u7684\u5f71\u54cd\u529b\u3002\u4f8b\u5982\uff0c\u5982\u679c\u5e0c\u671b\u66f4\u91cd\u89c6 NodePreferAvoidPods \u63d2\u4ef6\u7684\u6253\u5206\u7ed3\u679c\uff0c\u53ef\u4ee5\u4e3a\u8be5\u63d2\u4ef6\u5206\u914d\u66f4\u9ad8\u7684\u6743\u91cd\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: kubescheduler.config.k8s.io\/v1\nkind: KubeSchedulerConfiguration\nprofiles:\n- schedulerName: default-scheduler\n  plugins:\n    score:\n      enabled:\n      - name: NodePreferAvoidPods\n        weight: 10000\n      - name: InterPodAffinity\n        weight: 1\n      ...\n<\/pre>\n\n\n\n<p>\u7ecf\u8fc7\u4f18\u9009\u9636\u6bb5\u4e4b\u540e\uff0c\u8c03\u5ea6\u5668\u6839\u636e\u9884\u5b9a\u7684\u6253\u5206\u7b56\u7565\u4e3a\u6bcf\u4e2a\u8282\u70b9\u5206\u914d\u4e00\u4e2a\u5206\u6570\uff0c\u6700\u7ec8\u9009\u62e9\u51fa\u5206\u6570\u6700\u9ad8\u7684\u8282\u70b9\u6765\u8fd0\u884c Pod\u3002\u5982\u679c\u5b58\u5728\u591a\u4e2a\u8282\u70b9\u5206\u6570\u76f8\u540c\uff0c\u8c03\u5ea6\u5668\u5219\u968f\u673a\u9009\u62e9\u5176\u4e2d\u4e00\u4e2a\u3002<\/p>\n\n\n\n<p>\u9009\u62e9\u51fa\u6700\u7ec8\u76ee\u6807\u8282\u70b9\u540e\uff0c\u63a5\u4e0b\u6765\u5c31\u662f\u901a\u77e5\u76ee\u6807\u8282\u70b9\u5185\u7684 kubelet \u521b\u5efa Pod \u4e86\u3002<\/p>\n\n\n\n<p>\u5728\u8fd9\u4e00\u9636\u6bb5\uff0c\u8c03\u5ea6\u5668\u4e0d\u4f1a\u76f4\u63a5\u4e0e kubelet \u901a\u4fe1\uff0c\u800c\u662f\u5c06 Pod \u5bf9\u8c61\u7684 nodeName \u4fee\u6539\u4e3a\u9009\u5b9a\u8282\u70b9\u7684\u540d\u79f0\u3002kubelet \u4f1a\u6301\u7eed\u76d1\u63a7 Etcd \u4e2d Pod \u4fe1\u606f\u7684\u53d8\u5316\uff0c\u53d1\u73b0\u53d8\u52a8\u540e\u6267\u884c\u4e00\u4e2a\u540d\u4e3a\u201cAdmin\u201d\u7684\u672c\u5730\u64cd\u4f5c\uff0c\u786e\u8ba4\u8d44\u6e90\u53ef\u7528\u6027\u548c\u7aef\u53e3\u662f\u5426\u51b2\u7a81\u3002\u8fd9\u76f8\u5f53\u4e8e\u6267\u884c\u4e00\u904d\u901a\u7528\u7684\u8fc7\u6ee4\u7b56\u7565\uff0c\u5bf9 Pod \u662f\u5426\u80fd\u5728\u8be5\u8282\u70b9\u8fd0\u884c\u8fdb\u884c\u4e8c\u6b21\u786e\u8ba4\u3002<\/p>\n\n\n\n<p>\u4e0d\u8fc7\uff0c\u4ece\u8c03\u5ea6\u5668\u66f4\u65b0 Etcd \u4e2d\u7684 nodeName \u5230 kubelet \u68c0\u6d4b\u5230\u53d8\u5316\uff0c\u518d\u5230\u4e8c\u6b21\u786e\u8ba4\u662f\u5426\u53ef\u8c03\u5ea6\uff0c\u8fd9\u4e00\u8fc7\u7a0b\u53ef\u80fd\u4f1a\u6301\u7eed\u4e00\u6bb5\u4e0d\u7b49\u7684\u65f6\u95f4\u3002\u5982\u679c\u7b49\u5230\u6240\u6709\u64cd\u4f5c\u5b8c\u6210\u624d\u5ba3\u5e03\u8c03\u5ea6\u7ed3\u675f\uff0c\u52bf\u5fc5\u4f1a\u5f71\u54cd\u6574\u4f53\u8c03\u5ea6\u6548\u7387\u3002<\/p>\n\n\n\n<p>\u8c03\u5ea6\u5668\u91c7\u7528\u4e86\u201c\u4e50\u89c2\u7ed1\u5b9a\u201d\uff08Optimistic Binding\uff09\u7b56\u7565\u6765\u89e3\u51b3\u4e0a\u8ff0\u95ee\u9898\u3002\u9996\u5148\uff0c\u8c03\u5ea6\u5668\u66f4\u65b0 Scheduler Cache \u91cc\u7684 Pod \u7684 nodeName \u7684\u4fe1\u606f\uff0c\u5e76\u53d1\u8d77\u5f02\u6b65\u8bf7\u6c42 \u66f4\u65b0 Etcd \u4e2d\u7684\u8fdc\u7a0b\u4fe1\u606f\uff0c\u8be5\u64cd\u4f5c\u5728\u8c03\u5ea6\u751f\u547d\u5468\u671f\u4e2d\u79f0 Bind\u3002\u5982\u679c\u8c03\u5ea6\u6210\u529f\u4e86\uff0cScheduler Cache \u548c Etcd \u4e2d\u7684\u4fe1\u606f\u52bf\u5fc5\u4e00\u81f4\u3002\u5982\u679c\u8c03\u5ea6\u5931\u8d25\u4e86\uff08\u4e5f\u5c31\u662f\u5f02\u6b65\u66f4\u65b0\u5931\u8d25\uff09\uff0c\u4e5f\u6ca1\u6709\u592a\u5927\u5173\u7cfb\u3002\u56e0\u4e3a Informer \u4f1a\u6301\u7eed\u76d1\u63a7 Pod \u53d8\u5316\uff0c\u53ea\u8981\u5c06\u8c03\u5ea6\u6210\u529f\u3001\u4f46\u6ca1\u6709\u521b\u5efa\u6210\u529f\u7684 Pod nodeName \u5b57\u6bb5\u6e05\u7a7a\uff0c\u7136\u540e\u540c\u6b65\u81f3\u8c03\u5ea6\u961f\u5217\uff0c\u5f85\u4e0b\u4e00\u6b21\u8c03\u5ea6\u89e3\u51b3\u5373\u53ef\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8d44\u6e90\u5f39\u6027\u4f38\u7f29<\/strong><\/p>\n\n\n\n<p>\u4e3a\u4e86\u5e73\u8861\u8d44\u6e90\u9884\u4f30\u548c\u5b9e\u9645\u4f7f\u7528\u4e4b\u95f4\u7684\u5dee\u8ddd\uff0cKubernetes \u63d0\u4f9b\u4e86 HPA\u3001VPA \u548c CA \u4e09\u79cd\u81ea\u52a8\u6269\u7f29\uff08autoscaling\uff09\u673a\u5236\u3002<\/p>\n\n\n\n<p><strong>Pod \u6c34\u5e73\u81ea\u52a8\u4f38\u7f29<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>HPA\uff08Horizontal Pod Autoscaler\uff0cPod \u6c34\u5e73\u81ea\u52a8\u6269\u7f29\uff09\u662f\u6839\u636e\u5de5\u4f5c\u8d1f\u8f7d\uff08\u5982 Deployment\uff09\u7684\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\u8c03\u6574 Pod \u526f\u672c\u6570\u91cf\u7684\u673a\u5236\u3002<\/p>\n\n\n\n<p>HPA \u7684\u5de5\u4f5c\u539f\u7406\u7b80\u5355\u660e\u4e86\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5f53\u8d1f\u8377\u8f83\u9ad8\u65f6\uff0c\u589e\u52a0 Pod \u526f\u672c\u6570\u91cf\uff1b<\/li>\n\n\n\n<li>\u5f53\u8d1f\u8377\u8f83\u4f4e\u65f6\uff0c\u51cf\u5c11 Pod \u526f\u672c\u6570\u91cf\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u56e0\u6b64\uff0c\u81ea\u52a8\u4f38\u7f29\u7684\u5173\u952e\u5728\u4e8e\u51c6\u786e\u76d1\u63a7\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\u3002\u4e3a\u6b64\uff0cKubernetes \u63d0\u4f9b\u4e86 Metrics API\uff0c\u7528\u4e8e\u83b7\u53d6\u8282\u70b9\u548c Pod \u7684\u8d44\u6e90\u4fe1\u606f\u3002\u4ee5\u4e0b\u662f Metrics API \u7684\u54cd\u5e94\u793a\u4f8b\uff0c\u5c55\u793a\u4e86 CPU \u548c\u5185\u5b58\u7684\u4f7f\u7528\u60c5\u51b5\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ kubectl get --raw \"\/apis\/metrics.k8s.io\/v1beta1\/nodes\/minikube\" | jq '.'\n{\n  \"kind\": \"NodeMetrics\",\n  \"apiVersion\": \"metrics.k8s.io\/v1beta1\",\n  \"metadata\": {\n    \"name\": \"minikube\",\n    \"selfLink\": \"\/apis\/metrics.k8s.io\/v1beta1\/nodes\/minikube\",\n    \"creationTimestamp\": \"2022-01-27T18:48:43Z\"\n  },\n  \"timestamp\": \"2022-01-27T18:48:33Z\",\n  \"window\": \"30s\",\n  \"usage\": {\n    \"cpu\": \"487558164n\",\n    \"memory\": \"732212Ki\"\n  }\n}\n<\/pre>\n\n\n\n<p>\u6700\u521d\uff0cMetrics API \u4ec5\u652f\u6301 CPU \u548c\u5185\u5b58\u6307\u6807\u3002\u968f\u7740\u9700\u6c42\u7684\u589e\u52a0\uff0cMetrics API \u6269\u5c55\u4e86\u5bf9\u7528\u6237\u81ea\u5b9a\u4e49\u6307\u6807\uff08Custom Metrics\uff09\u7684\u652f\u6301\u3002\u7528\u6237\u53ef\u4ee5\u5f00\u53d1 Custom Metrics Server\uff0c\u5e76\u901a\u8fc7\u8c03\u7528\u5176\u4ed6\u670d\u52a1\uff08\u5982 Prometheus\uff09\u6765\u76d1\u63a7\u5e94\u7528\u7a0b\u5e8f\u3001\u7cfb\u7edf\u8d44\u6e90\u3001\u670d\u52a1\u6027\u80fd\u53ca\u5916\u90e8\u7cfb\u7edf\u7684\u7e41\u5fd9\u7a0b\u5ea6\u3002<\/p>\n\n\n\n<p>\u63a5\u4e0b\u6765\u4ecb\u7ecd HPA \u7684\u4f7f\u7528\u65b9\u5f0f\u3002\u5982\u56fe 7-38 \u6240\u793a\uff0c\u4f7f\u7528 kubectl autoscale \u547d\u4ee4\u521b\u5efa HPA\uff0c\u8bbe\u7f6e\u76d1\u63a7\u6307\u6807\u7c7b\u578b\uff08\u5982 cpu-percent\uff09\u3001\u76ee\u6807\u503c\uff08\u5982 70%\uff09\u4ee5\u53ca Pod \u526f\u672c\u6570\u91cf\u7684\u8303\u56f4\uff08\u6700\u5c11 1 \u4e2a\uff0c\u6700\u591a 10 \u4e2a\uff09\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ kubectl autoscale deployment foo --cpu-percent=70 --min=1 --max=10<\/pre>\n\n\n\n<p>\u968f\u540e\uff0cHPA \u5b9a\u671f\u83b7\u53d6 Metrics \u6570\u636e\uff0c\u4e0e\u8bbe\u5b9a\u7684\u76ee\u6807\u503c\u6bd4\u8f83\uff0c\u51b3\u5b9a\u662f\u5426\u8fdb\u884c\u6269\u7f29\u3002\u5982\u679c\u9700\u8981\u6269\u7f29\uff0cHPA \u8c03\u7528 Deployment \u7684 Scale \u63a5\u53e3\u8c03\u6574\u526f\u672c\u6570\u91cf\uff0c\u5c06\u6bcf\u4e2a Pod \u7684\u8d1f\u8377\u7ef4\u6301\u5728\u7528\u6237\u671f\u671b\u7684\u6c34\u5e73\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-1024x531.png\" alt=\"\" class=\"wp-image-18055\" style=\"width:530px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-1024x531.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-300x155.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-768x398.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-1536x796.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-830x430.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-230x119.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-350x181.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377-480x249.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-377.png 2026w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>Pod \u5782\u76f4\u81ea\u52a8\u4f38\u7f29<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>VPA\uff08Vertical Pod Autoscaler\uff09\u662f Pod \u7684\u5782\u76f4\u81ea\u52a8\u4f38\u7f29\u7ec4\u4ef6\u3002\u5176\u5de5\u4f5c\u539f\u7406\u4e0e HPA \u7c7b\u4f3c\uff0c\u4e24\u8005\u90fd\u662f\u901a\u8fc7 Metrics API \u83b7\u53d6\u6307\u6807\u5e76\u8fdb\u884c\u8bc4\u4f30\u8c03\u6574\u3002\u4e0d\u540c\u4e4b\u5904\u5728\u4e8e\uff0cVPA \u8c03\u6574\u7684\u662f\u5de5\u4f5c\u8d1f\u8f7d\u7684\u8d44\u6e90\u914d\u989d\uff0c\u4f8b\u5982 Pod \u7684 CPU \u548c\u5185\u5b58\u7684 request \u548c limit\u3002<\/p>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cVPA \u662f Kubernetes \u7684\u9644\u52a0\u7ec4\u4ef6\uff0c\u5fc5\u987b\u5b89\u88c5\u5e76\u914d\u7f6e\u540e\uff0c\u624d\u80fd\u4e3a\u5de5\u4f5c\u8d1f\u8f7d\uff08\u5982 Deployment\uff09\u5b9a\u4e49\u8d44\u6e90\u8c03\u6574\u7b56\u7565\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a VPA \u914d\u7f6e\u793a\u4f8b\uff0c\u4f9b\u53c2\u8003\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: autoscaling.k8s.io\/v1\nkind: VerticalPodAutoscaler\nmetadata:\n  name: example-app-vpa\n  namespace: default\nspec:\n  targetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: example-app\n  updatePolicy:\n    updateMode: Auto  # \u51b3\u5b9a VPA \u5982\u4f55\u5e94\u7528\u63a8\u8350\u7684\u8d44\u6e90\u8c03\u6574\uff0c\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u4e3a \"Off\" \u6216 \"Initial\" \u6765\u63a7\u5236\u66f4\u65b0\u7b56\u7565\n<\/pre>\n\n\n\n<p>\u5c06\u4e0a\u8ff0 YAML \u6587\u4ef6\u63d0\u4ea4\u5230 Kubernetes \u96c6\u7fa4\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7 kubectl describe vpa \u547d\u4ee4\u67e5\u770b VPA \u63a8\u8350\u7684\u8d44\u6e90\u7b56\u7565\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ kubectl describe vpa example-app-vpa\n...\nRecommendation:\n    Container Recommendations:\n      Container Name:  nginx\n      Lower Bound:\n        Cpu:     25m\n        Memory:  262144k\n      Target:\n        Cpu:     25m\n        Memory:  262144k\n      Uncapped Target:\n        Cpu:     25m\n        Memory:  262144k\n      Upper Bound:\n        Cpu:     11601m\n        Memory:  12128573170\n...<\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u51fa\uff0cVPA \u66f4\u9002\u7528\u4e8e\u8d1f\u8f7d\u53d8\u5316\u8f83\u5927\u3001\u8d44\u6e90\u9700\u6c42\u4e0d\u786e\u5b9a\u7684\u573a\u666f\uff0c\u5c24\u5176\u5728\u65e0\u6cd5\u7cbe\u786e\u9884\u4f30\u5e94\u7528\u8d44\u6e90\u9700\u6c42\u65f6\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u4f38\u7f29<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u867d\u7136 HPA \u57fa\u4e8e Metrics API \u5b9e\u73b0\u4e86\u5f39\u6027\u4f38\u7f29\uff0c\u4f46\u5176\u6307\u6807\u8303\u56f4\u6709\u9650\u4e14\u7c92\u5ea6\u8f83\u7c97\u3002\u4e3a\u4e86\u652f\u6301\u57fa\u4e8e\u5916\u90e8\u4e8b\u4ef6\u7684\u66f4\u7ec6\u7c92\u5ea6\u6269\u7f29\u5bb9\uff0c\u5fae\u8f6f\u4e0e\u7ea2\u5e3d\u8054\u5408\u5f00\u53d1\u4e86 KEDA\uff08Kubernetes Event-driven Autoscaling\uff09\u3002<\/p>\n\n\n\n<p>KEDA \u7684\u51fa\u73b0\u5e76\u975e\u4e3a\u4e86\u53d6\u4ee3 HPA\uff0c\u800c\u662f\u4e0e\u5176\u4e92\u8865\u3002\u5176\u5de5\u4f5c\u539f\u7406\u5982\u56fe 7-39 \u6240\u793a\uff1a\u7528\u6237\u901a\u8fc7\u914d\u7f6e ScaledObject\uff08\u7f29\u653e\u5bf9\u8c61\uff09\u6765\u5b9a\u4e49 Scaler\uff08KEDA \u5185\u90e8\u7ec4\u4ef6\uff09\u7684\u884c\u4e3a\uff0cScaler \u6301\u7eed\u4ece\u5916\u90e8\u7cfb\u7edf\u83b7\u53d6\u72b6\u6001\u6570\u636e\uff0c\u5e76\u4e0e\u6269\u7f29\u6761\u4ef6\u8fdb\u884c\u6bd4\u8f83\u3002\u5f53\u6761\u4ef6\u6ee1\u8db3\u65f6\uff0cScaler \u89e6\u53d1\u6269\u7f29\u64cd\u4f5c\uff0c\u8c03\u7528 Kubernetes \u7684 HPA \u7ec4\u4ef6\u8c03\u6574\u5de5\u4f5c\u8d1f\u8f7d\u7684 Pod \u526f\u672c\u6570\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"792\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-1024x792.png\" alt=\"\" class=\"wp-image-18056\" style=\"width:512px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-1024x792.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-300x232.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-768x594.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-830x642.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-230x178.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-350x271.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX-480x371.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/keda-arch-Cpmvo7xX.png 1296w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>KEDA \u5185\u7f6e\u4e86\u591a\u79cd\u5e38\u89c1\u7684 Scaler\uff0c\u7528\u4e8e\u5904\u7406\u7279\u5b9a\u7684\u4e8b\u4ef6\u6e90\u6216\u6307\u6807\u6e90\u3002\u4ee5\u4e0b\u662f\u90e8\u5206 Scaler \u793a\u4f8b\uff0c\u4f9b\u53c2\u8003\uff1a<\/p>\n\n\n\n<ul>\n<li>\u6d88\u606f\u961f\u5217 Scaler\uff1a\u83b7\u53d6 Kafka\u3001RabbitMQ\u3001Azure Queue\u3001AWS SQS \u7b49\u6d88\u606f\u961f\u5217\u7684\u6d88\u606f\u6570\u91cf\u3002<\/li>\n\n\n\n<li>\u6570\u636e\u5e93 Scaler\uff1a\u83b7\u53d6 SQL \u6570\u636e\u5e93\u7684\u8fde\u63a5\u6570\u3001\u67e5\u8be2\u5ef6\u8fdf\u7b49\u3002<\/li>\n\n\n\n<li>HTTP \u8bf7\u6c42 Scaler\uff1a\u83b7\u53d6 HTTP \u8bf7\u6c42\u6570\u91cf\u6216\u54cd\u5e94\u65f6\u95f4\u3002<\/li>\n\n\n\n<li>Prometheus Scaler\uff1a\u901a\u8fc7 Prometheus \u83b7\u53d6\u81ea\u5b9a\u4e49\u6307\u6807\u6765\u89e6\u53d1\u6269\u7f29\u64cd\u4f5c\uff0c\u5982\u961f\u5217\u957f\u5ea6\u3001CPU \u4f7f\u7528\u7387\u7b49\u4e1a\u52a1\u7279\u5b9a\u6307\u6807\u3002<\/li>\n\n\n\n<li>\u65f6\u95f4 Scaler\uff1a\u6839\u636e\u7279\u5b9a\u65f6\u95f4\u6bb5\u89e6\u53d1\u6269\u7f29\u903b\u8f91\uff0c\u5982\u6bcf\u65e5\u7684\u9ad8\u5cf0\u671f\u6216\u591c\u95f4\u4f4e\u5cf0\u671f\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u662f Kafka Scaler \u7684\u914d\u7f6e\u793a\u4f8b\uff0c\u5b83\u76d1\u63a7\u67d0\u4e2a Kafka \u4e3b\u9898\u4e2d\u7684\u6d88\u606f\u6570\u91cf\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5f53\u6d88\u606f\u961f\u5217\u8d85\u8fc7\u8bbe\u5b9a\u9608\u503c\u65f6\uff0c\u89e6\u53d1\u6269\u5bb9\u64cd\u4f5c\uff0c\u589e\u52a0 Pod \u526f\u672c\u6570\u91cf\uff0c\u4ee5\u63d0\u9ad8\u6d88\u606f\u5904\u7406\u541e\u5410\u91cf\uff1b<\/li>\n\n\n\n<li>\u5f53\u6d88\u606f\u961f\u5217\u4e3a\u7a7a\u65f6\uff0c\u89e6\u53d1\u7f29\u51cf\u64cd\u4f5c\uff0c\u51cf\u5c11 Pod \u526f\u672c\u6570\u91cf\uff0c\u964d\u4f4e\u8d44\u6e90\u6210\u672c\uff08 Pod \u6570\u53ef\u7f29\u51cf\u81f3 0\uff0cminReplicaCount\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: keda.sh\/v1alpha1\nkind: ScaledObject\nmetadata:\n  name: kafka-scaledobject\n  namespace: default\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: brm-index-basic\n  pollingInterval: 10\n  minReplicaCount: 0\n  maxReplicaCount: 20\n  triggers:\n    - type: kafka\n      metadata:\n        bootstrapServers: kafka-server:9092\n        consumerGroup: basic\n        topic: basic\n        lagThreshold: \"100\"\n        offsetResetPolicy: latest<\/pre>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u8282\u70b9\u81ea\u52a8\u4f38\u7f29<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4e1a\u52a1\u589e\u957f\uff08\u6216\u840e\u7f29\uff09\u53ef\u80fd\u5bfc\u81f4\u96c6\u7fa4\u8d44\u6e90\u4e0d\u8db3\u6216\u8fc7\u5ea6\u5197\u4f59\u3002\u5982\u679c\u80fd\u591f\u6839\u636e\u96c6\u7fa4\u8d44\u6e90\u60c5\u51b5\u81ea\u52a8\u8c03\u6574\u8282\u70b9\u6570\u91cf\uff0c\u4e0d\u4ec5\u80fd\u4fdd\u8bc1\u96c6\u7fa4\u7684\u53ef\u7528\u6027\uff0c\u8fd8\u80fd\u6700\u5927\u7a0b\u5ea6\u5730\u964d\u4f4e\u8d44\u6e90\u6210\u672c\u3002<\/p>\n\n\n\n<p>CA\uff08Cluster AutoScaler\uff09\u662f\u4e13\u95e8\u7528\u4e8e\u8c03\u6574\u8282\u70b9\u7684\u7ec4\u4ef6\uff0c\u5176\u529f\u80fd\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>\u81ea\u52a8\u6269\u5c55<\/strong>\uff08Scale Up\uff09\uff1a\u5f53\u8282\u70b9\u8d44\u6e90\u4e0d\u80fd\u6ee1\u8db3 Pod \u9700\u6c42\u65f6\uff0cCluster AutoScaler \u5411\u4e91\u670d\u52a1\u63d0\u4f9b\u5546\uff08\u5982 GCE\u3001GKE\u3001Azure\u3001AKS\u3001AWS \u7b49\uff09\u8bf7\u6c42\u521b\u5efa\u65b0\u7684\u8282\u70b9\uff0c\u6269\u5c55\u96c6\u7fa4\u5bb9\u91cf\uff0c\u786e\u4fdd\u4e1a\u52a1\u80fd\u591f\u83b7\u5f97\u6240\u9700\u7684\u8d44\u6e90\u3002<\/li>\n\n\n\n<li><strong>\u81ea\u52a8\u7f29\u51cf<\/strong>\uff08Scale Down\uff09\uff1a\u5f53\u8282\u70b9\u8d44\u6e90\u5229\u7528\u7387\u957f\u671f\u5904\u4e8e\u4f4e\u6c34\u5e73\uff08\u5982\u4f4e\u4e8e 50%\uff09\uff0cCluster AutoScaler \u5c06\u8be5\u8282\u70b9\u4e0a\u7684 Pod \u8c03\u5ea6\u5230\u5176\u4ed6\u8282\u70b9\uff0c\u7136\u540e\u5c06\u8282\u70b9\u4ece\u96c6\u7fa4\u4e2d\u79fb\u9664\uff0c\u907f\u514d\u8d44\u6e90\u6d6a\u8d39\u3002<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"294\" src=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-1024x294.png\" alt=\"\" class=\"wp-image-18057\" style=\"width:552px;height:auto\" srcset=\"https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-1024x294.png 1024w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-300x86.png 300w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-768x221.png 768w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-1536x441.png 1536w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-830x239.png 830w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-230x66.png 230w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-350x101.png 350w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378-480x138.png 480w, https:\/\/92it.top\/wp-content\/uploads\/2025\/06\/image-378.png 2004w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>\u6700\u540e\uff0cCluster Autoscaler \u662f Kubernetes \u5b98\u65b9\u63d0\u4f9b\u7684\u7ec4\u4ef6\uff0c\u4f46\u5b83\u6df1\u5ea6\u4f9d\u8d56\u4e8e\u516c\u6709\u4e91\u5382\u5546\u3002\u56e0\u6b64\uff0c\u5177\u4f53\u7684\u4f7f\u7528\u65b9\u6cd5\u3001\u529f\u80fd\u548c\u9650\u5236\u53d6\u51b3\u4e8e\u4e91\u5382\u5546\u7684\u5b9e\u73b0\uff0c\u7b14\u8005\u5c31\u4e0d\u518d\u8fc7\u591a\u4ecb\u7ecd\u4e86\u3002<\/p>\n\n\n\n<p>\u3000<\/p>\n\n\n\n<p><strong>\u5c0f\u7ed3<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u672c\u7ae0\uff0c\u7b14\u8005\u4ece Google \u5185\u90e8\u5bb9\u5668\u7cfb\u7edf\u6f14\u8fdb\u4f5c\u4e3a\u5f00\u7bc7\uff0c\u4ece\u7f51\u7edc\u3001\u8ba1\u7b97\u3001\u5b58\u50a8\u3001\u8c03\u5ea6\u7b49\u65b9\u9762\u5c55\u5f00\uff0c\u6df1\u5165\u5206\u6790\u4e86 Kubernetes \u7684\u8bbe\u8ba1\u539f\u7406\u548c\u5e94\u7528\u3002\u5e0c\u671b\u80fd\u8ba9\u4f60\u5728\u5b66\u4e60 Kubernetes \u8fd9\u4e2a\u590d\u6742\u800c\u5e9e\u5927\u7684\u9879\u76ee\u65f6\uff0c\u6293\u4f4f\u5176\u6838\u5fc3\u4e3b\u7ebf\uff0c\u7406\u89e3\u5176\u8bbe\u8ba1\u7406\u5ff5\u3002<\/p>\n\n\n\n<p>\u5728\u7b14\u8005\u770b\u6765\uff0cKubernetes \u4f5c\u4e3a\u57fa\u7840\u8bbe\u65bd\uff0c\u5b83\u7684\u8bbe\u8ba1\u7406\u5ff5\u6709\u4e24\u4e2a\u6838\u5fc3\uff1a<\/p>\n\n\n\n<ul>\n<li>\u5176\u4e00\uff0c\u4ece API \u5230\u5bb9\u5668\u8fd0\u884c\u65f6\u7684\u6bcf\u4e00\u5c42\uff0c\u90fd\u4e3a\u5f00\u53d1\u8005\u66b4\u9732\u53ef\u4f9b\u6269\u5c55\u7684\u63d2\u4ef6\u673a\u5236\u3002\u901a\u8fc7 CNI \u63d2\u4ef6\u628a\u7f51\u7edc\u529f\u80fd\u89e3\u8026\uff0c\u8ba9\u5916\u90e8\u7684\u5f00\u53d1\u793e\u533a\u3001\u5382\u5546\u53c2\u4e0e\u5bb9\u5668\u7f51\u7edc\u7684\u5b9e\u73b0\uff1b\u901a\u8fc7 CSI \u63d2\u4ef6\u5efa\u7acb\u4e86\u4e00\u5957\u5e9e\u5927\u7684\u5b58\u50a8\u751f\u6001\uff1b\u901a\u8fc7\u8bbe\u5907\u63d2\u4ef6\u673a\u5236\u628a\u7269\u7406\u8d44\u6e90\u7684\u652f\u6301\u6269\u5c55\u5230 GPU\u3001FPGA\u3001DPDK\u3001RDMA \u7b49\u5404\u7c7b\u5f02\u6784\u8bbe\u5907\u3002\u51ed\u501f\u8fd9\u79cd\u5f00\u653e\u6027\u8bbe\u8ba1\uff0cKubernetes \u793e\u533a\u6d8c\u73b0\u51fa\u6210\u5343\u4e0a\u4e07\u7684\u63d2\u4ef6\uff0c\u5e2e\u52a9\u8fd0\u7ef4\u5de5\u7a0b\u5e08\u8f7b\u677e\u6784\u5efa\u5f3a\u5927\u7684\u57fa\u7840\u8bbe\u65bd\u5e73\u53f0\u3002\u4ece\u8fd9\u4e00\u70b9\u8bb2\uff0c\u8fd9\u4e5f\u662f CNCF \u57fa\u4e8e Kubernetes \u80fd\u6784\u5efa\u51fa\u4e00\u4e2a\u5e9e\u5927\u751f\u6001\u7684\u539f\u56e0\u3002\u6240\u4ee5\u8bf4\uff0cKubernetes \u5e76\u4e0d\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5bb9\u5668\u7f16\u6392\u5e73\u53f0\uff0c\u800c\u662f\u4e00\u4e2a\u5206\u91cf\u5341\u8db3\u7684\u201c\u63a5\u5165\u5c42\u201d\uff0c\u662f\u4e91\u539f\u751f\u65f6\u4ee3\u771f\u771f\u6b63\u6b63\u7684\u201c\u64cd\u4f5c\u7cfb\u7edf\u201d\u3002<\/li>\n\n\n\n<li>\u5176\u4e8c\uff0c\u5728\u8fd9\u4e00\u5f00\u653e\u6027\u5e95\u5c42\u4e4b\u4e0a\uff0cKubernetes \u5c06\u5404\u7c7b\u8d44\u6e90\u7edf\u4e00\u62bd\u8c61\u4e3a\u201c\u8d44\u6e90\u201d\uff0c\u5e76\u901a\u8fc7 YAML \u6587\u4ef6\u63cf\u8ff0\u3002\u8fd9\u79cd\u8bbe\u8ba1\u4f7f\u5f97\u4e00\u4e2a YAML \u6587\u4ef6\u5373\u53ef\u8868\u8fbe\u590d\u6742\u57fa\u7840\u8bbe\u65bd\u7684\u6700\u7ec8\u72b6\u6001\uff0c\u5e76\u81ea\u52a8\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\u7684\u8fd0\u7ef4\u3002Kubernetes \u9690\u85cf\u4e86\u5e95\u5c42\u5b9e\u73b0\u7ec6\u8282\uff0c\u5c4f\u853d\u4e86\u4e0d\u540c\u5e73\u53f0\u7684\u5dee\u5f02\uff0c\u4ee5\u4e00\u81f4\u3001\u53cb\u597d\u3001\u8de8\u5e73\u53f0\u7684\u65b9\u5f0f\u5c06\u5e95\u5c42\u57fa\u7840\u8bbe\u65bd\u80fd\u529b\u201c\u8f93\u9001\u201d\u7ed9\u4e1a\u52a1\u5de5\u7a0b\u5e08\uff0c\u6b63\u662f\u5b83\u7684\u8bbe\u8ba1\u7406\u5ff5\u7684\u7cbe\u9ad3\u6240\u5728\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u63a5\u4e0b\u6765\uff0c\u7b14\u8005\u5c06\u4ecb\u7ecd\u57fa\u4e8e\u201c\u5bb9\u5668\u8bbe\u8ba1\u6a21\u5f0f\u201d\u7684\u4e8c\u6b21\u521b\u65b0\uff0c\u4e5f\u5c31\u662f\u8fd1\u51e0\u5e74\u70ed\u5ea6\u6781\u9ad8\u7684\u201c\u670d\u52a1\u7f51\u683c\u201d\uff08ServiceMesh\uff09\u6280\u672f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e16\u754c\u4e0a\u6709\u4e24\u4e2a\u8bbe\u8ba1\u8f6f\u4ef6\u7684\u65b9\u6cd5\uff0c\u4e00\u79cd\u65b9\u6cd5\u662f\u8bbe\u8ba1\u7684\u5c3d\u91cf\u7b80\u5355\uff0c\u4ee5\u81f3\u4e8e\u660e\u663e\u6ca1\u6709\u4ec0\u4e48\u7f3a\u9677\uff0c\u53e6\u5916\u4e00\u79cd\u65b9\u5f0f\u662f\u4f7f\u4ed6\u5c3d\u91cf\u7684\u590d\u6742\uff0c\u4ee5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[],"_links":{"self":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/17994"}],"collection":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17994"}],"version-history":[{"count":2,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/17994\/revisions"}],"predecessor-version":[{"id":18058,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/17994\/revisions\/18058"}],"wp:attachment":[{"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17994"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}