{"id":1339,"date":"2023-11-16T22:04:19","date_gmt":"2023-11-16T14:04:19","guid":{"rendered":"https:\/\/www.dataz8.com\/?p=1339"},"modified":"2023-11-26T18:16:24","modified_gmt":"2023-11-26T10:16:24","slug":"%e5%9f%ba%e4%ba%8ek8s%e5%ae%89%e8%a3%85openstack","status":"publish","type":"post","link":"https:\/\/www.dataz8.com\/?p=1339","title":{"rendered":"\u57fa\u4e8ek8s\u5b89\u88c5openstack"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#1_%E4%BB%80%E4%B9%88%E6%98%AFopenstack\" >1. \u4ec0\u4e48\u662fopenstack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#2_kubernetes%E4%B8%8Eopenstack%E7%9A%84%E5%BC%82%E5%90%8C\" >2. kubernetes\u4e0eopenstack\u7684\u5f02\u540c<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#21_%E6%94%AF%E6%8C%81%E7%9A%84%E5%B7%A5%E4%BD%9C%E8%B4%9F%E8%BD%BD%E7%B1%BB%E5%9E%8B\" >2.1 \u652f\u6301\u7684\u5de5\u4f5c\u8d1f\u8f7d\u7c7b\u578b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#22_%E8%A3%B8%E6%9C%BA%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD\" >2.2 \u88f8\u673a\u7ba1\u7406\u529f\u80fd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#23_%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD\" >2.3 \u5e94\u7528\u7a0b\u5e8f\u7ba1\u7406\u529f\u80fd<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#3_%E7%BB%93%E5%90%88k8s%E4%B8%8Eopenstack%E7%9A%84%E4%BC%98%E5%8A%BF\" >3. \u7ed3\u5408k8s\u4e0eopenstack\u7684\u4f18\u52bf<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#31_openstack%E4%B8%8A%E7%9A%84kubernetes\" >3.1 openstack\u4e0a\u7684kubernetes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#32_kubernetes%E4%B8%8A%E7%9A%84openstack\" >3.2 kubernetes\u4e0a\u7684openstack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#33_%E5%A0%86%E5%8F%A0%E6%A0%88\" >3.3 \u5806\u53e0\u6808<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#4_openstack%E6%A0%BC%E5%B1%80\" >4. openstack\u683c\u5c40<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.dataz8.com\/?p=1339\/#5_%E5%B0%8F%E8%AF%95%E7%89%9B%E5%88%80-%E5%AE%89%E8%A3%85openstack\" >5. \u5c0f\u8bd5\u725b\u5200-\u5b89\u88c5openstack<\/a><\/li><\/ul><\/nav><\/div>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_%E4%BB%80%E4%B9%88%E6%98%AFopenstack\"><\/span>1. \u4ec0\u4e48\u662fopenstack<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">openstack \u662f\u4e00\u4e2a\u4e91\u64cd\u4f5c\u7cfb\u7edf\uff0c\u53ef\u63a7\u5236\u6574\u4e2a\u6570\u636e\u4e2d\u5fc3\u5185\u7684\u5927\u91cf\u8ba1\u7b97\u3001\u5b58\u50a8\u548c\u7f51\u7edc\u8d44\u6e90\uff0c\u6240\u6709\u8d44\u6e90\u5747\u901a\u8fc7\u5177\u6709\u901a\u7528\u8eab\u4efd\u9a8c\u8bc1\u673a\u5236\u7684API\u8fdb\u884c\u7ba1\u7406\u548c\u914d\u7f6e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u63d0\u4f9b\u4eea\u8868\u677f\uff0c\u4f7f\u7ba1\u7406\u5458\u80fd\u591f\u8fdb\u884c\u63a7\u5236\uff0c\u540c\u65f6\u4f7f\u7528\u6237\u80fd\u591f\u901a\u8fc7Web\u754c\u9762\u914d\u7f6e\u8d44\u6e90\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86\u6807\u51c6\u7684\u57fa\u7840\u8bbe\u65bd\u5373\u670d\u52a1\u529f\u80fd\u4e4b\u5916\uff0c\u5176\u4ed6\u7ec4\u4ef6\u8fd8\u63d0\u4f9b\u7f16\u6392\u3001\u6545\u969c\u7ba1\u7406\u548c\u670d\u52a1\u7ba1\u7406\u7b49\u670d\u52a1\uff0c\u4ee5\u786e\u4fdd\u7528\u6237\u5e94\u7528\u7a0b\u5e8f\u7684\u9ad8\u53ef\u7528\u6027\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_kubernetes%E4%B8%8Eopenstack%E7%9A%84%E5%BC%82%E5%90%8C\"><\/span>2. kubernetes\u4e0eopenstack\u7684\u5f02\u540c<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">kubernetes\u4e0e openstack\u7531\u4e24\u4e2a\u4e0d\u540c\u7684\u793e\u533a\u521b\u5efa\uff0c\u89e3\u51b3\u4e24\u4e2a\u4e0d\u540c\u7684\u6280\u672f\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5c3d\u7ba1\u5b83\u4eec\u7684\u529f\u80fd\u6709\u65f6\u4f1a\u91cd\u53e0\uff0c\u4f46\u8fd0\u884c\u539f\u7406\u5374\u4e0d\u540c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"21_%E6%94%AF%E6%8C%81%E7%9A%84%E5%B7%A5%E4%BD%9C%E8%B4%9F%E8%BD%BD%E7%B1%BB%E5%9E%8B\"><\/span>2.1 \u652f\u6301\u7684\u5de5\u4f5c\u8d1f\u8f7d\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e4b\u524d\uff0copenstack\u652f\u6301\u865a\u62df\u673a\uff08VM\uff09\uff0c\u800ckubernetes\u66fe\u7ecf\u53ea\u652f\u6301\u5bb9\u5668\u3002\u73b0\u5728\u60c5\u51b5\u5df2\u5927\u4e0d\u76f8\u540c\u3002\u591a\u5e74\u6765\uff0c\u8fd9\u4e9b\u6280\u672f\u4e0d\u65ad\u53d1\u5c55\uff0c\u53ef\u786e\u4fdd\u8986\u76d6\u6240\u6709\u7c7b\u578b\u7684\u5de5\u4f5c\u8d1f\u8f7d\u3002openstack\u73b0\u901a\u8fc7Ironic\u9879\u76ee\u652f\u6301\u88f8\u673a\u5de5\u4f5c\u8d1f\u8f7d\uff0c\u5e76\u901a\u8fc7Magnum\u9879\u76ee\u652f\u6301\u5bb9\u5668\u5316\u5de5\u4f5c\u8d1f\u8f7d\u3002\u800ckubernetes\u7528\u6237\u53ef\u5229\u7528Metal\u7b49\u5de5\u5177\u914d\u7f6e\u7269\u7406\u673a\u548cKata\u5bb9\u5668\uff0c\u6216\u901a\u8fc7kubevirt\u914d\u7f6e\u865a\u62df\u673a\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"22_%E8%A3%B8%E6%9C%BA%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD\"><\/span>2.2 \u88f8\u673a\u7ba1\u7406\u529f\u80fd<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">openstack\u88ab\u8bbe\u8ba1\u4e3a\u76f4\u63a5\u5728\u88f8\u673a\u4e0a\u8fd0\u884c\u3002\u56e0\u6b64\uff0c\u5b83\u7684\u88f8\u673a\u7ba1\u7406\u529f\u80fd\u901a\u5e38\u6bd4kubernetes\u66f4\u52a0\u5148\u8fdb\u3002\u5c3d\u7ba1kubernetes\u4e5f\u53ef\u76f4\u63a5\u5728\u7269\u7406\u5c42\u4e0a\u8fd0\u884c\uff0c\u4f46openstack\u5df2\u5728\u8fd9\u4e00\u9886\u57df\u6df1\u8015\u5341\u4e09\u5e74\uff0c\u62e5\u6709\u66f4\u4e30\u5bcc\u7684\u7ecf\u9a8c\u3002openstack\u901a\u5e38\u80fd\u66f4\u597d\u5730\u652f\u6301\u4e0e\u73b0\u6709\u5404\u79cd\u50a8\u5b58\u5e73\u53f0\u548c\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc (SDN) \u63a7\u5236\u5668\u7684\u96c6\u6210\uff0c\u4ee5\u53ca\u4f17\u591a\u6027\u80fd\u6269\u5c55\uff08\u4f8b\u5982\u786c\u4ef6\u5378\u8f7d\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"23_%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD\"><\/span>2.3 \u5e94\u7528\u7a0b\u5e8f\u7ba1\u7406\u529f\u80fd<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u53e6\u4e00\u65b9\u9762\uff0ckubernetes\u5728\u5e94\u7528\u7a0b\u5e8f\u7ba1\u7406\u65b9\u9762\u662f\u9996\u5c48\u4e00\u6307\u7684\u3002kubernetes\u7684\u8bbe\u8ba1\u8003\u8651\u4e86\u5927\u91cf\u7684\u5e94\u7528\u7a0b\u5e8f\u7ba1\u7406\u529f\u80fd\uff0c\u5305\u62ecReplicaSet\u6216DaemonSet\u7b49\u5404\u79cd\u63a7\u5236\u5668\u4ee5\u53ca\u4e91\u539f\u751f\u529f\u80fd\u3002\u4f8b\u5982\uff0c\u8fd9\u4e9b\u5305\u62ec\u6eda\u52a8\u5347\u7ea7\u548c\u81ea\u52a8\u6269\u5c55\u3002\u867d\u7136openstack\u793e\u533a\u5728\u8fc7\u53bb\u52aa\u529b\u7528heat\u548cmurano\u9879\u76ee\u6765\u586b\u8865\u8fd9\u4e00\u5dee\u8ddd\uff0c\u4f46\u4ed6\u4eec\u5e76\u672a\u53d6\u5f97\u592a\u5927\u7684\u6210\u529f\uff0c\u4f7f\u5f97\u5176\u5728\u5e94\u7528\u7a0b\u5e8f\u7ba1\u7406\u9886\u57df\u843d\u540e\u4e8ekubernetes\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_%E7%BB%93%E5%90%88k8s%E4%B8%8Eopenstack%E7%9A%84%E4%BC%98%E5%8A%BF\"><\/span>3. \u7ed3\u5408k8s\u4e0eopenstack\u7684\u4f18\u52bf<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u8fd9\u4e00\u70b9\u4e0a\uff0c\u6211\u4eec\u5e94\u8be5\u6e05\u695a\u4e0d\u7ba1\u662fopenstack\u8fd8\u662fkubernetes\uff0c\u90fd\u4e0d\u80fd\u63d0\u4f9b\u53e6\u4e00\u4e2a\u9879\u76ee\u6240\u63d0\u4f9b\u7684\u5168\u90e8\u529f\u80fd\u3002\u5b83\u4eec\u5b8c\u5168\u662f\u4e3a\u4e86\u4e0d\u540c\u7684\u76ee\u7684\u800c\u751f\u3002\u56e0\u6b64\uff0c\u5c06\u5b83\u4eec\u6346\u7ed1\u5728\u4e00\u8d77\u4f7f\u7528\uff0c\u66f4\u80fd\u53d1\u6325\u91cd\u5927\u610f\u4e49\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"31_openstack%E4%B8%8A%E7%9A%84kubernetes\"><\/span>3.1 openstack\u4e0a\u7684kubernetes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728openstack\u4e0a\u8fd0\u884ckubernetes\u5177\u6709\u8bf8\u591a\u597d\u5904\u3002\u9996\u5148\uff0c\u8fd9\u6bd4\u76f4\u63a5\u5728\u88f8\u673a\u4e0a\u8fd0\u884c\u66f4\u4e3a\u7b80\u5355\u3002\u6709\u4e00\u4e9b\u5de5\u5177\u652f\u6301\u5728openstack\u4e0a\u5373\u65f6\u914d\u7f6ekubernetes\u96c6\u7fa4\uff0c\u5305\u62ecJuju\u3001Magnum\u6216Cluster API\u3002\u53d7\u76ca\u4e8eopenstack\u63d0\u4f9b\u7684\u591a\u79df\u6237\u6280\u672f\uff0c\u6bcf\u4e2a\u7528\u6237\u6216\u5b9e\u4f53\u53ef\u83b7\u5f97\u4ed6\u4eec\u81ea\u5df1\u7684\u4e91\u8d44\u6e90\u6c60\uff0c\u5e76\u5728\u5176\u4e2d\u6309\u9700\u542f\u52a8\u4ed6\u4eec\u7684k8s\u3002\u6b64\u5916\uff0c\u5982\u524d\u6240\u8ff0\uff0c\u8fd9\u4e9bk8s\u96c6\u7fa4\u4e5f\u53ef\u5229\u7528openstack\u7684\u91d1\u5c5e\u7ba1\u7406\u529f\u80fd\uff0c\u4f8b\u5982\u901a\u8fc7Octavia\u5b9e\u73b0\u9002\u5f53\u7684\u8d1f\u8f7d\u5e73\u8861\uff0cvGPU \u8d44\u6e90\u914d\u7f6e\u7b49\u7b49\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"32_kubernetes%E4%B8%8A%E7%9A%84openstack\"><\/span>3.2 kubernetes\u4e0a\u7684openstack<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728kubernetes\u4e0a\u8fd0\u884copenstack\u7684\u63a7\u5236\u5e73\u9762\uff08Control Plane\uff09\u4e5f\u5177\u6709\u5176\u4f18\u52bf\u3002\u6700\u91cd\u8981\u7684\u662f\uff0c\u5b83\u80fd\u591f\u66f4\u597d\u5730\u9694\u79bbopenstack\u670d\u52a1\uff0c\u6709\u6548\u5730\u5c06\u5b83\u4eec\u4ece\u5e95\u5c42\u64cd\u4f5c\u7cfb\u7edf\uff08OS\uff09\u4e2d\u5206\u79bb\u51fa\u6765\u3002\u6b64\u5916\uff0c\u5728\u8fd9\u6837\u7684\u8bbe\u7f6e\u4e2d\uff0copenstack\u53ef\u53d7\u76ca\u4e8ekubernetes\u63d0\u4f9b\u7684\u751f\u547d\u5468\u671f\u7ba1\u7406\u529f\u80fd\uff0c\u5927\u5927\u7b80\u5316\u5347\u7ea7\u7b49\u5386\u6765\u5c31\u5341\u5206\u590d\u6742\u7684\u64cd\u4f5c\u3002\u6700\u540e\uff0c\u5bf9k8s\u8fdb\u884c\u6807\u51c6\u5316\u53ef\u8ba9openstack\u7684\u67b6\u6784\u53d8\u5f97\u76f8\u5bf9\u8f7b\u76c8\uff0c\u6709\u6548\u5c06\u5176\u8f6c\u53d8\u6210\u6240\u6709\u4eba\u90fd\u53ef\u4f7f\u7528\u7684\u4e1c\u897f\uff0c\u751a\u81f3\u5728\u4ed6\u4eec\u7684\u5de5\u4f5c\u7ad9\u4e0a\u76f4\u63a5\u8f6c\u53d8\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"33_%E5%A0%86%E5%8F%A0%E6%A0%88\"><\/span>3.3 \u5806\u53e0\u6808<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bd5\u60f3\u4e0b\uff0c\u6211\u4eec\u5728kubernetes\u4e0a\u7684openstack\u4e0a\u8bbe\u7f6ekubernetes\u5450\uff1f\u662f\u4e0d\u662f\u5f88\u6709\u8da3\uff01\u5373\u4f7f\u542c\u8d77\u6765\u6709\u4e9b\u522b\u626d\uff0c\u4f46\u8be5\u67b6\u6784\u8bbe\u7f6e\u5177\u6709\u6700\u591a\u4f18\u52bf\uff0c\u53ef\u6709\u6548\u7684\u652f\u6301\u5728\u4e00\u4e2a\u5e73\u53f0\u4e0a\u7ed3\u5408\u8fd9\u4e24\u8005\u7684\u4f18\u52bf\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_openstack%E6%A0%BC%E5%B1%80\"><\/span>4. openstack\u683c\u5c40<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">openstack\u88ab\u5206\u89e3\u4e3a\u591a\u4e2a\u670d\u52a1\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5373\u63d2\u5373\u7528\u7ec4\u4ef6\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/openstack\u67b6\u6784\u56fe.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 4000px; --smush-placeholder-aspect-ratio: 4000\/2250;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5173\u4e8e\u90e8\u5206\u7ec4\u4ef6\u89e3\u91ca\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\uff09Nova<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9e\u65bd\u670d\u52a1\u548c\u76f8\u5173\u5e93\uff0c\u4ee5\u63d0\u4f9b\u5bf9\u8ba1\u7b97\u8d44\u6e90\uff08\u5305\u62ec\u88f8\u673a\u3001\u865a\u62df\u673a\u548c\u5bb9\u5668\uff09\u7684\u5927\u89c4\u6a21\u53ef\u6269\u5c55\u3001\u6309\u9700\u3001\u81ea\u52a9\u670d\u52a1\u8bbf\u95ee\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\uff09Ironic<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9e\u73b0\u670d\u52a1\u548c\u76f8\u5173\u5e93\uff0c\u4ee5\u63d0\u4f9b\u5bf9\u8ba1\u7b97\u8d44\u6e90\uff08\u5305\u62ec\u88f8\u673a\u3001\u865a\u62df\u673a\u548c\u5bb9\u5668\uff09\u7684\u5927\u89c4\u6a21\u53ef\u6269\u5c55\u3001\u6309\u9700\u3001\u81ea\u52a9\u8bbf\u95ee\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\uff09Swift<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swift\u662f\u4e00\u4e2a\u9ad8\u5ea6\u53ef\u7528\u7684\u3001\u5206\u5e03\u5f0f\u7684\u3001\u6700\u7ec8\u4e00\u81f4\u7684\u5bf9\u8c61\/blob\u5b58\u50a8\u3002\u7ec4\u7ec7\u53ef\u4ee5\u4f7f\u7528Swift\u9ad8\u6548\u3001\u5b89\u5168\u3001\u5ec9\u4ef7\u5730\u5b58\u50a8\u5927\u91cf\u6570\u636e\u3002\u5b83\u662f\u4e3a\u6269\u5c55\u800c\u6784\u5efa\u7684\uff0c\u5e76\u9488\u5bf9\u6574\u4e2a\u6570\u636e\u96c6\u7684\u8010\u7528\u6027\u3001\u53ef\u7528\u6027\u548c\u5e76\u53d1\u6027\u8fdb\u884c\u4e86\u4f18\u5316\u3002Swift\u975e\u5e38\u9002\u5408\u5b58\u50a8\u65e0\u7ea6\u675f\u589e\u957f\u7684\u975e\u7ed3\u6784\u5316\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\uff09Neutron<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenStack Neutron\u662f\u4e00\u4e2aSDN\u7f51\u7edc\u9879\u76ee\uff0c\u4e13\u6ce8\u4e8e\u5728\u865a\u62df\u8ba1\u7b97\u73af\u5883\u4e2d\u63d0\u4f9b\u7f51\u7edc\u5373\u670d\u52a1\uff08NaaS\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5\uff09Keystone<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keystone\u662f\u4e00\u9879OpenStack\u670d\u52a1\uff0c\u901a\u8fc7\u5b9e\u73b0OpenStack\u7684Identity API\uff0c\u63d0\u4f9bAPI\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u3001\u670d\u52a1\u53d1\u73b0\u548c\u5206\u5e03\u5f0f\u591a\u5bf9\u7aef\u6388\u6743\u3002\u5b83\u652f\u6301LDAP\u3001OAuth\u3001OpenIDConnect\u3001SAML\u548cSQL\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6\uff09Placement<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Placement\u662f\u4e00\u4e2aOpenStack\u670d\u52a1\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e00\u4e2aHTTP API\u6765\u8ddf\u8e2a\u4e91\u8d44\u6e90\u6e05\u5355\u548c\u4f7f\u7528\u60c5\u51b5\uff0c\u4ee5\u5e2e\u52a9\u5176\u4ed6\u670d\u52a1\u6709\u6548\u5730\u7ba1\u7406\u548c\u5206\u914d\u5176\u8d44\u6e90\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7\uff09Glance<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Glance\u955c\u50cf\u670d\u52a1\u5305\u62ec\u53d1\u73b0\u3001\u6ce8\u518c\u548c\u68c0\u7d22\u865a\u62df\u673a\u955c\u50cf\u3002Glance\u6709\u4e00\u4e2aRESTful API\uff0c\u5b83\u5141\u8bb8\u67e5\u8be2\u865a\u62df\u673a\u6620\u50cf\u5143\u6570\u636e\u4ee5\u53ca\u68c0\u7d22\u5b9e\u9645\u6620\u50cf\u3002\u901a\u8fc7Glance\u63d0\u4f9b\u7684\u865a\u62df\u673a\u6620\u50cf\u53ef\u4ee5\u5b58\u50a8\u5728\u5404\u79cd\u4f4d\u7f6e\uff0c\u4ece\u7b80\u5355\u7684\u6587\u4ef6\u7cfb\u7edf\u5230\u50cfOpenStack Swift\u9879\u76ee\u8fd9\u6837\u7684\u5bf9\u8c61\u5b58\u50a8\u7cfb\u7edf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8\uff09Barbican<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Barbican\u662fOpenStack\u5bc6\u94a5\u7ba1\u7406\u5668\u670d\u52a1\u3002\u5b83\u63d0\u4f9b\u79d8\u5bc6\u6570\u636e\u7684\u5b89\u5168\u5b58\u50a8\u3001\u4f9b\u5e94\u548c\u7ba1\u7406\uff0c\u5982\u5bc6\u7801\u3001\u52a0\u5bc6\u5bc6\u94a5\u3001X.509\u8bc1\u4e66\u548c\u539f\u59cb\u4e8c\u8fdb\u5236\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9\uff09Heat<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heat\u57fa\u4e8e\u53ef\u4ee5\u50cf\u4ee3\u7801\u4e00\u6837\u5904\u7406\u7684\u6587\u672c\u6587\u4ef6\u5f62\u5f0f\u7684\u6a21\u677f\uff0c\u4e3a\u4e91\u5e94\u7528\u7a0b\u5e8f\u7f16\u6392\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90\u3002Heat\u63d0\u4f9b\u4e86\u4e00\u4e2aOpenStack-native ReST API\u548c\u4e00\u4e2aCloudFormation\u517c\u5bb9\u7684Query API\u3002Heat\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4e2a\u4e0eOpenStack Telemetry\u670d\u52a1\u96c6\u6210\u7684\u81ea\u52a8\u7f29\u653e\u670d\u52a1\uff0c\u56e0\u6b64\u53ef\u4ee5\u5c06\u7f29\u653e\u7ec4\u4f5c\u4e3a\u8d44\u6e90\u5305\u542b\u5728\u6a21\u677f\u4e2d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">10\uff09Horizon <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Horizon\u662fOpenStack\u4eea\u8868\u677f\u7684\u89c4\u8303\u5b9e\u73b0\uff0c\u5b83\u662f\u53ef\u6269\u5c55\u7684\uff0c\u5e76\u4e3aOpenStack\u670d\u52a1\u63d0\u4f9b\u4e86\u4e00\u4e2a\u57fa\u4e8eweb\u7684\u7528\u6237\u754c\u9762\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_%E5%B0%8F%E8%AF%95%E7%89%9B%E5%88%80-%E5%AE%89%E8%A3%85openstack\"><\/span>5. \u5c0f\u8bd5\u725b\u5200-\u5b89\u88c5openstack<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1\uff09\u5728master\u8282\u70b9\u4e0a\uff0c\u4e3akubernetes\u5404\u8282\u70b9\u6253\u4e0a\u6807\u7b7e<\/strong><br>kubectl label nodes k8s-master openstack-control-plane=enabled<br>kubectl label nodes k8s-slave1 openstack-compute-node=enabled<br>kubectl label nodes k8s-slave2 openvswitch=enabled<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/\u4e3a\u8282\u70b9\u6253\u6807\u7b7e.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1308px; --smush-placeholder-aspect-ratio: 1308\/242;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2\uff09\u5728master\u8282\u70b9\u4e0a\uff0cOpenStack-Helm \u5404\u4e2a\u670d\u52a1\u7684 endpoints URL \u90fd\u662f\u4ee5 *.openstack.svc.cluster.local \u57df\u540d\u7684\u5f62\u5f0f\uff0c\u914d\u7f6e\u672c\u5730hosts\u89e3\u6790\uff1a<\/strong><br>cat &gt;&gt;\/etc\/hosts&lt;&lt;EOF<br>192.168.2.148 keystone.openstack.svc.cluster.local<br>192.168.2.148 heat.openstack.svc.cluster.local<br>192.168.2.148 glance.openstack.svc.cluster.local<br>192.168.2.148 nova.openstack.svc.cluster.local<br>192.168.2.148 neutron.openstack.svc.cluster.local<br>192.168.2.148 heat-api.openstack.svc.cluster.local<br>192.168.2.148 horizon-int.openstack.svc.cluster.local<br>EOF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3\uff09\u5728\u5168\u90e8\u8282\u70b9\u4e0a\uff0c\u6839\u636e\u9700\u8981\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684git\u3001make\u7b49<\/strong><br>yum install -y ca-certificates git make jq nmap curl uuid-runtime bc python3-pip<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4\uff09\u5728master\u8282\u70b9\u4e0a\uff0c\u514b\u9686\u5305\u542b OpenStack-Helm chart\u7684git\u4ed3\u5e93<\/strong><br>git clone https:\/\/opendev.org\/openstack\/openstack-helm-infra.git<br>git clone https:\/\/opendev.org\/openstack\/openstack-helm.git<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5\uff09\u5b9a\u4e49openstack\u5b89\u88c5\u7248\u672c\uff0c\u672c\u793a\u4f8b\u4e3axena<\/strong><br>[root@k8s-master openstack-helm]# cd openstack-helm<br>[root@k8s-master openstack-helm]# cat tools\/deployment\/common\/setup-client.sh | grep OPENSTACK_RELEASE<br>-c${UPPER_CONSTRAINTS_FILE:=https:\/\/releases.openstack.org\/constraints\/upper\/${OPENSTACK_RELEASE:-xena}} \\<br>[root@k8s-master openstack-helm]# cat tools\/deployment\/common\/get-values-overrides.sh | grep OPENSTACK_RELEASE:<br>: &#8220;${OPENSTACK_RELEASE:=&#8221;xena&#8221;}&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/openstack\u5b89\u88c5\u7248\u672c.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1736px; --smush-placeholder-aspect-ratio: 1736\/238;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6\uff09\u521b\u5efa\u547d\u540d\u7a7a\u95f4<\/strong><br>kubectl create ns openstack<br>kubectl create ns ceph<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>7\uff09\u5b89\u88c5openstack\u5ba2\u6237\u7aef<\/strong><br>\u7ed9\u6240\u6709\u8282\u70b9 \u914d\u7f6e\u56fd\u5185pip\u6e90<br>mkdir ~\/.pip<br>cat &gt; ~\/.pip\/pip.conf &lt;&lt; EOF<br>[global]<br>trusted-host=mirrors.aliyun.com<br>index-url=https:\/\/mirrors.aliyun.com\/pypi\/simple\/<br>EOF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[root@k8s-master openstack-helm]# cd openstack-helm<br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/common\/setup-client.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9a8c\u8bc1\u5ba2\u6237\u7aef\u5b89\u88c5<br>[root@k8s-master openstack-helm]# openstack &#8211;version<br>openstack 5.6.2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>8\uff09\u5b89\u88c5 ingress<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/common\/ingress.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u521b\u5efa\u7684pods<br>kubectl get pods -n openstack -l application=ingress<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/ingress.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1258px; --smush-placeholder-aspect-ratio: 1258\/142;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>9\uff09\u5b89\u88c5 NFS Provisioner<\/strong><br>[root@k8s-master openstack-helm]# mkdir -p \/var\/lib\/openstack-helm\/nfs<br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/nfs-provisioner\/nfs-provisioner.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u521b\u5efa\u7684pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n nfs -l application=nfs<br>NAME READY STATUS RESTARTS AGE<br>nfs-provisioner-5fbd577c5b-9d5qr 1\/1 Running 0 4m30s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/nfs\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1220px; --smush-placeholder-aspect-ratio: 1220\/110;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u521b\u5efa\u7684storageclass<br>[root@k8s-master openstack-helm]# kubectl get sc<br>NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE<br>general nfs\/nfs-provisioner Delete Immediate false 6m13s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/nfs\u7684sc.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1508px; --smush-placeholder-aspect-ratio: 1508\/100;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u8282\u70b9\u5b89\u88c5nfs\u5ba2\u6237\u7aef<br>yum install nfs-utils -y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>10\uff09\u5b89\u88c5 MariaDB<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/common\/mariadb.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684mariadb pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=mariadb<br>NAME READY STATUS RESTARTS AGE<br>mariadb-ingress-779bdc967d-bl695 1\/1 Running 0 3m14s<br>mariadb-ingress-779bdc967d-t67v2 1\/1 Running 0 3m14s<br>mariadb-ingress-error-pages-85f967dc75-s4mkf 1\/1 Running 0 3m14s<br>mariadb-server-0 1\/1 Running 0 3m13s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/mariadb\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1346px; --smush-placeholder-aspect-ratio: 1346\/196;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>11\uff09\u5b89\u88c5 RabbitMQ<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/common\/rabbitmq.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684rabbitmq pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=rabbitmq<br>NAME READY STATUS RESTARTS AGE<br>rabbitmq-cluster-wait-5g59d 0\/1 Completed 0 5m27s<br>rabbitmq-rabbitmq-0 1\/1 Running 0 5m28s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/rabbitmq\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1360px; --smush-placeholder-aspect-ratio: 1360\/134;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>12\uff09\u5b89\u88c5 Memcached<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/common\/memcached.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684memcached pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=memcached<br>NAME READY STATUS RESTARTS AGE<br>memcached-memcached-c67796474-ph8sx 1\/1 Running 0 62s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/memcached\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1382px; --smush-placeholder-aspect-ratio: 1382\/98;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>13\uff09\u5b89\u88c5 Keystone<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/keystone\/keystone.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684keystone pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=keystone<br>NAME READY STATUS RESTARTS AGE<br>keystone-api-748569599b-schw7 1\/1 Running 0 10m<br>keystone-bootstrap-jws2b 0\/1 Completed 0 6m48s<br>keystone-credential-setup-x78fv 0\/1 Completed 0 10m<br>keystone-db-init-ps58p 0\/1 Completed 0 9m11s<br>keystone-db-sync-kd9k8 0\/1 Completed 0 8m8s<br>keystone-domain-manage-r6xqh 0\/1 Completed 0 7m37s<br>keystone-fernet-setup-4c48c 0\/1 Completed 0 8m18s<br>keystone-rabbit-init-9jbpt 0\/1 Completed 0 7m43s<br>keystone-test 0\/1 Completed 0 5m54s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/keystone\u7684pod.png\" alt=\"\" style=\"--smush-placeholder-width: 1374px; --smush-placeholder-aspect-ratio: 1374\/382;width:840px;height:auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>14\uff09\u5b89\u88c5 Heat<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/heat\/heat.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684heat pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=heat<br>NAME READY STATUS RESTARTS AGE<br>heat-api-6bf8998ff5-rm48w 1\/1 Running 0 9m50s<br>heat-bootstrap-mk9xv 0\/1 Completed 0 7m43s<br>heat-cfn-548954864c-w4rrp 1\/1 Running 0 9m50s<br>heat-db-init-4q6h2 0\/1 Completed 0 9m49s<br>heat-db-sync-w65dk 0\/1 Completed 0 9m41s<br>heat-domain-ks-user-xb8mb 0\/1 Completed 0 7m30s<br>heat-engine-cleaner-28338480-x82bv 0\/1 Completed 0 7m50s<br>heat-engine-cleaner-28338485-qndq7 0\/1 Completed 0 2m50s<br>heat-engine-f7c855cf7-96wb7 1\/1 Running 0 9m50s<br>heat-ks-endpoints-ddmlm 0\/6 Completed 0 8m55s<br>heat-ks-service-xj9ps 0\/2 Completed 0 9m21s<br>heat-ks-user-r8l7q 0\/1 Completed 0 8m25s<br>heat-rabbit-init-qlkpw 0\/1 Completed 0 9m29s<br>heat-trustee-ks-user-r6w6c 0\/1 Completed 0 6m47s<br>heat-trusts-vg69f 0\/1 Completed 0 6m5s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/heat\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1306px; --smush-placeholder-aspect-ratio: 1306\/574;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>15\uff09\u5b89\u88c5 Horizon<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/horizon\/horizon.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684horizon pods<br>[root@k8s-master openstack-helm]# kubectl get pods -n openstack -l application=horizon<br>NAME READY STATUS RESTARTS AGE<br>horizon-7dbcdf9f8b-vxr9n 1\/1 Running 0 5m16s<br>horizon-db-init-lnt74 0\/1 Completed 0 5m16s<br>horizon-db-sync-vvxq2 0\/1 Completed 0 5m6s<br>horizon-test 0\/1 Completed 0 2m29s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/horizon\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1344px; --smush-placeholder-aspect-ratio: 1344\/198;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">horizon-int \u5bf9\u5e94\u7684\u5c31\u662f Dashboard \u670d\u52a1\uff0c\u5b83\u7684\u7c7b\u578b\u662f NodePort\uff0c\u6620\u5c04\u7684\u7aef\u53e3\u53f7\u662f 31000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>16\uff09\u5b89\u88c5 Glance<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/glance\/glance.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u4e2d\/tmp\/glance.yaml\u5b9a\u4e49\u4e86glance\u4f7f\u7528\u7684\u5b58\u50a8\u7c7b\u578b\uff0cvalues.yaml\u4e2d\u652f\u6301\u7684\u5b58\u50a8\u7c7b\u578b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># radosgw, rbd, swift or pvc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">storage: swift<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u524d Glance \u652f\u6301\u51e0\u79cd backend storage:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pvc: \u4e00\u4e2a\u7b80\u5355\u7684 Kubernetes PVC\u5b58\u50a8\u540e\u7aef\u3002<br>rbd: \u4f7f\u7528 Ceph RBD \u6765\u5b58\u50a8 images\u3002<br>radosgw: \u4f7f\u7528 Ceph RGW \u6765\u5b58\u50a8 images\u3002<br>swift: \u53e6\u7528 OpenStack switf \u6240\u63d0\u4f9b\u7684\u5bf9\u8c61\u5b58\u50a8\u6765\u5b58\u50a8 images.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684glance pods<br>[root@k8s-master ~]# kubectl get pods -n openstack -l application=glance<br>NAME READY STATUS RESTARTS AGE<br>glance-api-869959bffd-mgwc2 1\/1 Running 0 19m<br>glance-bootstrap-xwkjv 0\/1 Completed 3 18m<br>glance-db-init-twvsp 0\/1 Completed 0 19m<br>glance-db-sync-bf2zl 0\/1 Completed 0 19m<br>glance-ks-endpoints-mj97j 0\/3 Completed 0 19m<br>glance-ks-service-x4dnn 0\/1 Completed 0 19m<br>glance-ks-user-69plf 0\/1 Completed 0 18m<br>glance-metadefs-load-xfldv 0\/1 Completed 0 18m<br>glance-rabbit-init-6zvll 0\/1 Completed 0 19m<br>glance-storage-init-jq256 0\/1 Completed 0 18m<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/glance\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1132px; --smush-placeholder-aspect-ratio: 1132\/406;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>17\uff09\u5b89\u88c5 OpenvSwitch<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/compute-kit\/openvswitch.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684openvswitch pods<br>[root@k8s-master ~]# kubectl get pods -n openstack -l application=openvswitch<br>NAME READY STATUS RESTARTS AGE<br>openvswitch-wwwk6 2\/2 Running 0 2m43s<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/openvswitch\u7684pod.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1208px; --smush-placeholder-aspect-ratio: 1208\/104;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>18\uff09\u5b89\u88c5 Libvirt<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/compute-kit\/libvirt.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684libvirt pods<br>[root@k8s-master networks]# kubectl get po -n openstack -l application=libvirt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>19\uff09\u5b89\u88c5 Compute Kit (Nova and Neutron)<\/strong><br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/component\/compute-kit\/compute-kit.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684placement pods<br>[root@k8s-master ~]# kubectl get pods -n openstack -l application=placement<br>NAME READY STATUS RESTARTS AGE<br>placement-api-556bf56cdf-zgwp9 1\/1 Running 0 39m<br>placement-db-init-6g6ph 0\/1 Completed 0 39m<br>placement-db-sync-krdnf 0\/1 Completed 0 39m<br>placement-ks-endpoints-sxnnx 0\/3 Completed 0 38m<br>placement-ks-service-zpk8j 0\/1 Completed 0 39m<br>placement-ks-user-qv622 0\/1 Completed 0 38m<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684nova pods<br>[root@k8s-master ~]# kubectl get pods -n openstack -l application=nova<br>NAME READY STATUS RESTARTS AGE<br>nova-api-metadata-cd7bb68bc-p5qc2 1\/1 Running 1 (35m ago) 39m<br>nova-api-osapi-7f7dc9f44-ccbkg 1\/1 Running 0 39m<br>nova-bootstrap-26dbc 1\/1 Running 0 39m<br>nova-cell-setup-28342680-wfjbw 0\/1 Completed 0 17m<br>nova-cell-setup-r5vqh 0\/1 Completed 0 39m<br>nova-compute-default-x9fnm 1\/1 Running 0 39m<br>nova-conductor-57bbb4b999-8n95p 1\/1 Running 0 39m<br>nova-db-init-ffxvj 0\/3 Completed 0 39m<br>nova-db-sync-n9mz4 0\/1 Completed 0 39m<br>nova-ks-endpoints-25xk6 0\/3 Completed 0 37m<br>nova-ks-service-jqqbb 0\/1 Completed 0 37m<br>nova-ks-user-v6fzg 0\/1 Completed 0 36m<br>nova-novncproxy-67fbf56db4-b424b 1\/1 Running 0 39m<br>nova-rabbit-init-459&#215;9 0\/1 Completed 0 37m<br>nova-scheduler-79ddc44bc9-t7rkq 1\/1 Running 0 39m<br>nova-service-cleaner-28342680-72pxq 0\/1 Completed 0 17m<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u90e8\u7f72\u7684neutron pods<br>[root@k8s-master ~]# kubectl get pods -n openstack -l application=neutron<br>NAME READY STATUS RESTARTS AGE<br>neutron-db-init-tkqvb 0\/1 Completed 0 36m<br>neutron-db-sync-h2zht 0\/1 Completed 0 36m<br>neutron-dhcp-agent-default-p9855 1\/1 Running 0 36m<br>neutron-ks-endpoints-p5mtm 0\/3 Completed 0 35m<br>neutron-ks-service-cv2tb 0\/1 Completed 0 36m<br>neutron-ks-user-7wtff 0\/1 Completed 0 35m<br>neutron-metadata-agent-default-dnhkn 1\/1 Running 0 36m<br>neutron-netns-cleanup-cron-default-j6z84 1\/1 Running 0 36m<br>neutron-ovs-agent-default-stzrx 1\/1 Running 0 36m<br>neutron-rabbit-init-rvtlk 0\/1 Completed 0 36m<br>neutron-server-649f5f9fbb-96w5j 1\/1 Running 0 36m<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>20\uff09\u8bbe\u7f6e public network\u7684gateway<\/strong><br>\u7ed9\u6bcf\u4e2a\u8282\u70b9\u5b89\u88c5\u4f9d\u8d56\u5305<br>[root@k8s-master openstack-helm]# yum install net-tools -y<br>\u7136\u540e\u6267\u884c\uff1a<br>[root@k8s-master openstack-helm]# cat .\/tools\/deployment\/common\/setup-gateway.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#\u4ee5\u4e0b\u4e24\u4e2a\u53c2\u6570\u4fdd\u6301\u9ed8\u8ba4\u5373\u53ef<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#Assign IP address to br-ex<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">: ${OSH_EXT_SUBNET:=&#8221;172.24.4.0\/24&#8243;}<br>: ${OSH_BR_EX_ADDR:=&#8221;172.24.4.1\/24&#8243;}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[root@k8s-master openstack-helm]# .\/tools\/deployment\/common\/setup-gateway.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>21\uff09Exercise the Cloud<\/strong><br>\u90e8\u7f72 OpenStack-Helm \u540e\uff0c\u53ef\u4ee5\u4f7f\u7528 OpenStack \u5ba2\u6237\u7aef\u6216validation gates\u4e2d\u4f7f\u7528\u7684\u76f8\u540c heat \u6a21\u677f\u6765\u8fd0\u884c\u4e91\u3002<br>[root@k8s-master openstack-helm]# .\/tools\/deployment\/common\/use-it.sh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>22\uff09\u67e5\u770b\u521b\u5efa\u7684\u8d44\u6e90<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770bservice<br>[root@k8s-master openstack-helm]# kubectl get svc -n openstack<br>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE<br>cloudformation ClusterIP 10.98.184.197 80\/TCP,443\/TCP 2d22h<br>glance ClusterIP 10.110.30.27 80\/TCP,443\/TCP 2d20h<br>glance-api ClusterIP 10.98.213.245 9292\/TCP 2d20h<br>heat ClusterIP 10.100.247.210 80\/TCP,443\/TCP 2d22h<br>heat-api ClusterIP 10.103.161.38 8004\/TCP 2d22h<br>heat-cfn ClusterIP 10.102.25.102 8000\/TCP 2d22h<br>horizon ClusterIP 10.110.32.8 80\/TCP,443\/TCP 2d22h<br>horizon-int NodePort 10.107.94.4 80:31000\/TCP 2d22h<br>ingress ClusterIP 10.96.122.66 80\/TCP,443\/TCP,10246\/TCP 3d2h<br>ingress-error-pages ClusterIP None 80\/TCP 3d2h<br>ingress-exporter ClusterIP 10.109.233.129 10254\/TCP 3d2h<br>keystone ClusterIP 10.106.174.60 80\/TCP,443\/TCP 2d23h<br>keystone-api ClusterIP 10.100.56.3 5000\/TCP 2d23h<br>mariadb ClusterIP 10.109.212.62 3306\/TCP 3d<br>mariadb-discovery ClusterIP None 3306\/TCP,4567\/TCP 3d<br>mariadb-ingress-error-pages ClusterIP None 80\/TCP 3d<br>mariadb-server ClusterIP 10.111.132.147 3306\/TCP 3d<br>memcached ClusterIP 10.103.187.219 11211\/TCP 2d23h<br>metadata ClusterIP 10.100.205.253 80\/TCP,443\/TCP 74m<br>neutron ClusterIP 10.105.22.8 80\/TCP,443\/TCP 71m<br>neutron-server ClusterIP 10.96.49.4 9696\/TCP 71m<br>nova ClusterIP 10.97.111.65 80\/TCP,443\/TCP 74m<br>nova-api ClusterIP 10.107.112.60 8774\/TCP 74m<br>nova-metadata ClusterIP 10.97.197.254 8775\/TCP 74m<br>nova-novncproxy ClusterIP 10.111.65.13 6080\/TCP 74m<br>novncproxy ClusterIP 10.105.220.245 80\/TCP,443\/TCP 74m<br>placement ClusterIP 10.96.59.125 80\/TCP,443\/TCP 76m<br>placement-api ClusterIP 10.97.99.41 8778\/TCP 76m<br>rabbitmq ClusterIP None 5672\/TCP,25672\/TCP,15672\/TCP,15692\/TCP 3d<br>rabbitmq-mgr-7b1733 ClusterIP 10.99.162.173 80\/TCP,443\/TCP 3d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770bingress<br>[root@k8s-master openstack-helm]# kubectl get ingress -A<br>NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE<br>ceph ceph-ingress-ceph nginx-ceph *.ceph.svc.cluster.local 192.168.2.148 80 3d2h<br>openstack cloudformation nginx cloudformation,cloudformation.openstack,cloudformation.openstack.svc.cluster.local 192.168.2.148 80 2d22h<br>openstack glance nginx glance,glance.openstack,glance.openstack.svc.cluster.local 192.168.2.148 80 2d20h<br>openstack heat nginx heat,heat.openstack,heat.openstack.svc.cluster.local 192.168.2.148 80 2d22h<br>openstack horizon nginx horizon,horizon.openstack,horizon.openstack.svc.cluster.local 192.168.2.148 80 2d22h<br>openstack keystone nginx keystone,keystone.openstack,keystone.openstack.svc.cluster.local 192.168.2.148 80 2d23h<br>openstack metadata nginx metadata,metadata.openstack,metadata.openstack.svc.cluster.local 192.168.2.148 80 76m<br>openstack neutron nginx neutron,neutron.openstack,neutron.openstack.svc.cluster.local 192.168.2.148 80 73m<br>openstack nova nginx nova,nova.openstack,nova.openstack.svc.cluster.local 192.168.2.148 80 76m<br>openstack novncproxy nginx novncproxy,novncproxy.openstack,novncproxy.openstack.svc.cluster.local 192.168.2.148 80 76m<br>openstack openstack-ingress-openstack nginx *.openstack.svc.cluster.local 192.168.2.148 80 3d2h<br>openstack placement nginx placement,placement.openstack,placement.openstack.svc.cluster.local 192.168.2.148 80 78m<br>openstack rabbitmq-mgr-7b1733 nginx rabbitmq-mgr-7b1733,rabbitmq-mgr-7b1733.openstack,rabbitmq-mgr-7b1733.openstack.svc.cluster.local 192.168.2.148 80 3d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>23\uff09\u8bbf\u95eehorizon<\/strong><br>\u5728web\u4e2d\u8bbf\u95ee\u4ee5\u4e0b\u5730\u5740\uff0c\u7528\u6237\u540d\u5bc6\u7801\u4e3a\uff1aadmin\/password\uff0c\u57df\u4e3adefault<br>http:\/\/192.168.2.148:31000<br>\u767b\u9646horizon<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.dataz8.com\/wp-content\/uploads\/2023\/11\/openstack-horizon-web.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1706px; --smush-placeholder-aspect-ratio: 1706\/1408;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c2\u8003\u94fe\u63a5\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">https:\/\/www.openstack.org\/software\/<br>https:\/\/cn.ubuntu.com\/blog\/kubernetes-vs-openstack-cn<br>https:\/\/blog.csdn.net\/networken\/article\/details\/132527961<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \u4ec0\u4e48\u662fopenstack openstack \u662f\u4e00\u4e2a\u4e91 &#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_zb_attr":"","zolo_post_video_link":"","footnotes":""},"categories":[5],"tags":[],"series":[],"class_list":["post-1339","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/posts\/1339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1339"}],"version-history":[{"count":69,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/posts\/1339\/revisions"}],"predecessor-version":[{"id":1541,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=\/wp\/v2\/posts\/1339\/revisions\/1541"}],"wp:attachment":[{"href":"https:\/\/www.dataz8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1339"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.dataz8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=1339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}