{"id":40684,"date":"2023-12-16T17:54:49","date_gmt":"2023-07-28T05:57:30","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/"},"modified":"2024-05-04T13:53:44","modified_gmt":"2024-05-04T05:53:44","slug":"%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/","title":{"rendered":"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD"},"content":{"rendered":"<p>\u672c\u6587\u662f\u201cKubernetes2 Advent Calendar 2020\u201d\u7b2c8\u5929\u7684\u6587\u7ae0\u3002\u8c22\u8c22\u3002<\/p>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8e\u5728Kubernetes\u4e0a\u4f7f\u7528Rook\/Ceph\u7684\u5757\u5b58\u50a8\u548c\u5bf9\u8c61\u5b58\u50a8\u6765\u6269\u5c55GROWI Wiki\u7684\u529f\u80fd\u7684\u7eed\u7bc7\u3002<\/p>\n<h1>\u592a\u957f\uff1b\u6ca1\u8bfb\u3002<\/h1>\n<p>\u6211\u4f7f\u7528Skaffold\u5728Kubernetes\u4e0a\u6784\u5efa\u5e76\u90e8\u7f72\u4e86\u5e26\u6709&#8221;Elasticsearch\u548cHackMD&#8221;\u7684GROWI\u3002<\/p>\n<p>zaki-lknr\/growi-on-k8s\uff1a\u8fd0\u884c\u5728Kubernetes\u4e0a\u7684GROWI Wiki<\/p>\n<h1>\u5f15\u8a00<\/h1>\n<p>\u6211\u5011\u5728\u524d\u5e7e\u5929\uff0cRook\u548c\u6211\u5011\u7684\u5925\u4f34\u5011\u5728\u300c2020\u5e74\u5ea6\u96f2\u539f\u751f\u5b58\u5132\u5668Advent Calendar\u300d\u7684\u7b2c\u4e09\u5929\u6295\u7a3f\u4e86\u4ee5\u4e0b\u7684\u6587\u7ae0\u3002<\/p>\n<p>\u4f7f\u7528Rook\/Ceph\u7684\u5757\u5b58\u50a8\u548c\u5bf9\u8c61\u5b58\u50a8\u5728Kubernetes\u4e0a\u8fd0\u884cGROWI Wiki &#8211; Qiita<\/p>\n<p>\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d\uff0c\u7531\u4e8e\u65e0\u6cd5\u89e3\u51b3vm.max_map_count\u9519\u8bef\u5e76\u5c06\u5176\u4f5c\u4e3a\u5bf9\u8c61\u5b58\u50a8\u6587\u7ae0\u7684\u9644\u5e26\u5185\u5bb9\uff0cGROWI\u7684Elasticsearch\u96c6\u6210\uff08\u4e5f\u8bb8\u662f\u4e00\u4e2a\u9009\u9879\uff09\u88ab\u7701\u7565\u6389\u4e86\u3002\u6240\u4ee5\u73b0\u5728\u8ba9\u6211\u4eec\u91cd\u65b0\u8bbe\u7f6eElasticsearch\u5e76\u5c1d\u8bd5\u90e8\u7f72\u53ef\u7528\u4e8e\u641c\u7d22\u7684GROWI on Kubernetes\u3002<\/p>\n<h1>\u4f7f\u7528Elasticsearch\u6765\u5b9e\u73b0GROWI.<\/h1>\n<p>\u5efa\u8bae\u4f7f\u7528Docker Compose\u7248\u672c\u7684GROWI\u6765\u5b9a\u4e49\u57fa\u4e8eElasticsearch\u7684\u4f7f\u7528\u3002<\/p>\n<h2>\u5b89\u88c5\u65e5\u8bed\u63d2\u4ef6\u3002<\/h2>\n<p>\u4e3a\u4e86\u5728GROWI\u4e2d\u4f7f\u7528\uff0c\u6211\u4eec\u5c06\u5b89\u88c5\u4ee5\u4e0b\u7684\u65e5\u8bed\u63d2\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">analysis-kuromoji<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">analysis-icu<\/ul>\n<p>\u5982\u679c\u80fd\u591f\u5728Helm\u56fe\u8868\u7684\u914d\u7f6e\u4e2d\u641e\u5b9a\u5c31\u6700\u597d\u4e86\uff0c\u4f46\u6839\u636eREADME\u63d2\u4ef6\u5b89\u88c5\u90e8\u5206\u7684\u8bf4\u660e\uff0c\u4f3c\u4e4e\u9700\u8981\u6784\u5efa\u955c\u50cf\uff0c\u6240\u4ee5\u6211\u4f1a\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p>\u5982\u679c\u4f7f\u7528Bitnami\u7684\u56fe\u8868\uff0c\u53ef\u80fd\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7\u8bbe\u7f6e\u63d2\u4ef6\u6765\u4f7f\u7528\uff0c\u800c\u65e0\u9700\u6784\u5efa\uff0c\u4f46\u5c1a\u672a\u7ecf\u8fc7\u786e\u8ba4\u3002<\/p>\n<h3>Docker\u6587\u4ef6<\/h3>\n<p>\u5c06\u4f7f\u7528\u5b58\u50a8\u5728GROWI\u5b58\u50a8\u5e93\u4e2d\u7684Docker Compose\u6240\u4f7f\u7528\u7684Dockerfile\u4f5c\u4e3a\u57fa\u7840\u3002<br \/>\n\u4f46\u662f\uff0c\u5c3d\u7ba1\u4f7f\u7528\u6b64\u5185\u5bb9\u6784\u5efa\u4e86\u955c\u50cf\uff0c\u4f46\u76f4\u63a5\u5c06\u5176\u90e8\u7f72\u5230Kubernetes\u4e2d\u4f1a\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\uff0c\u51fa\u73b0\u4ee5\u4e0b\u9519\u8bef\u3002<\/p>\n<pre class=\"post-pre\"><code>ERROR: [1] bootstrap checks failed\r\n[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\r\n<\/code><\/pre>\n<p>\u91cd\u70b9\u662f\u901a\u8fc7\u5bb9\u5668\u542f\u52a8\u65f6\u7684\u5377\u8bbe\u7f6e\u63d2\u5165elasticsearch.yml\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\u3002<br \/>\n\u5728Kubernetes\u4e2d\uff0c\u9664\u975e\u4e8b\u5148\u4f7f\u7528NFS\u7b49\u51c6\u5907\u597d\u7684\u6587\u4ef6\u4f5c\u4e3a\u6301\u4e45\u5377\u8fdb\u884c\u6302\u8f7d\uff0c\u5426\u5219\uff08\u53ef\u80fd\uff09\u65e0\u6cd5\u5728\u5bb9\u5668\u542f\u52a8\u65f6\u6267\u884c\u6b64\u64cd\u4f5c\uff0c\u56e0\u6b64\u5c06\u5176\u5185\u7f6e\u5728\u6620\u50cf\u4e2d\u5e76\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p>\u56e0\u6b64\uff0cDockerfile\u7684\u6837\u5b50\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> docker.elastic.co\/elasticsearch\/elasticsearch:6.8.10<\/span>\r\n\r\n<span class=\"k\">RUN <\/span>bin\/elasticsearch-plugin <span class=\"nb\">install <\/span>analysis-kuromoji\r\n<span class=\"k\">RUN <\/span>bin\/elasticsearch-plugin <span class=\"nb\">install <\/span>analysis-icu\r\n\r\n<span class=\"k\">COPY<\/span><span class=\"s\"> elasticsearch.yml \/usr\/share\/elasticsearch\/config\/elasticsearch.yml<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u662felasticsearch.yml\u7684\u526f\u672c\u6620\u5c04\u56fe\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">http.host<\/span><span class=\"pi\">:<\/span> <span class=\"s\">0.0.0.0<\/span>\r\n\r\n<span class=\"c1\"># for elasticsearch-head<\/span>\r\n<span class=\"s\">http.cors.enabled<\/span><span class=\"pi\">:<\/span> <span class=\"no\">true<\/span>\r\n<span class=\"s\">http.cors.allow-origin<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">*\"<\/span>\r\n<\/code><\/pre>\n<h3>\u4f7f\u7528Skaffold\u8fdb\u884c\u6784\u5efa\u548c\u63a8\u9001\u548c\u90e8\u7f72\uff08\u5f00\u53d1\u6a21\u5f0f\uff09\u3002<\/h3>\n<p>\u5728\u672c\u5730\u6784\u5efaDocker\u6620\u50cf\uff0c\u5e76\u5c06\u5176\u63a8\u9001\u5230Docker Hub\uff0c\u5728Kubernetes\u96c6\u7fa4\u4e2d\u62c9\u53d6\u3002<br \/>\n\u7531\u4e8e\u624b\u52a8\u91cd\u590d\u8fd9\u4e2a\u8fc7\u7a0b\u6709\u70b9\u9ebb\u70e6\uff0c\u6240\u4ee5\u8fd9\u6b21\u6211\u4f7f\u7528\u4e86\u4e00\u4e2a\u540d\u4e3aSkaffold\u7684\u6784\u5efa\u5de5\u5177\uff0c\u5b83\u53ef\u4ee5\u5c06\u6240\u6709\u8fd9\u4e9b\u6b65\u9aa4\u4e00\u6b21\u6027\u5b8c\u6210\u3002<br \/>\n\uff08\u6211\u65e9\u5c31\u628a\u201c\u5c1d\u8bd5Skaffold\u201d\u8fd9\u4e2a\u4efb\u52a1\u653e\u5728\u4e86\u90a3\u91cc\uff0c\u6240\u4ee5\u987a\u4fbf\u5728\u8fd9\u91cc\u8bd5\u4e00\u4e0b\u3002\uff09<\/p>\n<p>\u5c1d\u8bd5\u4f7f\u7528Google\u53d1\u5e03\u7684\u5bb9\u5668\u5e94\u7528\u5f00\u53d1\u8f85\u52a9\u5de5\u5177&#8221;Skaffold&#8221;\u548c&#8221;Kaniko&#8221; | \u3055\u304f\u3089\u306e\u30ca\u30ec\u30c3\u30b8<\/p>\n<h4>Skaffold\u914d\u7f6e<\/h4>\n<p>\u5feb\u901f\u5165\u95e8 | Skaffold<\/p>\n<p>\u5982\u679c\u662fLinux\u7cfb\u7edf\uff0c\u5b89\u88c5\u53ea\u9700\u8981\u4e0b\u8f7d\u4e8c\u8fdb\u5236\u6587\u4ef6\u5e76\u5c06\u5176\u653e\u7f6e\u5728\u6b63\u786e\u914d\u7f6e\u4e86\u73af\u5883\u53d8\u91cf\u7684\u8def\u5f84\uff08\u5982\/usr\/local\/bin\u7b49\uff09\u5373\u53ef\u3002<br \/>\n\u4e3a\u4e86\u4f7f\u7528Skaffold\u547d\u4ee4\uff0c\u9700\u8981\u8fdb\u884c\u4ee5\u4e0b\u51c6\u5907\u5de5\u4f5c\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u786e\u4fdd\u5df2\u767b\u5f55docker\uff0c\u5e76\u4e14\u53ef\u4ee5\u4f7f\u7528skaffold\u6267\u884c\u7528\u6237\u5e10\u6237\u63a8\u9001\u5230\u5bb9\u5668\u6ce8\u518c\u8868\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>\u786e\u4fdd\u5df2\u8bbe\u7f6e$HOME\/.kube\/config\uff0c\u5e76\u4e14\u53ef\u4ee5\u4f7f\u7528skaffold\u6267\u884c\u7528\u6237\u5e10\u6237\u4f7f\u7528kubectl\u5c06\u6e05\u5355\u90e8\u7f72\u5230\u96c6\u7fa4\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e24\u4e2a\u8981\u70b9\uff08\u5173\u4e8e2\uff0c\u53ef\u4ee5\u91c7\u7528\u4e0eHelm\u548cistioctl\u76f8\u540c\u7684\u65b9\u6cd5\u3002\u5927\u6982\uff09\u3002<\/p>\n<p>\u5982\u679c\u8981\u8fdb\u884cdocker push\u64cd\u4f5c\uff0c\u5e76\u4e14\u60f3\u8981\u4f7f\u7528Docker Hub\u4f5c\u4e3a\u5bb9\u5668 registry\uff0c\u60a8\u9700\u8981\u5148\u521b\u5efa\u4e00\u4e2a\u5e10\u6237\u5e76\u51c6\u5907\u597d\u8981\u63a8\u9001\u7684\u76ee\u6807\u5b58\u50a8\u5e93\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/33-0.png\" alt=\"image.png\" \/><\/div>\n<h4>\u6784\u5efa\u548c\u90e8\u7f72Skaffold\u7684\u8bbe\u7f6e<\/h4>\n<p>\u5728\u4e0e\u4e4b\u524d\u63d0\u5230\u7684Dockerfile\u548cDockerfile\u5f15\u7528\u7684\u5916\u90e8\u6587\u4ef6elasticsearch.yml\uff08\u7528\u4e8e\u590d\u5236\u5230\u955c\u50cf\u4e2d\uff09\u76f8\u540c\u7684\u76ee\u5f55\u4e2d\uff08\u4e3a\u4e86\u7b80\u5316\u914d\u7f6e\uff09\uff0c\u521b\u5efa\u4ee5\u4e0b\u7684&#8221;\u7528\u4e8e\u90e8\u7f72\u7684Kubernetes\u90e8\u7f72\u6587\u4ef6&#8221;\u548c&#8221;Skaffold\u5b9a\u4e49\u6587\u4ef6&#8221;\u3002<\/p>\n<p>\u4f7f\u7528Kubernetes\u7684\u90e8\u7f72\u6e05\u5355\u6587\u4ef6\u6ca1\u6709\u4efb\u4f55\u7279\u6b8a\uff0c\u6240\u4ee5\u53ef\u4ee5\u7701\u7565\u3002<br \/>\n\u4f8b\u5982\uff0c\u53ef\u4ee5\u4f7f\u7528Deployment\u8fdb\u884c\u5982\u4e0b\u914d\u7f6e\uff08\u7a0d\u540e\u5df2\u66f4\u6539\u4e3aStatefulSet\uff09\u3002<\/p>\n<p>\u5173\u4e8e skaffold.yaml\uff0c\u4f5c\u4e3a\u6784\u5efa\/\u63a8\u9001\/\u90e8\u7f72\u5355\u4e2a\u56fe\u50cf\u7684\u6700\u5c0f\u63cf\u8ff0\uff0c\u53ef\u4ee5\u8fd9\u6837\u5199\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">skaffold\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Config<\/span>\r\n<span class=\"na\">build<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">zakihmkc\/growi-elasticsearch<\/span>\r\n    <span class=\"na\">context<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/<\/span>\r\n    <span class=\"na\">docker<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">dockerfile<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/Dockerfile<\/span>\r\n<span class=\"na\">deploy<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">kubectl<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">manifests<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">.\/k8s-deploy.yaml<\/span>\r\n<\/code><\/pre>\n<p>\u8bf7\u67e5\u9605\u53c2\u8003\u8d44\u6599\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<p>skaffold.yaml\u6587\u4ef6 | Skaffold<\/p>\n<p>\u91cd\u70b9\u662f\u5728build\u90e8\u5206\u7684artifacts\u4e2d\uff0c\u901a\u8fc7\u8bbe\u7f6e\u6784\u5efa\u56fe\u50cf\u7684\u540d\u79f0==\u63a8\u9001\u7684\u5b58\u50a8\u5e93\u540d\u79f0\u6765\u6307\u5b9a\uff0c\u4ecedocker build\u5230docker push\u90fd\u53ef\u4ee5\u4e00\u6b21\u5b8c\u6210\u3002<br \/>\n\u6784\u5efa\u7684context\u548cdocker.dockerfile\u4e0e\u4f7f\u7528Docker Compose\u6784\u5efa\u65f6\u76f8\u540c\uff0c\u9700\u8981\u6307\u5b9a\u76ee\u5f55\u548cDockerfile\u3002\u5728\u5c06\u6587\u4ef6\u5206\u5f00\u4e3a&#8221;\u5f00\u53d1&#8221;\u3001&#8221;\u6682\u5b58&#8221;\u548c&#8221;\u751f\u4ea7&#8221;\u7b49\u65f6\uff0c\u8fd9\u975e\u5e38\u6709\u7528\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u5728deploy\u90e8\u5206\u6307\u5b9a\u63a8\u9001\u7684\u56fe\u50cf\u5230\u96c6\u7fa4\u7684\u90e8\u7f72\u6e05\u5355\u6587\u4ef6\uff0c\u6210\u529f\u63a8\u9001\u540e\u4f1a\u81ea\u52a8\u5b8c\u6210\u90e8\u7f72\u5904\u7406\u3002<\/p>\n<p>\u8981\u4ee5dev\u6a21\u5f0f\u8fd0\u884c\uff0c\u8bf7\u6307\u5b9adev\u5b50\u547d\u4ee4\u6765\u6267\u884c\u3002<br \/>\n\u4e3a\u4e86\u7ed9\u76f8\u540c\u540d\u79f0\u7684dev\u6dfb\u52a0\u4e34\u65f6\u6807\u7b7e\u4ee5\u6784\u5efa\u6620\u50cf\uff0c\u9700\u8981\u6dfb\u52a0-t dev\uff0c\u867d\u7136\u8fd9\u6837\u547d\u540d\u6709\u4e9b\u56f0\u60d1\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ ls\r\nDockerfile  elasticsearch.yml  k8s-deploy.yaml  skaffold.yaml\r\n[zaki@cloud-dev elasticsearch]$ skaffold dev -t dev \r\nListing files to watch...\r\n - zakihmkc\/growi-elasticsearch\r\nGenerating tags...\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:dev\r\nChecking cache...\r\n - zakihmkc\/growi-elasticsearch: Not found. Building\r\nBuilding [zakihmkc\/growi-elasticsearch]...\r\nSending build context to Docker daemon  3.072kB\r\nStep 1\/4 : FROM docker.elastic.co\/elasticsearch\/elasticsearch:6.8.10\r\n ---&gt; ffa00077159c\r\nStep 2\/4 : RUN bin\/elasticsearch-plugin install analysis-kuromoji\r\n ---&gt; Using cache\r\n ---&gt; 6966b4d5e5bf\r\nStep 3\/4 : RUN bin\/elasticsearch-plugin install analysis-icu\r\n ---&gt; Using cache\r\n ---&gt; 7e8711478ef2\r\nStep 4\/4 : COPY elasticsearch.yml \/usr\/share\/elasticsearch\/config\/elasticsearch.yml\r\n ---&gt; 11556383ec5f\r\nSuccessfully built 11556383ec5f\r\nSuccessfully tagged zakihmkc\/growi-elasticsearch:dev\r\nThe push refers to repository [docker.io\/zakihmkc\/growi-elasticsearch]\r\n06e6281e2c86: Preparing\r\nc2255a3188da: Preparing\r\n\r\n[... snip ...]\r\n\r\nedf3aa290fb3: Layer already exists\r\n06e6281e2c86: Pushed\r\ndev: digest: sha256:c260d4c6f595b15163c9f7a3d88fcb6f790995f9f63ac519baaa94af49bc5bf2 size: 2421\r\nTags used in deployment:\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:dev@sha256:c260d4c6f595b15163c9f7a3d88fcb6f790995f9f63ac519baaa94af49bc5bf2\r\nStarting deploy...\r\n - deployment.apps\/elasticsearch created\r\n - service\/elasticsearch created\r\nWaiting for deployments to stabilize...\r\n - deployment\/elasticsearch: creating container elasticsearch\r\n    - pod\/elasticsearch-76d9c6d6f6-nqtjs: creating container elasticsearch\r\n - deployment\/elasticsearch is ready.\r\nDeployments stabilized in 5.595258289s\r\nPress Ctrl+C to exit\r\nWatching for changes...\r\n[elasticsearch] [2020-12-04T14:10:06,213][INFO ][o.e.e.NodeEnvironment    ] [TQOy5aT] using [1] data paths, mounts [[\/ (rootfs)]], net usable_space [42.1gb], net total_space [58.9gb], types [rootfs]\r\n[elasticsearch] [2020-12-04T14:10:06,215][INFO ][o.e.e.NodeEnvironment    ] [TQOy5aT] heap size [1gb], compressed ordinary object pointers [true]\r\n[elasticsearch] [2020-12-04T14:10:06,218][INFO ][o.e.n.Node               ] [TQOy5aT] node name derived from node ID [TQOy5aTYQuKGZ35Crwr6Iw]; set [node.name] to override\r\n[elasticsearch] [2020-12-04T14:10:06,218][INFO ][o.e.n.Node               ] [TQOy5aT] version[6.8.10], pid[1], build[default\/docker\/537cb22\/2020-05-28T14:47:19.882936Z], OS[Linux\/3.10.0-1127.13.1.el7.x86_64\/amd64], JVM[AdoptOpenJDK\/OpenJDK 64-Bit Server VM\/14.0.1\/14.0.1+7]\r\n[elasticsearch] [2020-12-04T14:10:06,218][INFO ][o.e.n.Node               ] [TQOy5aT] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=\/tmp\/elasticsearch-16478887452689113828, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs\/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs\/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -XX:UseAVX=2, -Des.cgroups.hierarchy.override=\/, -Des.path.home=\/usr\/share\/elasticsearch, -Des.path.conf=\/usr\/share\/elasticsearch\/config, -Des.distribution.flavor=default, -Des.distribution.type=docker]\r\n[elasticsearch] [2020-12-04T14:10:09,582][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [aggs-matrix-stats]\r\n[elasticsearch] [2020-12-04T14:10:09,582][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [analysis-common]\r\n[elasticsearch] [2020-12-04T14:10:09,582][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [ingest-common]\r\n[elasticsearch] [2020-12-04T14:10:09,582][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [ingest-geoip]\r\n[elasticsearch] [2020-12-04T14:10:09,582][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [ingest-user-agent]\r\n[elasticsearch] [2020-12-04T14:10:09,583][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [lang-expression]\r\n[elasticsearch] [2020-12-04T14:10:09,583][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [lang-mustache]\r\n[elasticsearch] [2020-12-04T14:10:09,583][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [lang-painless]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [mapper-extras]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [parent-join]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [percolator]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [rank-eval]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [reindex]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [repository-url]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [transport-netty4]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [tribe]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-ccr]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-core]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-deprecation]\r\n[elasticsearch] [2020-12-04T14:10:09,584][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-graph]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-ilm]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-logstash]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-ml]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-monitoring]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-rollup]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-security]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-sql]\r\n[elasticsearch] [2020-12-04T14:10:09,585][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-upgrade]\r\n[elasticsearch] [2020-12-04T14:10:09,586][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded module [x-pack-watcher]\r\n[elasticsearch] [2020-12-04T14:10:09,595][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded plugin [analysis-icu]\r\n[elasticsearch] [2020-12-04T14:10:09,595][INFO ][o.e.p.PluginsService     ] [TQOy5aT] loaded plugin [analysis-kuromoji]\r\n[elasticsearch] [2020-12-04T14:10:16,226][INFO ][o.e.x.s.a.s.FileRolesStore] [TQOy5aT] parsed [0] roles from file [\/usr\/share\/elasticsearch\/config\/roles.yml]\r\n[elasticsearch] [2020-12-04T14:10:17,251][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [TQOy5aT] [controller\/79] [Main.cc@109] controller (64 bit): Version 6.8.10 (Build a5f7163bca0250) Copyright (c) 2020 Elasticsearch BV\r\n[elasticsearch] [2020-12-04T14:10:17,994][INFO ][o.e.d.DiscoveryModule    ] [TQOy5aT] using discovery type [zen] and host providers [settings]\r\n[elasticsearch] [2020-12-04T14:10:18,943][INFO ][o.e.n.Node               ] [TQOy5aT] initialized\r\n[elasticsearch] [2020-12-04T14:10:18,943][INFO ][o.e.n.Node               ] [TQOy5aT] starting ...\r\n[elasticsearch] [2020-12-04T14:10:19,069][INFO ][o.e.t.TransportService   ] [TQOy5aT] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}\r\n[elasticsearch] [2020-12-04T14:10:19,086][WARN ][o.e.b.BootstrapChecks    ] [TQOy5aT] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\r\n[elasticsearch] [2020-12-04T14:10:22,134][INFO ][o.e.c.s.MasterService    ] [TQOy5aT] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {TQOy5aT}{TQOy5aTYQuKGZ35Crwr6Iw}{mDuQTY1KS1q1Es7e0DDjLA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=8181829632, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true}\r\n[elasticsearch] [2020-12-04T14:10:22,138][INFO ][o.e.c.s.ClusterApplierService] [TQOy5aT] new_master {TQOy5aT}{TQOy5aTYQuKGZ35Crwr6Iw}{mDuQTY1KS1q1Es7e0DDjLA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=8181829632, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true}, reason: apply cluster state (from master [master {TQOy5aT}{TQOy5aTYQuKGZ35Crwr6Iw}{mDuQTY1KS1q1Es7e0DDjLA}{127.0.0.1}{127.0.0.1:9300}{ml.machine_memory=8181829632, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])\r\n[elasticsearch] [2020-12-04T14:10:22,197][INFO ][o.e.h.n.Netty4HttpServerTransport] [TQOy5aT] publish_address {10.244.127.102:9200}, bound_addresses {0.0.0.0:9200}\r\n[elasticsearch] [2020-12-04T14:10:22,197][INFO ][o.e.n.Node               ] [TQOy5aT] started\r\n[elasticsearch] [2020-12-04T14:10:22,223][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [TQOy5aT] Failed to clear cache for realms [[]]\r\n[elasticsearch] [2020-12-04T14:10:22,262][INFO ][o.e.g.GatewayService     ] [TQOy5aT] recovered [0] indices into cluster_state\r\n[elasticsearch] [2020-12-04T14:10:22,874][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.watches] for index patterns [.watches*]\r\n[elasticsearch] [2020-12-04T14:10:22,941][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.watch-history-9] for index patterns [.watcher-history-9*]\r\n[elasticsearch] [2020-12-04T14:10:22,964][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.triggered_watches] for index patterns [.triggered_watches*]\r\n[elasticsearch] [2020-12-04T14:10:22,992][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.monitoring-logstash] for index patterns [.monitoring-logstash-6-*]\r\n[elasticsearch] [2020-12-04T14:10:23,044][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.monitoring-es] for index patterns [.monitoring-es-6-*]\r\n[elasticsearch] [2020-12-04T14:10:23,092][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.monitoring-alerts] for index patterns [.monitoring-alerts-6]\r\n[elasticsearch] [2020-12-04T14:10:23,255][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.monitoring-beats] for index patterns [.monitoring-beats-6-*]\r\n[elasticsearch] [2020-12-04T14:10:23,310][INFO ][o.e.c.m.MetaDataIndexTemplateService] [TQOy5aT] adding template [.monitoring-kibana] for index patterns [.monitoring-kibana-6-*]\r\n[elasticsearch] [2020-12-04T14:10:23,479][INFO ][o.e.l.LicenseService     ] [TQOy5aT] license [93d6e9a7-978d-4035-8052-e26c27e49afe] mode [basic] - valid\r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u91cc\u663e\u793a\u505c\u6b62\uff0c\u4f46\u662f\u8fd9\u91cc\u6709kubectl logs -f\u547d\u4ee4\u7684\u65e5\u5fd7\u8f93\u51fa\u3002<br \/>\n\u5982\u679c\u53e6\u4e00\u4e2a\u7ec8\u7aef\u4e2d\u6267\u884ckubectl get pod\u547d\u4ee4\uff0c\u5219\u4f1a\u663e\u793a\u4ee5\u4e0b\u7ed3\u679c\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ kubectl get pod\r\nNAME                             READY   STATUS    RESTARTS   AGE\r\nelasticsearch-76d9c6d6f6-nqtjs   1\/1     Running   0          5m41s\r\n<\/code><\/pre>\n<p>\u6211\u6b63\u5728\u6b63\u5e38\u8fd0\u4f5c\u3002<\/p>\n<p>\u56e0\u4e3a\u8fd9\u4e0d\u662f\u65e5\u5fd7\u7684\u6700\u540e\uff0c\u6240\u4ee5\u53ef\u80fd\u4e0d\u592a\u5bb9\u6613\u7406\u89e3\uff0c\u4f46\u6211\u8ba4\u4e3a\u8fd9\u4e2a\u65e5\u5fd7\u5f88\u53ef\u80fd\u662f\u542f\u52a8\u6210\u529f\u7684\u6807\u5fd7\u3002\uff08\u5f88\u53ef\u80fd\uff09<\/p>\n<pre class=\"post-pre\"><code>[elasticsearch] [2020-12-04T14:10:22,197][INFO ][o.e.h.n.Netty4HttpServerTransport] [TQOy5aT] publish_address {10.244.127.102:9200}, bound_addresses {0.0.0.0:9200}\r\n[elasticsearch] [2020-12-04T14:10:22,197][INFO ][o.e.n.Node               ] [TQOy5aT] started\r\n<\/code><\/pre>\n<p>\u8fd9\u662f\u6b63\u5728\u8fd0\u884c\u7684\u955c\u50cf\u7684\u6807\u7b7e\uff0c\u4f46\u9644\u52a0\u4e86\u6563\u5217\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ kubectl get pod elasticsearch-76d9c6d6f6-nqtjs -o jsonpath='{.spec.containers[].image}'; echo\r\nzakihmkc\/growi-elasticsearch:dev@sha256:c260d4c6f595b15163c9f7a3d88fcb6f790995f9f63ac519baaa94af49bc5bf2\r\n<\/code><\/pre>\n<p>\u56e0\u4e3a\u786e\u8ba4\u5230\u6784\u5efa\u7684\u56fe\u50cf\u6b63\u5728\u6b63\u5e38\u8fd0\u884c\uff0c\u6240\u4ee5\u5c06\u4f7f\u7528Ctrl-c\u505c\u6b62\u3002<\/p>\n<pre class=\"post-pre\"><code>[elasticsearch] [2020-12-04T14:10:23,479][INFO ][o.e.l.LicenseService     ] [TQOy5aT] license [93d6e9a7-978d-4035-8052-e26c27e49afe] mode [basic] - valid\r\n^CCleaning up...\r\n - deployment.apps \"elasticsearch\" deleted\r\n - service \"elasticsearch\" deleted\r\nThere is a new version (1.17.1) of Skaffold available. Download it from:\r\n  https:\/\/github.com\/GoogleContainerTools\/skaffold\/releases\/tag\/v1.17.1\r\n\r\n<\/code><\/pre>\n<p>\u7136\u540ePod\u4e5f\u505c\u6b62\u4e86\u3002<br \/>\n\u771f\u65b9\u4fbf\u554a\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ kubectl get pod\r\nNAME                             READY   STATUS        RESTARTS   AGE\r\nelasticsearch-76d9c6d6f6-nqtjs   1\/1     Terminating   0          11m\r\n<\/code><\/pre>\n<p>\u63a8\u5e7f\u7684\u5f62\u8c61\u5c31\u662f\u8fd9\u6837\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/57-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u800c\u4e14\uff0cSkaffold\u7684\u5f00\u53d1\u6a21\u5f0f\u66f4\u65b9\u4fbf\u4e4b\u5904\u5728\u4e8e\uff0c\u5728\u7b49\u5f85\u505c\u6b62\u72b6\u6001\u671f\u95f4\uff0c\u53ea\u9700\u6309\u4e0bCtrl-c\uff0c\u7136\u540e\u66f4\u6539Dockerfile\u6216\u90e8\u7f72\u6e05\u5355\uff0c\u5373\u53ef\u81ea\u52a8\u68c0\u6d4b\u6587\u4ef6\u66f4\u6539\u5e76\u91cd\u65b0\u6784\u5efa\u548c\u91cd\u65b0\u90e8\u7f72\uff0c\u8fd9\u6837\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u53ef\u4ee5\u7701\u53bb\u90e8\u7f72\u5de5\u4f5c\u6240\u9700\u7684\u65f6\u95f4\uff0c\u53ef\u4ee5\u96c6\u4e2d\u7cbe\u529b\u4e8e\u5f00\u53d1\u3002<\/p>\n<h3>\u4f7f\u7528run\u6a21\u5f0f\u8fdb\u884c\u6784\u5efa\u3001\u63a8\u9001\u548c\u90e8\u7f72<\/h3>\n<p>\u6211\u5c06\u53c2\u6570\u4ece\u201cdev\u201d\u66f4\u6539\u4e3a\u201crun\u201d\u3002<br \/>\n\u987a\u4fbf\u8bd5\u8bd5\u5c06\u6807\u7b7e\u8bbe\u4e3a\u7c7b\u4f3c\u4e8e\u53d1\u5e03\u7248\u672c\u7684\u6837\u5b50\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ skaffold run -t 6.8.10-ja\r\nGenerating tags...\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:6.8.10-ja\r\nChecking cache...\r\n - zakihmkc\/growi-elasticsearch: Found. Tagging\r\nTags used in deployment:\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:6.8.10-ja@sha256:c260d4c6f595b15163c9f7a3d88fcb6f790995f9f63ac519baaa94af49bc5bf2\r\nStarting deploy...\r\n - deployment.apps\/elasticsearch created\r\n - service\/elasticsearch created\r\nWaiting for deployments to stabilize...\r\n - deployment\/elasticsearch is ready.\r\nDeployments stabilized in 3.40209576s\r\nYou can also run [skaffold run --tail] to get the logs\r\nThere is a new version (1.17.1) of Skaffold available. Download it from:\r\n  https:\/\/github.com\/GoogleContainerTools\/skaffold\/releases\/tag\/v1.17.1\r\n\r\n[zaki@cloud-dev elasticsearch]$ \r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5904\u7406\u5728\u540e\u53f0\u8fdb\u884c\uff0c\u6240\u4ee5\u4f1a\u8fd4\u56de\u63d0\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ kubectl get pod\r\nNAME                            READY   STATUS    RESTARTS   AGE\r\nelasticsearch-89688ff58-tw969   1\/1     Running   0          13s\r\n<\/code><\/pre>\n<p>\u65b0\u7684\u6807\u7b7e\u4e5f\u88ab\u63a8\u9001\u4e86\u3002(\u5185\u5bb9\u6ca1\u6709\u6539\u53d8\uff0c\u6240\u4ee5\u4e0edev\u76f8\u540c)<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/65-0.png\" alt=\"image.png\" \/><\/div>\n<h3>\u8fd0\u884c\u6a21\u5f0f\u4e0b\u5220\u9664\u90e8\u7f72\u7684Pod\u3002<\/h3>\n<p>\u8981\u505c\u6b62\u548c\u5220\u9664\uff0c\u8bf7\u6267\u884cskaffold delete\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch]$ skaffold delete \r\nCleaning up...\r\n - deployment.apps \"elasticsearch\" deleted\r\n - service \"elasticsearch\" deleted\r\n<\/code><\/pre>\n<h3>StatefulSet\u7684\u7248\u672c<\/h3>\n<p>\u6211\u4e00\u5f00\u59cb\u5c31\u5e94\u8be5\u8fd9\u4e48\u505a\u7684\u65f6\u5019, \u8fc1\u79fb\u5230\u4e86StatefulSet\u91cd\u65b0\u90e8\u7f72\u5de5\u4f5c\u8d1f\u8f7d\u3002<\/p>\n<p>\u6b64\u5916\uff0c\u5728\u8fd0\u884c\u65f6\uff0c\u901a\u8fc7\u9644\u52a0 -n &lt;\u547d\u540d\u7a7a\u95f4&gt; \u53c2\u6570\u6765\u6307\u5b9a\u90e8\u7f72\u76ee\u6807\u4e3a\u4e0eGROWI\u6838\u5fc3\u76f8\u540c\u7684\u547d\u540d\u7a7a\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code>[zaki@cloud-dev elasticsearch (features\/elasticsearch)]$ skaffold run -t 6.8.10-ja -n growi-on-k8s\r\nGenerating tags...\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:6.8.10-ja\r\nChecking cache...\r\n - zakihmkc\/growi-elasticsearch: Found Remotely\r\nTags used in deployment:\r\n - zakihmkc\/growi-elasticsearch -&gt; zakihmkc\/growi-elasticsearch:6.8.10-ja@sha256:c260d4c6f595b15163c9f7a3d88fcb6f790995f9f63ac519baaa94af49bc5bf2\r\nStarting deploy...\r\n - statefulset.apps\/elasticsearch created\r\n - service\/elasticsearch created\r\nWaiting for deployments to stabilize...\r\nDeployments stabilized in 10.508539ms\r\nYou can also run [skaffold run --tail] to get the logs\r\nThere is a new version (1.17.1) of Skaffold available. Download it from:\r\n  https:\/\/github.com\/GoogleContainerTools\/skaffold\/releases\/tag\/v1.17.1\r\n\r\n[zaki@cloud-dev elasticsearch (features\/elasticsearch)]$ kc get pod,svc,pvc -n growi-on-k8s \r\nNAME                            READY   STATUS              RESTARTS   AGE\r\npod\/elasticsearch-0             0\/1     ContainerCreating   0          9s\r\npod\/growi-app-fd6fcdd9d-vsdjj   1\/1     Running             14         7d\r\npod\/growi-mongo-0               1\/1     Running             3          7d\r\n\r\nNAME                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)          AGE\r\nservice\/elasticsearch   ClusterIP      10.99.155.247    &lt;none&gt;          9200\/TCP         9s\r\nservice\/growi-app       LoadBalancer   10.96.23.173     192.168.0.185   3000:32644\/TCP   7d\r\nservice\/growi-mongo     ClusterIP      10.106.230.143   &lt;none&gt;          27017\/TCP        7d\r\n\r\nNAME                                               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE\r\npersistentvolumeclaim\/es-data-elasticsearch-0      Bound    pvc-f052985f-b3a9-408f-8343-d09b1cbf8ff7   8Gi        RWO            rook-ceph-block   9s\r\npersistentvolumeclaim\/mongo-config-growi-mongo-0   Bound    pvc-6b29acb4-bad6-4b01-9135-4302bf1f35d3   256Mi      RWO            rook-ceph-block   7d1h\r\npersistentvolumeclaim\/mongo-db-growi-mongo-0       Bound    pvc-21ea3319-5487-4b10-83d3-a9c076d30b28   4Gi        RWO            rook-ceph-block   7d1h\r\n<\/code><\/pre>\n<h2>GROWI Wiki\u7684Elasticsearch\u8bbe\u7f6e<\/h2>\n<p>\u5982\u679c\u6ca1\u6709Elasticsearch\u7684\u914d\u7f6e\uff0c\u8bf7\u6309\u7167\u4ee5\u4e0b\u65b9\u6cd5\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/75-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u8981\u5c06GROWI\u4e0eElasticsearch\u96c6\u6210\uff0c\u9700\u8981\u6839\u636eDocker Compose\u7248\u672c\u7684docker-compose.yml\u6587\u4ef6\u8bbe\u7f6e\u73af\u5883\u53d8\u91cfELASTICSEARCH_URI\uff0c\u5c06\u5176\u8bbe\u7f6e\u4e3aElasticsearch\u7684URL\u3002<br \/>\n\u5728Kubernetes\u73af\u5883\u4e2d\uff0c\u7531\u4e8e\u4f7f\u7528Service\u8fdb\u884cPod\u4e4b\u95f4\u7684\u901a\u4fe1\uff0c\u56e0\u6b64\u9700\u8981\u5c06Service\u540d\u79f0\uff08elasticsearch\uff09\u8fdb\u884c\u8bb0\u5f55\u3002<\/p>\n<p>\u5ba3\u8a00\u7684\u5185\u5bb9\u662f\u8fd9\u6837\u7684<\/p>\n<pre class=\"post-pre\"><code>      <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">weseek\/growi:4<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">growi-app<\/span>\r\n        <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">MONGO_URI<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mongodb:\/\/growi-mongo:27017\/growi<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ELASTICSEARCH_URI<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/elasticsearch:9200\/growi<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PASSWORD_SEED<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">changeme<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u91cd\u65b0\u4f7f\u7528\u6b64\u6e05\u5355\u8fdb\u884c\u90e8\u7f72\uff0c\u5219\u5c4f\u5e55\u9876\u90e8\u5c06\u663e\u793a\u641c\u7d22\u5b57\u6bb5\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/80-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u663e\u793a\u8bbe\u7f6e\u83dc\u5355\u4e2d\u7684\u201c\u5168\u6587\u641c\u7d22\u7ba1\u7406\u201d\u9009\u9879\uff0c\u770b\u5230Elasticsearch\u5df2\u542f\u7528\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/82-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u73b0\u5728\uff0cGROWI\u548cElasticsearch\u5df2\u7ecf\u8fdb\u884c\u4e86\u534f\u4f5c\u8bbe\u7f6e\uff0c\u53ef\u4ee5\u5f00\u59cb\u4f7f\u7528\u641c\u7d22\u529f\u80fd\u4e86\u3002<\/p>\n<h1>\u4f7f\u7528HackMD\u6765\u8fdb\u884cGROWI\u7684\u589e\u5f3a\u529f\u80fd<\/h1>\n<p>\u5728GROWI\u7684Wiki\u4e2d\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e0d\u5141\u8bb8\u591a\u4e2a\u7528\u6237\u540c\u65f6\u7f16\u8f91\u540c\u4e00\u9875\u9762\u3002<br \/>\n\uff08\u5982\u679c\u4e0d\u5c0f\u5fc3\u53d1\u751f\u4e86\u8fd9\u79cd\u60c5\u51b5\uff0c\u4e4b\u540e\u5c1d\u8bd5\u4fdd\u5b58\u7684\u7528\u6237\u4f1a\u53d1\u751f\u51b2\u7a81\uff0c\u9700\u8981\u624b\u52a8\u8fdb\u884c\u5408\u5e76\u64cd\u4f5c\u3002\uff09<\/p>\n<p>\u7136\u800c\uff0c\u901a\u8fc7\u4e0eHackMD\u534f\u4f5c\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9e\u73b0\u534f\u540c\u7f16\u8f91\u529f\u80fd\uff08\u867d\u7136\u9700\u8981\u8fdb\u884c\u56fe\u50cf\u6784\u5efa\uff0c\u4f46\u6211\u4eec\u5df2\u7ecf\u4f7f\u7528\u5e26\u6709\u65e5\u8bed\u63d2\u4ef6\u7684Elasticsearch\u8fdb\u884c\u4e86\u56fe\u50cf\u6784\u5efa\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u8fdb\u884c\uff09\u5728Kubernetes\u4e0a\u8fd0\u884cGROWI\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">HackMD \u3067\u540c\u6642\u591a\u4eba\u6570\u7de8\u96c6\u3092\u5229\u7528\u3059\u308b | GROWI Docs<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">HackMD(CodiMD)\u9023\u643a | GROWI Docs<\/ul>\n<p>HackMD\u7684\u6574\u5408\u4e5f\u5df2\u7d93\u516c\u958b\u4e86\u5b98\u65b9\u7684Docker Compose\u3002<br \/>\n\u5c0d\u65bc\u7576\u524d\u7684docker-compose.yml\u5167\u5bb9\u9032\u884c\u6574\u7406\uff0c\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u90e8\u7f72MariaDB<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6784\u5efaGROWI\u6240\u4f7f\u7528\u7684HackMD\u955c\u50cf<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u90e8\u7f72GROWI\u6240\u4f7f\u7528\u7684HackMD<\/ol>\n<\/li>\n<\/ol>\n<p>\u4ee5\u4e0b\u662f\u73af\u5883\u53d8\u91cf\uff1a<\/p>\n<p>\u8bbf\u95eeGROWI\u4e3b\u4f53\u7684URL<br \/>\nMariaDB\u8fde\u63a5\u5730\u5740<\/p>\n<p>\u4f7fHackMD\u72ec\u7acb\u53ef\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee<\/p>\n<p>\u6dfb\u52a0GROWI\u4e3b\u4f53\u7684\u73af\u5883\u53d8\u91cf<\/p>\n<p>GROWI\u4e3b\u4f53\uff08pod\uff09\u6240\u770b\u5230\u7684HackMD\u7684URL<br \/>\n\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95eeHackMD\u65f6\u7684URL<\/p>\n<h2>MariaDB is a relational database management system.<\/h2>\n<p>\u6211\u4e5f\u89c9\u5f97\u53ef\u4ee5\u5728Helm\u6216\u5176\u4ed6\u5730\u65b9\u5355\u72ec\u5b89\u88c5\uff0c\u4f46\u662f\u5728GROWI\u7684docker-compose.yml\u6587\u4ef6\u4e2d\u6709\u5b57\u7b26\u96c6\u53c2\u6570\u8bbe\u7f6e\uff0c\u6240\u4ee5\u6211\u57fa\u4e8e\u8fd9\u4e2a\u6765\u521b\u5efa\u6e05\u5355\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"na\">mariadb<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mariadb:10.3<\/span>\r\n    <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mysqld --character-set-server=utf8 --collation-server=utf8_general_ci<\/span>\r\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">MYSQL_USER=hackmd<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">MYSQL_PASSWORD=hackmdpass<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">MYSQL_DATABASE=hackmd<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">MYSQL_RANDOM_ROOT_PASSWORD=true<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u76f4\u63a5\u5c06\u5176\u8f6c\u6362\u4e3aKubernetes\u7684\u6e05\u5355\u6587\u4ef6\uff0c\u5e76\u4e14\u5728\u90e8\u7f72\u65f6\u4f1a\u9047\u5230\u4ee5\u4e0b\u9519\u8bef\u3002<\/p>\n<pre class=\"post-pre\"><code>2020-12-05  0:45:49 0 [Note] mysqld (mysqld 10.3.27-MariaDB-1:10.3.27+maria~focal) starting as process 1 ...\r\nmysqld: Please consult the Knowledge Base to find out how to run mysqld as root!\r\n2020-12-05  0:45:49 0 [ERROR] Aborting\r\n<\/code><\/pre>\n<p>\u91cd\u9ede\u5728\u65bc&#8221;command&#8221;\u90e8\u5206\u3002<\/p>\n<p>\u5728Kubernetes\u7684\u6e05\u5355\u4e2d\uff0c\u4f7f\u7528args\u800c\u4e0d\u662fcommand\u4f1a\u6709\u6548\u8fd0\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code>    <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mariadb:10.3<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">hackmd<\/span>\r\n        <span class=\"na\">args<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">mysqld<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">--character-set-server=utf8<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">--collation-server=utf8_general_ci<\/span>\r\n        <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">MYSQL_USER<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">hackmd<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">MYSQL_PASSWORD<\/span>\r\n<\/code><\/pre>\n<h2>\u4f7f\u7528HackMD\u8fdb\u884c\u56fe\u50cf\u6784\u5efa\u548c\u90e8\u7f72\u7684GROWI\u3002<\/h2>\n<p>\u6211\u5011\u53ef\u4ee5\u4f7f\u7528Skaffold\u9032\u884c\u9019\u500b\u3002Dockerfile\u548c\u5728\u69cb\u5efa\u6642\u7528\u65bc\u6620\u50cf\u7684\u8a2d\u7f6e\u6587\u4ef6\u7b49\u90fd\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u5b98\u65b9\u63d0\u4f9b\u7684\u516c\u958b\u7248\u672c\u3002<\/p>\n<p>\u9664\u4e86\u8fd9\u4e9b\u6587\u4ef6\u4e4b\u5916\uff0c\u8fd8\u9700\u51c6\u5907\u4ee5\u4e0b\u6587\u4ef6\uff0c\u4e0eElasticsearch\u7684\u6784\u5efa\u76f8\u540c\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">skaffol.yaml<\/ul>\n<p>\u7531\u4e8e\u9700\u8981\u8bbe\u7f6eGROWI\u4e3b\u4f53\uff08\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u65f6\uff09\u7684URL\uff0c\u6240\u4ee5\u9700\u8981\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u3002<\/p>\n<p>\u7531\u4e8e\u6784\u5efa\/\u63a8\u9001\/\u90e8\u7f72\u7684\u6b65\u9aa4\u548c\u5185\u5bb9\u4e0eElasticsearch\u76f8\u540c\uff0c\u6240\u4ee5\u5c06\u7701\u7565\u3002\u8bf7\u53c2\u8003GitHub\u4e0a\u7684\u6587\u4ef6\u96c6\u5408\u3002<\/p>\n<p>\u6210\u529f\u90e8\u7f72\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528\u7c7b\u578b\u4e3aLoadBalancer\u7684\u8d44\u6e90\u5bf9\u5916\u516c\u5f00\uff0c\u7136\u540e\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/106-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u5728\u8fdb\u884cGROWI\u8bbe\u7f6e\u65f6\uff0c\u9700\u8981\u786e\u8ba4\u7528\u4e8e\u4ece\u6d4f\u89c8\u5668\u8bbf\u95ee\u7684URL\u3002<\/p>\n<h2>GROWI Wiki\u7684HackMD\u8bbe\u7f6e<\/h2>\n<p>\u5982\u524d\u6240\u8ff0\uff0c\u7531\u65bcGROWI\u9084\u9700\u8981\u8a2d\u7f6eHackMD\u7684\u4f4d\u7f6e\uff0c\u56e0\u6b64\u9700\u8981\u6dfb\u52a0\u74b0\u5883\u8b8a\u6578\u3002<br \/>\nHACKMD_URI_FOR_SERVER\u8207Elasticsearch\u76f8\u540c\uff0c\u7528\u65bc\u63cf\u8ff0\u5f9eGROWI\u7684pod\u5230HackMD\u7684pod\u4e4b\u9593\u7684pod\u9593\u901a\u4fe1\u7684Service\u540d\u7a31\u3002<br \/>\nHACKMD_URI\u7528\u65bc\u8a2d\u7f6e\u5f9e\u700f\u89bd\u5668\u8a2a\u554fHackMD\u6642\u7684URL\u3002<\/p>\n<pre class=\"post-pre\"><code>      <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">weseek\/growi:4<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">growi-app<\/span>\r\n        <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">MONGO_URI<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">mongodb:\/\/growi-mongo:27017\/growi<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ELASTICSEARCH_URI<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/elasticsearch:9200\/growi<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PASSWORD_SEED<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">changeme<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">HACKMD_URI_FOR_SERVER<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/hackmd:3000<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">HACKMD_URI<\/span>\r\n            <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http:\/\/192.168.0.186:3000<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u8fd9\u4e2a\u8bbe\u7f6e\u91cd\u65b0\u90e8\u7f72GROWI\u4e3b\u4f53\uff0c\u5e76\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\uff0c\u5728\u9875\u9762\u7f16\u8f91\u754c\u9762\u65c1\u8fb9\u6309\u4e0b&#8221;HackMD&#8221;\u6309\u94ae\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/112-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u7136\u540e\uff0c\u5c06\u663e\u793a\u7528\u4e8e\u5f00\u59cb\u7f16\u8f91\u7684\u6309\u94ae\uff0c\u901a\u8fc7\u4f7f\u7528HackMD\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/114-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u6309\u4e0b\u6309\u94ae\u65f6\uff0c<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/116-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u90a3\u4e2a\u2026\u2026\uff1f<\/p>\n<p>\u5f88\u9057\u61be\uff0c\u6211\u65e0\u6cd5\u627e\u5230\u539f\u56e0\uff0c\u4f46\u662f\u5728Chrome\u548cEdge\u90fd\u65e0\u6cd5\u8bbf\u95ee\uff0c\u4f46\u662f\u5728Firefox\u4e0a\u53ef\u4ee5\u8bbf\u95ee\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/119-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u5728\u542f\u52a8\u53e6\u4e00\u4e2a\u6d4f\u89c8\u5668\u5e76\u8bbf\u95ee\u65f6\uff0c\u53f3\u4e0a\u89d2\u7684\u5728\u7ebf\u4eba\u6570\u5c06\u53d8\u4e3a2\uff0c\u540c\u65f6\u663e\u793a\u6bcf\u4e2a\u6d4f\u89c8\u5668\u7684\u7f16\u8f91\u72b6\u6001\uff08\u4f8b\u5982\u5149\u6807\u7b49\uff09\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/121-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u987a\u4fbf\u8bf4\u4e00\u53e5\uff0c\u5982\u679c\u662f\u4f7f\u7528Docker Compose\u7248\u672c\uff0c\u90a3\u4e48\u5373\u4f7f\u5728Chrome\u4e0a\u4e5f\u53ef\u4ee5\u8bbf\u95ee\u3002\u6839\u636e\u672c\u6b21\u4f7f\u7528type:LoadBalancer\u7684Kubernetes\u73af\u5883\u6765\u770b\uff0cGROWI\u548cHackMD\u5728\u6d4f\u89c8\u5668\u4e2d\u770b\u8d77\u6765\u90e8\u7f72\u5728\u4e0d\u540c\u7684IP\u5730\u5740(\u4e3b\u673a)\u4e0a\uff0c\u800c\u4e14\u4e5f\u4e0d\u652f\u6301HTTPS\uff0c\u6240\u4ee5\u6211\u8ba4\u4e3a\u53ef\u80fd\u662fChrome\u7684\u5b89\u5168\u529f\u80fd\u9650\u5236\u9020\u6210\u7684\u3002\u4e0d\u8fc7\u5728\u8fd9\u65b9\u9762\u6211\u5df2\u7ecf\u65e0\u80fd\u4e3a\u529b\u4e86\u3002(\u6839\u636ekubectl logs\u547d\u4ee4\u67e5\u770b\uff0cGROWI\u548cHackMD\u90fd\u6ca1\u6709\u663e\u793a\u51fa\u4efb\u4f55\u7c7b\u4f3c\u7684\u9519\u8bef\u65e5\u5fd7)<\/p>\n<p>\u5728Chrome\u7684\u5f00\u53d1\u8005\u5de5\u5177\u4e2d\uff0c\u770b\u8d77\u6765\u662f\u8fd9\u6837\u7684\uff0c\u51fa\u73b0\u4e86&#8221;AUTH failed: No cookie transmitted.&#8221;\u8fd9\u4e2a\u9519\u8bef\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/124-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u603b\u7ed3\u548c\u4efb\u52a1<\/h1>\n<p>\u901a\u8fc7\u4f7f\u7528Skaffold\uff0c\u53ef\u4ee5\u4e00\u6b21\u5b8c\u6210\u5bb9\u5668\u955c\u50cf\u7684\u6784\u5efa\/\u63a8\u9001\/\u90e8\u7f72\uff0c\u56e0\u6b64\u975e\u5e38\u9ad8\u6548\u3002<br \/>\n\u7279\u522b\u662f\u5728dev\u6a21\u5f0f\u4e0b\uff0c\u5b83\u4f1a\u81ea\u52a8\u68c0\u6d4b\u6587\u4ef6\u7684\u66f4\u6539\uff0c\u4ece\u91cd\u65b0\u6784\u5efa\u955c\u50cf\u5230\u90e8\u7f72\u5230\u96c6\u7fa4\uff0c\u8ba9\u4f60\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u4ee3\u7801\u7684\u7f16\u5199\u3002<\/p>\n<p>\u901a\u8fc7\u5728Kubernetes\u4e0a\u90e8\u7f72Elasticsearch\u548cHackMD\uff0c\u5b9e\u73b0\u4e86\u5bf9GROWI\u7684\u641c\u7d22\u548c\u5e76\u53d1\u7f16\u8f91\u529f\u80fd\u3002\u7531\u4e8e\u6211\u4eec\u4f7f\u7528\u4e86type: LoadBalancer\u6765\u516c\u5f00GROWI\u548cHackMD\uff0c\u6240\u4ee5\u65e0\u6cd5\u786e\u8ba4\u5728Chrome\u8bbf\u95ee\u65f6\u662f\u5426\u4f1a\u4ea7\u751f\u9884\u671f\u7684\u884c\u4e3a\uff0c\u4f46\u4f7f\u7528Ingress\u6216\u5176\u4ed6\u65b9\u6cd5\u53ef\u80fd\u4f1a\u6539\u5584\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<p>\u53e6\u5916\uff0cLoadBalancer\u7c7b\u578b\u7684\u7f3a\u70b9\u662f\u5728\u90e8\u7f72\u4e4b\u524d\u65e0\u6cd5\u77e5\u9053\u5916\u90e8\u8bbf\u95ee\u5730\u5740\uff0c\u56e0\u6b64\u5728\u9996\u6b21\u90e8\u7f72GROWI\u4e3b\u4f53\u548cHackMD\u4e4b\u524d\u65e0\u6cd5\u8bbe\u7f6e\u5f7c\u6b64\u7684\u5916\u90e8\u8bbf\u95ee\u5730\u5740\u3002\u8fd9\u4e5f\u6709\u6539\u8fdb\u7684\u7a7a\u95f4\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528Ingress\uff0c\u4e5f\u53ef\u4ee5\u8003\u8651\u4f7f\u7528ExternalDNS\uff0c\u6211\u60f3\u8fdb\u884c\u8bc4\u4f30\u3002<\/p>\n<p>\u6211\u5c06Kubernetes\u96c6\u7fa4\u4e2d\u7684\u81ea\u5b85\u670d\u52a1\u8fde\u63a5\u5230\u4e86FQDN\u4e0a- \u7684\u7684.log\u3002<\/p>\n<hr \/>\n<h1>(\u4ec5\u4f9b\u53c2\u8003) \u9519\u8bef\u6a21\u5f0f<\/h1>\n<h2>\u5f39\u6027\u641c\u7d22<\/h2>\n<pre class=\"post-pre\"><code>[elasticsearch] ERROR: [1] bootstrap checks failed\r\n[elasticsearch] [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\r\n<\/code><\/pre>\n<p>\u8fd9\u4e2a\u9519\u8bef\u662f<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> docker.elastic.co\/elasticsearch\/elasticsearch:6.8.10<\/span>\r\n\r\n<span class=\"k\">RUN <\/span>bin\/elasticsearch-plugin <span class=\"nb\">install <\/span>analysis-kuromoji\r\n<span class=\"k\">RUN <\/span>bin\/elasticsearch-plugin <span class=\"nb\">install <\/span>analysis-icu\r\n<\/code><\/pre>\n<p>\u5728Kubernetes\u4e0a\u90e8\u7f72\u4e86\u4e00\u4e2a\u4f7f\u7528\u8fd9\u4e2aDockerfile\u7684\u81ea\u5b9a\u4e49\u955c\u50cf\uff0c\u5176\u4e2d\u5b89\u88c5\u4e86\u65e5\u8bed\u63d2\u4ef6\u3002<\/p>\n<p>\u5c06\u4ee5\u4e0b\u6587\u4ef6\u653e\u7f6e\u5728\/usr\/share\/elasticsearch\/config\/elasticsearch.yml\uff0c\u5373\u53ef\u907f\u514d\u8be5\u95ee\u9898\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">http.host<\/span><span class=\"pi\">:<\/span> <span class=\"s\">0.0.0.0<\/span>\r\n\r\n<span class=\"c1\"># for elasticsearch-head<\/span>\r\n<span class=\"s\">http.cors.enabled<\/span><span class=\"pi\">:<\/span> <span class=\"no\">true<\/span>\r\n<span class=\"s\">http.cors.allow-origin<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">*\"<\/span>\r\n<\/code><\/pre>\n<h2>MariaDB (MySQL\u7684\u4e00\u4e2a\u66ff\u4ee3\u4ea7\u54c1)<\/h2>\n<p>\u4f7f\u7528Docker Compose\u7684command\u90e8\u5206\u8fdb\u884c\u90e8\u7f72\u65f6\uff0c\u4f1a\u5e94\u7528\u539f\u672c\u955c\u50cf\u4e2d\u6307\u5b9a\u7684docker-entrypoint.sh\u548ccommand\u53c2\u6570\u4e00\u8d77\uff0c\u4f46\u662f\u5728Kubernetes\u7684pod\u53c2\u6570\u4e2d\u4f7f\u7528command\u65f6\uff0c\u4f3c\u4e4e\u4f1a\u8986\u76d6docker-entrypoint.sh\u7684\u4fe1\u606f\uff0c\u5e76\u76f4\u63a5\u6267\u884cmysqld\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\u3002<\/p>\n<p>\u5f53\u4f7f\u7528Docker Compose\u63d0\u4f9b\u7684MariaDB\u5bb9\u5668\u8fdb\u884c\u6b63\u5e38\u64cd\u4f5c\u65f6\uff0c\u53ef\u4ee5\u901a\u8fc7docker inspect\u547d\u4ee4\u67e5\u770b\u5176\u53c2\u6570\uff0c\u5177\u4f53\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"Cmd\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"mysqld\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s2\">\"--character-set-server=utf8\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s2\">\"--collation-server=utf8_general_ci\"<\/span>\r\n            <span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"Image\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mariadb:10.3\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"Volumes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"\/var\/lib\/mysql\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{}<\/span>\r\n            <span class=\"p\">},<\/span>\r\n            <span class=\"nl\">\"WorkingDir\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"Entrypoint\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"docker-entrypoint.sh\"<\/span>\r\n            <span class=\"p\">],<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728Kubernetes\u4e2d\u4f7f\u7528\u6307\u5b9a\u7684\u547d\u4ee4\u8bbe\u7f6e\u5b57\u7b26\u96c6\u7b49\uff0c\u5219\u4f1a\u51fa\u73b0\u9519\u8bef\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>2020-12-05  0:45:49 0 [Note] mysqld (mysqld 10.3.27-MariaDB-1:10.3.27+maria~focal) starting as process 1 ...\r\nmysqld: Please consult the Knowledge Base to find out how to run mysqld as root!\r\n2020-12-05  0:45:49 0 [ERROR] Aborting\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728\u4ee5\u4e0a\u7559\u8a00\u4e2d\u641c\u7d22\uff0c\u53ef\u80fd\u4f1a\u627e\u5230\u89e3\u51b3\u65b9\u6cd5\uff08\u57fa\u672c\u4e0a\u770b\u8d77\u6765\u4e0d\u662f\u5bb9\u5668\u73af\u5883\uff09\u3002\u6dfb\u52a0&#8211;user=root\u9009\u9879\u3002<\/p>\n<pre class=\"post-pre\"><code>2020-12-05  0:46:37 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded\r\n2020-12-05  0:46:37 0 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist\r\n2020-12-05  0:46:37 0 [Note] Server socket created on IP: '::'.\r\n2020-12-05  0:46:37 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist\r\n<\/code><\/pre>\n<p>\u627e\u5230\u9644\u8fd1\u7c7b\u4f3c\u7684\u907f\u514d\u65b9\u6cd5\u5e76\u641c\u7d22<\/p>\n<pre class=\"post-pre\"><code>          - --user=mysql\r\n          - --datadir=\/var\/lib\/mysql\r\n<\/code><\/pre>\n<p>\u5373\u4f7f\u8fdb\u884c\u8bbe\u7f6e\u66f4\u6539\u4e5f\u6ca1\u6709\u6539\u5584\u3002<\/p>\n<p>\u4e0e\u5728Docker Compose\u4e2d\u7684\u64cd\u4f5c\u72b6\u6001\u8fdb\u884c\u6bd4\u8f83\uff0c\u4f7f\u7528\u547d\u4ee4\u65f6\u6ca1\u6709\u4f7f\u7528docker-entrypoint.sh\u8fdb\u884c\u542f\u52a8\uff0c\u56e0\u6b64\u5931\u8d25\u4e86\u3002<\/p>\n<p>\u5982\u679c\u4ec5\u4ec5\u4f7f\u7528Docker\u5355\u72ec\u6267\u884cmysqld\uff0c\u4e5f\u4f1a\u9047\u5230\u540c\u6837\u7684\u9519\u8bef\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\u3002<\/p>\n<pre class=\"post-pre\"><code>$ docker run -it --rm --name mariadb mariadb:10.3 bash\r\nroot@b8a277c49a9d:\/# mysqld --character-set-server=utf8 --collation-server=utf8_general_ci\r\n2020-12-05 11:27:44 0 [Note] mysqld (mysqld 10.3.27-MariaDB-1:10.3.27+maria~focal) starting as process 8 ...\r\nmysqld: Please consult the Knowledge Base to find out how to run mysqld as root!\r\n2020-12-05 11:27:44 0 [ERROR] Aborting\r\n\r\n<\/code><\/pre>\n<h1>\u8bf7\u63d0\u4f9b\u53c2\u8003\u8d44\u6599<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">GROWI<\/ul>\n<\/li>\n<\/ul>\n<p>weseek\/growi-docker-compose: growi-docker-compose &#8211; The fastest way to boot All-in-One GROWI<\/p>\n<p>HackMD<\/p>\n<p>growi-docker-compose\/examples\/integrate-with-hackmd at master \u00b7 weseek\/growi-docker-compose<br \/>\ngrowi-docker-compose\/hackmd at master \u00b7 weseek\/growi-docker-compose<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u662f\u201cKubernetes2 Advent Calendar 2020\u201d\u7b2c8\u5929\u7684\u6587\u7ae0\u3002\u8c22\u8c22\u3002 \u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8e [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-40684","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8ek8s\u7684growi-elasticsearch\u548chackmd\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD\" \/>\n<meta property=\"og:description\" content=\"\u672c\u6587\u662f\u201cKubernetes2 Advent Calendar 2020\u201d\u7b2c8\u5929\u7684\u6587\u7ae0\u3002\u8c22\u8c22\u3002 \u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8ek8s\u7684growi-elasticsearch\u548chackmd\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-28T05:57:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T05:53:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/33-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/\",\"name\":\"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-28T05:57:30+00:00\",\"dateModified\":\"2024-05-04T05:53:44+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8ek8s\u7684growi-elasticsearch\u548chackmd\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD","og_description":"\u672c\u6587\u662f\u201cKubernetes2 Advent Calendar 2020\u201d\u7b2c8\u5929\u7684\u6587\u7ae0\u3002\u8c22\u8c22\u3002 \u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8ek8s\u7684growi-elasticsearch\u548chackmd\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-28T05:57:30+00:00","article_modified_time":"2024-05-04T05:53:44+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d423537434c4406c98709\/33-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"14 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/","name":"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-28T05:57:30+00:00","dateModified":"2024-05-04T05:53:44+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Skaffold\u6784\u5efa\u548c\u90e8\u7f72\u9002\u7528\u4e8eK8s\u7684GROWI Elasticsearch\u548cHackMD"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8skaffold%e6%9e%84%e5%bb%ba%e5%92%8c%e9%83%a8%e7%bd%b2%e9%80%82%e7%94%a8%e4%ba%8ek8s%e7%9a%84growi-elasticsearch%e5%92%8chackmd%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/40684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=40684"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/40684\/revisions"}],"predecessor-version":[{"id":98713,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/40684\/revisions\/98713"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=40684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=40684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=40684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}