{"id":43714,"date":"2022-11-09T07:03:45","date_gmt":"2023-12-31T06:57:21","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/"},"modified":"2024-04-28T23:46:53","modified_gmt":"2024-04-28T15:46:53","slug":"%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/","title":{"rendered":"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01"},"content":{"rendered":"<p>\u56e0\u4e3a\u5728\u516c\u53f8\u5185\u8fdb\u884c\u4e86Kubernetes\u5b9e\u64cd\uff0c\u6240\u4ee5\u6211\u60f3\u548c\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u3002\u57286\u540d\u53c2\u4e0e\u8005\u79ef\u6781\u63d0\u95ee\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u89e3\u7b54\u95ee\u9898\u5e76\u987a\u5229\u5b8c\u6210\uff0c\u5927\u7ea6\u82b1\u8d39\u4e864\u4e2a\u5c0f\u65f6\u7684\u65f6\u95f4\u3002<\/p>\n<p>\u6211\u4e5f\u5c06\u8d44\u6599\u4e0a\u4f20\u5230\u4e86SpeakerDeck\u3002<br \/>\n<iframe loading=\"lazy\" title=\"\u3084\u308b\u305c\uff01Kubernetes\u30cf\u30f3\u30ba\u30aa\u30f3\uff01\" id=\"talk_frame_518498\" class=\"speakerdeck-iframe\" src=\"\/\/speakerdeck.com\/player\/02d52de545024b7b9b8bb2daa957afae\" width=\"500\" height=\"281\" style=\"aspect-ratio:500\/281; border:0; padding:0; margin:0; background:transparent;\" frameborder=\"0\" allowtransparency=\"true\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>(2019\/07\/11\u8ffd\u8a18)<br \/>\n\u6211\u5199\u4e86\u7eed\u96c6\uff01\u8fd9\u6b21\u4e0d\u4f1a\u592a\u590d\u6742\u4e86\u5427\uff01\uff1f\u201c\u76f8\u5bf9\u6765\u8bf4\u590d\u6742\u7684Kubernetes\u5b9e\u8df5\u201d\uff0c\u7136\u540e\u662f<\/p>\n<h2>\u5b9e\u8df5\u7684\u76ee\u6807<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u3068\u304a\u53cb\u9054\u306b\u306a\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>\u30a4\u30e1\u30fc\u30b8\u3092\u63b4\u3080<br \/>\n\u89e6\u3063\u3066\u307f\u308b(\u30ed\u30fc\u30ab\u30eb\u30fbEKS\u30fb\u3061\u3087\u3063\u3068GKE)<br \/>\n\u69cb\u7bc9\u30fb\u904b\u7528\u304c\u3067\u304d\u308b\u3088\u3046\u306a\u6c17\u5206\u306b\u306a\u308b<\/p>\n<p>\u5df7\u306b\u3042\u3075\u308c\u308bKubernetes\u306e\u8a18\u4e8b\u30fb\u30b9\u30e9\u30a4\u30c9\u304c\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b<\/p>\n<p>\u7531\u4e8e\u516c\u53f8\u4e1a\u52a1\u4e3b\u8981\u4f7f\u7528AWS\uff0c\u56e0\u6b64EKS\u662f\u4e3b\u8981\u9009\u62e9\u3002<br \/>\n\u5982\u679c\u53ea\u662f\u7eaf\u7cb9\u60f3\u5b66\u4e60Kubernetes\uff0c\u63a8\u8350\u4f7f\u7528GKE\u3002<br \/>\n\u4f46\u662f\uff0c\u7531\u4e8e\u5927\u90e8\u5206\u5185\u5bb9\u90fd\u662f\u5173\u4e8e\u4e00\u822c\u7684Kubernetes\u8ba8\u8bba\uff0c\u6240\u4ee5\u65e0\u8bba\u9009\u62e9\u54ea\u4e2a\u5e73\u53f0\u9605\u8bfb\u8fd9\u7bc7\u6587\u7ae0\u90fd\u53ef\u4ee5\u3002<\/p>\n<h2>\u524d\u7f6e\u6761\u4ef6\u53ca\u51c6\u5907<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Docker \/ Docker Compose\u306f\u524d\u63d0\u77e5\u8b58\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4ee5\u4e0b\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u524d\u63d0\u3067\u9032\u3081\u307e\u3059<\/ul>\n<\/li>\n<\/ul>\n<p>Docker for Desktop<br \/>\nkubectl<br \/>\nAWS CLI(IAM\u30e6\u30fc\u30b6\u30fc\u4f5c\u3063\u3066profile\u8a2d\u5b9a\u6e08\u307f)<br \/>\naws-iam-authenticator<br \/>\neksctl<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> docker <span class=\"nt\">-v<\/span>\r\n<span class=\"go\">Docker version 18.09.2, build 6247962\r\n\r\n<\/span><span class=\"gp\">$<\/span> kubectl version <span class=\"nt\">--short<\/span> <span class=\"nt\">--client<\/span>\r\n<span class=\"go\">Client Version: v1.13.4\r\n\r\n<\/span><span class=\"gp\">$<\/span> aws <span class=\"nt\">--version<\/span>\r\n<span class=\"go\">aws-cli\/1.16.125 Python\/2.7.14 Darwin\/18.2.0 botocore\/1.12.115\r\n\r\n<\/span><span class=\"gp\">$<\/span> aws-iam-authenticator <span class=\"nb\">help<\/span>\r\n<span class=\"go\">(\u7701\u7565)\r\n\r\n<\/span><span class=\"gp\">$<\/span> eksctl version\r\n<span class=\"go\">[\u2139]  version.Info{BuiltAt:\"\", GitCommit:\"\", GitTag:\"0.1.31\"}\r\n<\/span><\/code><\/pre>\n<h2>Kubernetes\u662f\u4ec0\u4e48\uff1f<\/h2>\n<p>\u603b\u7684\u8bf4\u6765<\/p>\n<p>\u5bb9\u5668\u7f16\u6392\u7cfb\u7edf<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u305f\u304f\u3055\u3093\u306e\u30b5\u30fc\u30d0\u30fc\u306b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u305f\u304f\u3055\u3093\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u7f6e\u3044\u3066<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u9023\u643a\u3055\u305b\u308b\u3088\u3046\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30c7\u30d7\u30ed\u30a4\u30fb\u7ba1\u7406\u30fb\u30b9\u30b1\u30fc\u30eb\u3068\u304b\u3055\u305b\u308b\u3084\u30fc\u3064<\/ul>\n<p>\u9ed8\u8ba4\u6807\u51c6 (m\u014d,<\/p>\n<p>2014\u5e74\uff0c\u8c37\u6b4c\u4ee5\u5f00\u653e\u6e90\u4ee3\u7801\u5f62\u5f0f\u53d1\u5e03\u4e86\u4e00\u4e2a\u540d\u4e3a&#8221;Cadvisor&#8221;\u7684\u9879\u76ee\u3002\u636e\u8bf4\u5176\u4e2d\u8574\u542b\u4e86\u8c37\u6b4c\u591a\u5e74\u79ef\u7d2f\u7684\u5bb9\u5668\u5316\u8fd0\u7ef4\u7ecf\u9a8c\u3002\u76ee\u524d\uff0cCNCF\uff08\u4e91\u539f\u751f\u8ba1\u7b97\u57fa\u91d1\u4f1a\uff09\u8d1f\u8d23\u7ba1\u7406\u8be5\u9879\u76ee\u3002\u867d\u7136\u6709Docker Swarm\u4f5c\u4e3a\u7ade\u4e89\u4ea7\u54c1\u5b58\u5728\uff0c\u4f46Docker\u4e5f\u6b63\u5f0f\u63d0\u4f9b\u5bf9Cadvisor\u7684\u652f\u6301\u3002?<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/15-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.40.35.png\" \/><\/div>\n<p>\u5728\u4e0d\u4ec5\u9650\u4e8eGCP\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e2a\u52a8\u4f5c\u73af\u5883\u4e5f\u53ef\u4ee5\u5728\u81ea\u5df1\u7684\u6570\u636e\u4e2d\u5fc3\u6216\u5176\u4ed6\u4e91\u5e73\u53f0\u4e0a\u8fd0\u884c\u3002<br \/>\n\u5728\u5404\u79cd\u516c\u5171\u4e91\u5e73\u53f0\u4e0a\uff0c\u5373\u4f7f\u4e0d\u9700\u8981\u81ea\u5df1\u6784\u5efa\uff0c\u4e5f\u53ef\u4ee5\u627e\u5230\u6258\u7ba1\u670d\u52a1\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">GCP: GKE<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">AWS: EKS (ECS\u3042\u308b\u306e\u306b\uff01?)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Azure: AKS<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">IBM Cloud(\u65e7Bluemix): IKS<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Alibaba: Container Service for Kubernetes<\/ul>\n<p>\u73b0\u5728\u867d\u7136\u8fd8\u5904\u4e8e\u5f15\u5165\u9636\u6bb5\u7684\u77e5\u8bc6\u88ab\u7092\u4f5c\u7684\u9636\u6bb5\uff0c\u4f46\u518d\u8fc7\u4e00\u6bb5\u65f6\u95f4\uff0c\u5b83\u53ef\u80fd\u4f1a\u53d8\u6210\u4e00\u4e2a\u7406\u6240\u5f53\u7136\u7684\u6280\u672f\u3002<\/p>\n<h2>Kubernetes\u6709\u4ec0\u4e48\u597d\u5904\uff1f<\/h2>\n<p>-&gt; Docker\u771f\u7684\u5f88\u65b9\u4fbf\u5462\u3002<br \/>\n-&gt; \u5728\u751f\u4ea7\u73af\u5883\u4e2d\u60f3\u4f7f\u7528\u5b83\u5462\u3002<br \/>\n-&gt; \u4e0d\u8fc7Docker\u57fa\u672c\u4e0a\u662f\u4e00\u4e2a\u5bb9\u5668\u4e00\u4e2a\u529f\u80fd\u5462\u3002<br \/>\n-&gt; \u5982\u679c\u8981\u6784\u5efa\u590d\u6742\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u5c31\u9700\u8981\u591a\u4e2a\u5bb9\u5668\u5462\u3002<br \/>\n-&gt; \u90a3\u4e48\uff0c\u8be5\u5982\u4f55\u6784\u5efa\u5462\u2026\uff1f<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/21-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.42.15.png\" \/><\/div>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u304c1\u53f0\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u53ce\u307e\u3089\u306a\u3044\u3060\u308d\u3046\u304b\u3089\u3001\u3069\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u3069\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u3042\u308b\u304b\u7ba1\u7406\u3057\u306a\u304f\u3061\u3083<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u304c\u6b7b\u3093\u3060\u3068\u304d\u306b\u6c17\u3065\u3051\u308b\u3088\u3046\u306b\u3057\u306a\u3044\u3068\u3002\u56de\u5fa9\u65b9\u6cd5\u3082\u7528\u610f\u305b\u306d\u3070<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d0\u30fc\u3092\u8de8\u3044\u3060\u30b3\u30f3\u30c6\u30ca\u9593\u901a\u4fe1\u3063\u3066\u7d50\u69cb\u3081\u3093\u3069\u304f\u3055\u3044<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u3092\u66f4\u65b0\u3059\u308b\u3068\u304d\u3001\u30b3\u30f3\u30c6\u30ca\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u3068\u304b\u30c7\u30d7\u30ed\u30a4\u9806\u5e8f\u3068\u304b\u8003\u3048\u306a\u304f\u3061\u3083<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u8907\u6570\u30b5\u30fc\u30d0\u30fc\u306b\u30b3\u30f3\u30c6\u30ca\u304c\u3042\u308b\u3093\u306a\u3089\u3001\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u3082\u8003\u3048\u306a\u304f\u3061\u3083<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d0\u30fc\u306e\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3092\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3053\u3068\u3082\u3042\u308b\u3088\u306d\u2026<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5404\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u30ed\u30b0\u304c\u51fa\u3066\u304f\u308b\u3051\u3069\u3001\u3061\u3083\u3093\u3068\u7ba1\u7406\u3057\u3066\u304a\u304b\u306a\u3044\u3068\u904b\u7528\u8f9b\u3044\u3088\u306d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">etc&#8230;<\/ul>\n<p>\u8fd9\u5bf9\u4eba\u7c7b\u6765\u8bf4\u592a\u590d\u6742\u4e86\uff0c\u4e0d\u662f\u5417\u3002\u3002<\/p>\n<p>\u53ef\u4ee5\u505a\u5230\u7684\u3002<br \/>\n\u662f\u7684\uff0c\u5982\u679c\u662fKubernetes\u7684\u8bdd\u3002<\/p>\n<h2>\u6478\u6e05 Kubernetes \u7684\u6982\u5ff5<\/h2>\n<h3>\u57fa\u672c\u6982\u5ff5<\/h3>\n<p>\u5982\u679c\u6709\u4e00\u4e2a\u53ef\u4ee5\u5f88\u597d\u5730\u7ba1\u7406\u5bb9\u5668\u7684\u7cfb\u7edf\uff0c\u90a3\u5c31\u592a\u597d\u4e86\u3002\u8fd9\u662f\u57fa\u672c\u7684\u60f3\u6cd5\u3002<br \/>\n\u6211\u4eec\u5e0c\u671b\u5c06\u8fd9\u79cd\u597d\u7684\u7cfb\u7edf\u7684\u8fd0\u8425\u65b9\u5f0f\u901a\u8fc7\u6ce8\u6587\u4e66\u4f20\u8fbe\u51fa\u53bb\uff0c\u7136\u540e\u7cfb\u7edf\u5c31\u4f1a\u5f88\u68d2\u5730\u4e3a\u6211\u4eec\u5904\u7406\u3002<br \/>\n\u800c\u80fd\u591f\u4e3a\u6211\u4eec\u505a\u5230\u8fd9\u4e00\u70b9\u7684\u5c31\u662fKubernetes\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/28-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.44.00.png\" \/><\/div>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u3044\u3044\u611f\u3058\u306b\u5834\u6240\u3092\u5224\u65ad\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u3092\u914d\u7f6e<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u304c\u6b7b\u3093\u3060\u3089\u81ea\u52d5\u56de\u5fa9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d0\u30fc\u9593\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3082\u3044\u3044\u611f\u3058\u306b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ed\u30fc\u30ea\u30f3\u30b0\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8 \/ Blue\/Green\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3082\u304a\u624b\u306e\u7269<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u3082\u3084\u3063\u3066\u304f\u308c\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d0\u30fc\u306e\u30aa\u30fc\u30c8\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3082(\u30af\u30e9\u30a6\u30c9\u306a\u3089)\u8a2d\u5b9a\u53ef\u80fd<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30ed\u30b0\u53ce\u96c6\u3082\u30ab\u30f3\u30bf\u30f3\u306b<\/ul>\n<h3>\u8ba9\u6211\u4eec\u628a\u5b83\u8f6c\u6362\u6210Kubernetes\u7684\u672f\u8bed\u3002<\/h3>\n<p>\u6211\u4f1a\u5148\u5c06\u4e4b\u524d\u56fe\u4e2d\u7684\u5143\u7d20\u8f6c\u6362\u6210Kubernetes\u672f\u8bed\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/32-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.44.16.png\" \/><\/div>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u3044\u3044\u611f\u3058\u306e\u30b7\u30b9\u30c6\u30e0: Master(ControlPlane\u3068\u3082)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u304c\u914d\u7f6e\u3055\u308c\u308b\u30b5\u30fc\u30d0\u30fc: Node<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Node\u306e\u96c6\u5408: DataPlane<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Master\u3068DataPlane\u3092\u5408\u308f\u305b\u3066: Cluster<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Master\u306b\u6295\u3052\u308b\u6ce8\u6587\u66f8: \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Master\u306b\u6ce8\u6587\u66f8\u3092\u6295\u3052\u3064\u3051\u308b\u3084\u3064: kubectl<\/ul>\n<\/li>\n<\/ul>\n<p>CLI\u30c4\u30fc\u30eb<br \/>\n\u6ce8\u6587\u66f8\u3092\u6295\u3052\u3064\u3051\u308b\u3060\u3051\u3067\u306a\u304f\u3044\u308d\u3093\u306a\u64cd\u4f5c\u304c\u3067\u304d\u308b<\/p>\n<p>\u6211\u5011\u5c07\u958b\u5c55\u8a72\u9805\u76ee\u3002 .)<\/p>\n<h3>\u6e05\u5355\u6587\u4ef6<\/h3>\n<p>\u7531\u4e8e\u5728Kubernetes\u4e2d\uff0c\u6e05\u5355\u6587\u4ef6\u7684\u6982\u5ff5\u975e\u5e38\u72ec\u7279\uff0c\u56e0\u6b64\u6211\u5c06\u5bf9\u5176\u8fdb\u884c\u8ba8\u8bba\u3002<\/p>\n<p>\u300c\u5ba3\u8a00\u7684\u8a2d\u5b9a\u300d( &lt;-&gt; \u300c\u547d\u4ee4\u7684\u8a2d\u5b9a\u300d)\u3092\u7279\u5fb4\u3068\u3059\u308b\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306f\u3001yaml\uff08\u307e\u305f\u306fjson\uff09\u3067\u8a18\u8ff0\u3055\u308c\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u7406\u60f3\u7684\u306a\u72b6\u614b\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5982\u679c\u8981\u6253\u4e2a\u6bd4\u65b9\u7684\u8bdd\uff0c\u547d\u4ee4\u5f0f\u914d\u7f6e\u5c31\u50cf\u4e00\u5bb6\u666e\u901a\u7684\u62c9\u9762\u5e97\u3002<\/p>\n<p>\u4f60\u70b9\u4e86\u4e00\u7897\u7d20\u9762\uff0c\u62ff\u5230\u9762\u540e\uff0c\u62c9\u9762\u5e97\u5c31\u4e0d\u518d\u53c2\u4e0e\u63a5\u4e0b\u6765\u7684\u4e8b\u60c5\u4e86\u3002<br \/>\n\u5982\u679c\u4f60\u60f3\u518d\u70b9\u522b\u7684\u83dc\uff0c\u5c31\u9700\u8981\u518d\u6b21\u53ec\u5524\u5e97\u5458\u6765\u70b9\u9910\u3002<\/p>\n<p>\u8fd9\u7c7b\u5de5\u5177\u5c31\u50cf Ansible\u3001Terraform\u3001CloudFormation\u3002<\/p>\n<p>\u5ba3\u8a00\u662f\u4e00\u7897\u72d7\u9eb5\u3002<br \/>\n\u72d7\u9eb5\u7684\u8a2d\u7f6e\u61c9\u8a72\u662f\u5728\u7897\u4e2d\u653e\u7f6e\u4e00\u7897\u9eb5\u7684\u72c0\u614b\uff0c\u9eb5\u6524\u4e00\u76f4\u76e3\u8996\u8457\u7897\u3002<br \/>\n\u7576\u5403\u5b8c\u9eb5\u4f7f\u7897\u4e2d\u9eb5\u6d88\u5931\u6642\uff0c\u5b83\u6703\u81ea\u52d5\u6dfb\u52a0\u9eb5\u9032\u53bb\u3002<br \/>\n\u5728Kubernetes\u4e2d\uff0c\u5b83\u6703\u5728\u61c9\u7528\u4e86Manifest\u6587\u4ef6\u5f8c\uff0c\u70ba\u5bb9\u5668\u63d0\u4f9b\u81ea\u52d5\u6062\u5fa9\u7b49\u529f\u80fd\uff0c\u4ee5\u4fdd\u6301\u5176\u5167\u5bb9\u7684\u7a69\u5b9a\u3002<\/p>\n<h3>\u6982\u62ec\u6765\u8bf4<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5ba3\u8a00\u7684\u306b\u66f8\u3044\u305f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u3092<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kubectl\u3092\u4f7f\u3063\u3066master\u306b\u6e21\u3059\u3068<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5404node\u306b\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u308a\u3057\u3066\u304f\u308c\u3066<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u305d\u306e\u5f8c\u306f\u3044\u3044\u611f\u3058\u306b\u76e3\u8996\u30fb\u7dad\u6301\u3092\u3057\u3066\u304f\u308c\u308b\u3084\u30fc\u3064<\/ul>\n<h2>\u5728\u672c\u5730\u8bd5\u7528Kubernetes<\/h2>\n<p>\u597d\u4e86\uff0c\u4ece\u8fd9\u91cc\u5f00\u59cb\u5b9e\u9645\u64cd\u4f5c\u5427\u3002\u9996\u5148\u8ba9\u6211\u4eec\u8bd5\u8bd5\u770b\u3002<\/p>\n<h3>\u542f\u7528Docker Desktop\u7684Kubernetes<\/h3>\n<p>\u6253\u5f00\u201cPreference\u201d\u753b\u9762\uff0c\u5e76\u8fdb\u884c\u4ee5\u4e0b\u8bbe\u7f6e\u3002<br \/>\n\u9996\u6b21\u542f\u52a8\u53ef\u80fd\u9700\u8981\u7ea65\u5206\u949f\u624d\u80fd\u751f\u6548\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/46-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.46.11.png\" \/><\/div>\n<p>\u5982\u679c\u4ee5\u524d\u4f7f\u7528\u8fc7\u7684\u4eba\uff0c\u53ef\u80fd\u6700\u597d\u5c06\u5176\u91cd\u7f6e\u4e00\u4e0b\u4ee5\u907f\u514d\u9047\u5230\u95ee\u9898\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/48-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.46.23.png\" \/><\/div>\n<h3>kubectl\u7684\u914d\u7f6e\u8a2d\u5b9a<\/h3>\n<p>\u5c06\u4f7f\u7528kubectl\u8fdb\u884c\u64cd\u4f5c\u7684Kubernetes\u96c6\u7fa4\u8f6c\u6362\u4e3adocker-for-desktop\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl config use-context docker-for-desktop\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u68c0\u67e5\u4e00\u4e0b\u662f\u5426\u6b63\u786e\u8bbe\u7f6e\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl config current-context\r\n<span class=\"go\">docker-for-desktop\r\n<\/span><\/code><\/pre>\n<h3>\u786e\u8ba4\u52a8\u4f5c<\/h3>\n<p>\u6709\u5f88\u591a\u4e8b\u60c5\u6b63\u5728\u53d1\u751f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pods <span class=\"nt\">--namespace<\/span><span class=\"o\">=<\/span>kube-system\r\n<span class=\"go\">NAMESPACE     NAME                                         READY   STATUS    RESTARTS   AGE\r\nkube-system   etcd-docker-for-desktop                      1\/1     Running   0          1m\r\nkube-system   kube-apiserver-docker-for-desktop            1\/1     Running   0          1m\r\nkube-system   kube-controller-manager-docker-for-desktop   1\/1     Running   0          1m\r\nkube-system   kube-dns-86f4d74b45-xb4qh                    3\/3     Running   0          2m\r\nkube-system   kube-proxy-8r45p                             1\/1     Running   0          2m\r\nkube-system   kube-scheduler-docker-for-desktop            1\/1     Running   0          1m\r\n<\/span><\/code><\/pre>\n<h3>\u51c6\u5907\u597d<\/h3>\n<p>\u4e3a\u4e86\u4f7fdocker-for-desktop\u80fd\u591f\u4f7f\u7528ingress(\u5982\u4e0b\u6240\u8ff0)\uff0c\u9700\u8981\u8fdb\u884c\u9884\u5907\u5de5\u4f5c\u3002\u7531\u4e8e\u8fd9\u4ec5\u662f\u672c\u5730\u64cd\u4f5c\uff0c\u6240\u4ee5\u4e0d\u5fc5\u592a\u8fc7\u62c5\u5fc3\uff0c\u6ca1\u95ee\u9898\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl create namespace ingress-nginx\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"no\">EOF<\/span><span class=\"sh\"> &gt; kustomization.yaml\r\n<\/span><span class=\"go\">apiVersion: kustomize.config.k8s.io\/v1beta1\r\nkind: Kustomization\r\nnamespace: ingress-nginx\r\nbases:\r\n- github.com\/kubernetes\/ingress-nginx\/deploy\/cluster-wide\r\n- github.com\/kubernetes\/ingress-nginx\/deploy\/cloud-generic\r\nEOF\r\n<\/span><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-k<\/span> <span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<h3>\u90e8\u7f72\u793a\u4f8b\u5e94\u7528<\/h3>\n<p>\u53d6\u5f97\u793a\u4f8b\u5e94\u7528\u7a0b\u5e8f\u7684\u6e05\u5355\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> git clone git@github.com:kubernetes\/examples.git\r\n<\/code><\/pre>\n<p>\u7531\u4e8eDocker\u684c\u9762\u7248\u7684Kubernetes\u5bf9\u7cfb\u7edf\u8d1f\u8377\u5f88\u9ad8\uff0c\u56e0\u6b64\u9700\u8981\u8c03\u6574\u6240\u5efa\u7acb\u7684\u5bb9\u5668\u6570\u91cf\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> vi examples\/guestbook\/frontend-deployment.yaml\r\n<span class=\"go\">10\u884c\u76ee   replicas: 3 &lt;- \u3053\u308c\u30921\u306b\u5909\u66f4\r\n\r\n<\/span><span class=\"gp\">$<\/span> vi examples\/guestbook\/redis-slave-deployment.yaml\r\n<span class=\"go\">11\u884c\u76ee   replicas: 2 &lt;- \u3053\u308c\u30921\u306b\u5909\u66f4\r\n<\/span><\/code><\/pre>\n<p>\u90e8\u7f72\uff01\u5c06examples\/guestbook\u6587\u4ef6\u5939\u4e0b\u7684\u6240\u6709\u6e05\u5355\u6587\u4ef6\u90e8\u7f72\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> examples\/guestbook\/\r\n<\/code><\/pre>\n<p>\u5c3d\u7ba1\u793a\u4f8b\u5e94\u7528\u7a0b\u5e8f\u5df2\u7ecf\u5f00\u59cb\u8fd0\u884c\uff0c\u4f46\u8fd8\u9700\u8981\u4e00\u70b9\u989d\u5916\u7684\u5de5\u4f5c\u624d\u80fd\u4ece\u5916\u90e8\u8fdb\u884c\u8bbf\u95ee\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"sh\">'<\/span><span class=\"no\">EOT<\/span><span class=\"sh\">' &gt;.\/guestbook-ingress.yaml\r\n<\/span><span class=\"go\">apiVersion: extensions\/v1beta1\r\nkind: Ingress\r\nmetadata:\r\n  name: guestbook-ingress\r\nspec:\r\n  rules:\r\n  - http:\r\n      paths:\r\n      - path: \/\r\n        backend:\r\n          serviceName: frontend\r\n          servicePort: 80\r\nEOT\r\n<\/span><\/code><\/pre>\n<p>\u6211\u4f1a\u628a\u8fd9\u4e2a\u90e8\u7f72\u4e0a\u7ebf\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> guestbook-ingress.yaml\r\n<\/code><\/pre>\n<p>\u7b49\u5f85\u76f4\u5230\u5730\u5740\uff08ADDRESS\uff09\u53d8\u6210\u672c\u5730\u4e3b\u673a\uff08localhost\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get ingress\r\n<span class=\"go\">NAME                HOSTS   ADDRESS     PORTS   AGE\r\nguestbook-ingress   *       localhost   80      24m\r\n<\/span><\/code><\/pre>\n<p>\u5f53\u4f60\u8bbf\u95eehttp:\/\/localhost\u65f6\uff0c\u4f1a\u663e\u793a\u793a\u4f8b\u5e94\u7528\u7a0b\u5e8f\u7684\u754c\u9762\u3002\u7531\u4e8e\u7aef\u53e3\u662f80\uff0c\u6839\u636e\u7535\u8111\u7684\u60c5\u51b5\u53ef\u80fd\u65e0\u6cd5\u6210\u529f\u8bbf\u95ee\u3002\u636e\u8bf4\u4f7f\u7528http:\/\/127.0.0.1\u6709\u65f6\u4e5f\u53ef\u4ee5\u6b63\u5e38\u5de5\u4f5c\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/74-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.46.36.png\" \/><\/div>\n<h3>\u53d1\u751f\u4e86\u4ec0\u4e48\u4e8b\u60c5\uff1f<\/h3>\n<p>\u8fd9\u4e2a\u53ef\u4ee5\u7528\u56fe\u5f62\u6765\u8868\u793a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/77-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.47.07.png\" \/><\/div>\n<p>\u8bf7\u51b7\u9759\u4e0b\u6765\u3002<br \/>\n\u5c06\u8981\u70b9\u63d0\u53d6\u51fa\u6765\u770b\uff0c\u8fd9\u53ea\u662f\u4e00\u4e2a\u4ec5\u5305\u542b\u524d\u7aef\u548cRedis\u7684\u7b80\u5355\u5e94\u7528\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/79-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.47.24.png\" \/><\/div>\n<p>\u9996\u5148\uff0c\u8ba9\u6211\u4eec\u80fd\u591f\u7406\u89e3\u8fd9\u4e2a\u56fe\u3002<\/p>\n<h4>\u64ad\u5ba2<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u306e\u6700\u5c0f\u30c7\u30d7\u30ed\u30a4\u5358\u4f4d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">1\u3064\u4ee5\u4e0a\u306e\u30b3\u30f3\u30c6\u30ca\u3068\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u96c6\u307e\u308a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u540c\u4e00Pod\u5185\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u540c\u4e00Node\u306b\u914d\u7f6e\u3055\u308c\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>\u300c\u540c\u4e00Node\u3067\u52d5\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\uff1f\u300d\u304cPod\u69cb\u6210\u306e\u4e00\u3064\u306e\u57fa\u6e96<\/p>\n<p>1\u3064\u306ePod\u5185\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u540c\u3058IP\u30a2\u30c9\u30ec\u30b9\u3068\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b<\/p>\n<p>Pod\u5185\u306e\u30b3\u30f3\u30c6\u30ca\u9593\u306e\u901a\u4fe1\u306f\u30d7\u30ed\u30bb\u30b9\u9593\u901a\u4fe1\u3068\u3057\u3066\u884c\u3046<\/p>\n<h4>\u590d\u5236\u96c6\u5408<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u540c\u3058\u4ed5\u69d8\u306ePod\u304c\u6307\u5b9a\u3057\u305f\u6570\u3060\u3051\u5b58\u5728\u3059\u308b\u3088\u3046\u751f\u6210\u30fb\u7ba1\u7406\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>Pod\u304c\u6b7b\u3093\u3060\u3068\u304d\u3082\u6307\u5b9a\u3057\u305f\u6570\u306b\u306a\u308b\u3088\u3046\u81ea\u52d5\u56de\u5fa9\u3057\u3066\u304f\u308c\u308b<\/p>\n<p>Pod\u3068ReplicaSet\u306f\u758e\u7d50\u5408<\/p>\n<p>&#8220;Label&#8221;\u3068\u3044\u3046\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4f7f\u3063\u3066\u90fd\u5ea6\u691c\u7d22\u3057\u3066\u3044\u308b<br \/>\n\u624b\u52d5\u3067Pod\u306eLabel\u3092\u66f8\u304d\u63db\u3048\u308c\u3070\u3001\u2028ReplicaSet\u304b\u3089\u5207\u308a\u96e2\u3057\u3066\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u53ef\u80fd<\/p>\n<h4>\u90e8\u7f72 (b\u00f9 sh\u01d4)<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f<\/ul>\n<\/li>\n<\/ul>\n<p>ReplicaSet\u306e\u5909\u66f4\u3092\u5b89\u5168\u306b\u53cd\u6620\u3055\u305b\u308b \/ \u4e16\u4ee3\u7ba1\u7406\u3059\u308b<br \/>\nPod\u306e\u30b9\u30b1\u30fc\u30eb\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u66f4\u65b0\u3001\u30ed\u30fc\u30eb\u30d0\u30c3\u30afetc&#8230;<\/p>\n<p>2\u3064\u306eDeployment\u6226\u7565<\/p>\n<p>Recreate<br \/>\nRollingUpdate<\/p>\n<p>ReplicaSet\u3068Deployment\u3082\u758e\u7d50\u5408<\/p>\n<p>\u5728Deployment\u7684\u6e05\u5355\u6587\u4ef6\u4e2d\uff0c\u8fd8\u4f1a\u5305\u542b\u6709\u6709\u5173ReplicaSet\u548cPod\u7684\u4fe1\u606f\u3002<br \/>\n\uff08\u867d\u7136\u53ef\u4ee5\u7f16\u5199ReplicaSet\u548cPod\u5355\u72ec\u7684\u6e05\u5355\u6587\u4ef6\uff0c\u4f46\u4e00\u822c\u5e76\u4e0d\u5e38\u505a\u3002\uff09<\/p>\n<p>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u67e5\u770b\u793a\u4f8b\u5e94\u7528\u7a0b\u5e8f\u7684frontend-deployment.yaml\u6587\u4ef6\u3002redis-master-deployment.yaml\u548credis-slave-deployment.yaml\u4e5f\u5927\u81f4\u76f8\u540c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apps\/v1<\/span>              <span class=\"c1\"># apply\u6642\u306b\u4f7f\u7528\u3059\u308bAPI\u306e\u7a2e\u5225\u3002\u30ea\u30bd\u30fc\u30b9(kind)\u306b\u3088\u3063\u3066\u6c7a\u307e\u308b<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Deployment<\/span>                 <span class=\"c1\"># Deployment\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>                 <span class=\"c1\"># Deployment\u30ea\u30bd\u30fc\u30b9\u306e\u540d\u524d\u3002\u300cmetadata.name + \u30e9\u30f3\u30c0\u30e0\u6587\u5b57\u5217\u300d\u306e\u540d\u524d\u3067ReplicaSet\u304c\u751f\u6210\u3055\u308c\u308b<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">matchLabels<\/span><span class=\"pi\">:<\/span>                 <span class=\"c1\"># ReplicaSet\u304cPod\u3092\u691c\u7d22\u3059\u308b\u3068\u304d\u306eLabel<\/span>\r\n      <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">guestbook<\/span>\r\n      <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>\r\n  <span class=\"na\">replicas<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>                    <span class=\"c1\"># ReplicaSet\u304c\u751f\u6210\u30fb\u7ba1\u7406\u3059\u308bPod\u306e\u6570<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>                      <span class=\"c1\"># ---\u3053\u3053\u304b\u3089Pod\u306e\u5b9a\u7fa9--------------------------------------------<\/span>\r\n    <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>                    <span class=\"c1\"># Pod\u306eLabel\u3002ReplicaSet\u304c\u7ba1\u7406\u4e0b\u306ePod\u3092\u691c\u7d22\u3059\u308b\u3068\u304d\u306b\u4f7f\u3046<\/span>\r\n        <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">guestbook<\/span>\r\n        <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>\r\n    <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\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">php-redis<\/span>          <span class=\"c1\"># \u30b3\u30f3\u30c6\u30ca\u540d<\/span>\r\n        <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/gb-frontend:v4<\/span>  <span class=\"c1\"># \u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8<\/span>\r\n        <span class=\"na\">resources<\/span><span class=\"pi\">:<\/span>               <span class=\"c1\"># \u4f7f\u7528\u3059\u308bCPU, Memory\u306e\u6307\u5b9a<\/span>\r\n          <span class=\"na\">requests<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">cpu<\/span><span class=\"pi\">:<\/span> <span class=\"s\">100m<\/span>\r\n            <span class=\"na\">memory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">100Mi<\/span>\r\n        <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>                     <span class=\"c1\"># \u74b0\u5883\u5909\u6570<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GET_HOSTS_FROM<\/span>\r\n          <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">dns<\/span>\r\n        <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>                   <span class=\"c1\"># EXPOSE\u3059\u308b\u30dd\u30fc\u30c8\u306e\u6307\u5b9a<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n<\/code><\/pre>\n<h4>\u670d\u52a1 (f\u00fa w\u00f9)<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Pod\u306e\u96c6\u5408(\u4e3b\u306bReplicaSet)\u306b\u5bfe\u3059\u308b\u7d4c\u8def\u3084\u30b5\u30fc\u30d3\u30b9\u30c7\u30a3\u30b9\u30ab\u30d0\u30ea\u3092\u63d0\u4f9b<\/ul>\n<\/li>\n<\/ul>\n<p>\u30af\u30e9\u30b9\u30bf\u5185DNS\u3067\u3001&lt;Service\u540d&gt;.&lt;Namespace\u540d&gt;\u3067\u540d\u524d\u89e3\u6c7a\u53ef\u80fd\u306b<br \/>\n\u540c\u3058Namespace\u5185\u306a\u3089&lt;Service\u540d&gt;\u3060\u3051\u3067OK<\/p>\n<p>\u3053\u3053\u3067\u3082Label\u306b\u3088\u3063\u3066\u5bfe\u8c61\u306ePod\u304c\u691c\u7d22\u3055\u308c\u308b<\/p>\n<p>\u5bfe\u8c61\u306ePod\u304c\u52d5\u7684\u306b\u5165\u308c\u66ff\u308f\u3063\u305f\u308a\u3057\u3066\u3082\u3001Label\u3055\u3048\u3064\u3044\u3066\u3044\u308c\u3070\u4e00\u8cab\u3057\u305f\u540d\u524d\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b<\/p>\n<p>\u4ee5\u4e0b\u662fService\u7684\u6e05\u5355\u6587\u4ef6\u3002<br \/>\nfrontend-service.yaml\u662f\u4e13\u95e8\u7528\u4e8e\u524d\u7aef\u7684\uff0credis-*-service.yaml\u662f\u4e13\u95e8\u7528\u4e8e\u540e\u7aef\u7684\uff0c\u56e0\u6b64Service\u7684\u7c7b\u578b\u662f\u4e0d\u540c\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>                 <span class=\"c1\"># Service\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>              <span class=\"c1\"># Service\u30ea\u30bd\u30fc\u30b9\u306e\u540d\u524d<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>                     <span class=\"c1\"># Service\u306b\u3064\u3051\u308bLabel<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">guestbook<\/span>\r\n    <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">NodePort<\/span>              <span class=\"c1\"># Service\u306e\u7a2e\u5225\u3002NodePort\u306f\u30af\u30e9\u30b9\u30bf\u5916\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3084\u3064<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>                  <span class=\"c1\"># \u30a2\u30af\u30bb\u30b9\u3092\u53d7\u3051\u4ed8\u3051\u308b\u30dd\u30fc\u30c8<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>                   <span class=\"c1\"># \u5bfe\u8c61\u306ePod\u3092\u691c\u7d22\u3059\u308b\u3068\u304d\u306eLabel<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">guestbook<\/span>\r\n    <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis-master<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis<\/span>\r\n    <span class=\"na\">role<\/span><span class=\"pi\">:<\/span> <span class=\"s\">master<\/span>\r\n    <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">backend<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n                              <span class=\"c1\"># \u7701\u7565\u3055\u308c\u3066\u3044\u308b\u3051\u3069type\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\"ClusterIP\"\u3002\u30af\u30e9\u30b9\u30bf\u4e0a\u306e\u5185\u90e8IP\u30a2\u30c9\u30ec\u30b9\u306bService\u3092\u516c\u958b<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">6379<\/span>\r\n    <span class=\"na\">targetPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">6379<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">redis<\/span>\r\n    <span class=\"na\">role<\/span><span class=\"pi\">:<\/span> <span class=\"s\">master<\/span>\r\n    <span class=\"na\">tier<\/span><span class=\"pi\">:<\/span> <span class=\"s\">backend<\/span>\r\n<\/code><\/pre>\n<h4>\u5165\u53e3<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Service\u3092\u30af\u30e9\u30b9\u30bf\u5916\u306b\u516c\u958b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">NodePort\u30bf\u30a4\u30d7\u306eService\u3068\u9055\u3044\u3001\u30d1\u30b9\u30d9\u30fc\u30b9\u3067\u8ee2\u9001\u5148\u306eService\u3092\u5207\u308a\u66ff\u3048\u308b\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u53ef\u80fd<\/ul>\n<\/li>\n<\/ul>\n<p>Service(NodePort) : L4\u5c64\u30ec\u30d9\u30eb\u3067\u306e\u5236\u5fa1<br \/>\nIngress : L7\u5c64\u30ec\u30d9\u30eb\u3067\u306e\u5236\u5fa1<\/p>\n<p>\u5982\u679c\u5728\u4e91\u7aef\u8fdb\u884c\u64cd\u4f5c\uff0c\u53ef\u4ee5\u901a\u8fc7\u5c06\u670d\u52a1\u7684\u7c7b\u578b\u8bbe\u7f6e\u4e3a\u8d1f\u8f7d\u5747\u8861\u5668\u6765\u4f7f\u7528\u5404\u4e2a\u4e91\u7684\u8d1f\u8f7d\u5747\u8861\u5668\uff0c\u56e0\u6b64\u53ef\u80fd\u6ca1\u6709\u592a\u591a\u7684\u4f7f\u7528\u673a\u4f1a\u3002<\/p>\n<p>\u6682\u65f6\u5148\u770b\u4e00\u4e0b\u521a\u624d\u4f7f\u7528\u7684guestbook-ingress.yaml\u6587\u4ef6\u5927\u6982\u662f\u8fd9\u6837\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">extensions\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Ingress<\/span>                    <span class=\"c1\"># Ingress\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">guestbook-ingress<\/span>        <span class=\"c1\"># Ingress\u30ea\u30bd\u30fc\u30b9\u306e\u540d\u524d<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">rules<\/span><span class=\"pi\">:<\/span>                         <span class=\"c1\"># \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30eb\u30fc\u30eb\u306e\u914d\u5217<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">http<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/<\/span>\r\n        <span class=\"na\">backend<\/span><span class=\"pi\">:<\/span>                 <span class=\"c1\"># \"frontend\"Service\u306e80\u756a\u30dd\u30fc\u30c8\u306b\u30a2\u30af\u30bb\u30b9<\/span>\r\n          <span class=\"na\">serviceName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">frontend<\/span>\r\n          <span class=\"na\">servicePort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n<\/code><\/pre>\n<h3>\u6211\u5011\u4f86\u770b\u770b\u88e1\u9762\u5427\u3002<\/h3>\n<p>\u8ba9\u6211\u4eec\u5148\u4e86\u89e3\u7ed3\u6784\uff0c\u7136\u540e\u518d\u67e5\u770b\u5176\u5185\u90e8\u662f\u5982\u4f55\u7684\u3002<br \/>\n\u901a\u8fc7\u4f7f\u7528kubectl get [\u8d44\u6e90\u7c7b\u578b]\u53ef\u4ee5\u83b7\u53d6\u5217\u8868\uff0c\u4f7f\u7528kubectl describe [\u8d44\u6e90\u7c7b\u578b] [\u8d44\u6e90\u540d\u79f0]\u53ef\u4ee5\u67e5\u770b\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<h4>\u90e8\u7f72<\/h4>\n<p>\u90e8\u7f72\u6982\u89c8\uff08&#8221;-o wide&#8221; \u662f\u7528\u4e8e\u67e5\u770b\u8be6\u7ec6\u4fe1\u606f\u7684\u9009\u9879\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get deploy <span class=\"nt\">-o<\/span> wide\r\n<span class=\"go\">NAME           (\u7565)   SELECTOR\r\nfrontend       ...    app=guestbook,tier=frontend\r\nredis-master   ...    app=redis,role=master,tier=backend\r\nredis-slave    ...    app=redis,role=slave,tier=backend\r\n<\/span><\/code><\/pre>\n<p>\u5728SELECTOR\u7684\u9009\u9879\u4e2d\uff0c\u5217\u51fa\u7684\u662f\u7528\u4e8e\u641c\u7d22ReplicaSet\u7684\u9009\u62e9\u5668\u3002\u6b63\u5982\u4e4b\u524d\u6240\u8ff0\uff0cDeployment\u548cReplicaSet\u662f\u677e\u6563\u8026\u5408\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\u5b83\u4eec\u4e4b\u95f4\u7684\u5173\u8054\u662f\u8fd9\u6837\u7684\u3002<\/p>\n<p>\u5982\u679c\u8981\u5728\u624b\u4e2d\u8fdb\u884c\u641c\u7d22\uff0c\u53ef\u4ee5\u6309\u4ee5\u4e0b\u65b9\u5f0f\u8fdb\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get rs <span class=\"nt\">-l<\/span> <span class=\"nv\">app<\/span><span class=\"o\">=<\/span>guestbook,tier<span class=\"o\">=<\/span>frontend\r\n<\/code><\/pre>\n<p>\u8be6\u7ec6\u90e8\u7f72\uff08\u592a\u957f\u4e86\uff0c\u5efa\u8bae\u5728\u624b\u8fb9\u67e5\u770b\uff01\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl describe deploy frontend\r\n<\/code><\/pre>\n<h4>\u590d\u5236\u96c6<\/h4>\n<p>\u590d\u5236\u96c6\u5217\u8868<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get rs <span class=\"nt\">-o<\/span> wide\r\n<span class=\"go\">NAME                      (\u7565)   SELECTOR\r\nfrontend-5c548f4769       ...    app=guestbook,pod-template-hash=1710490325,tier=frontend\r\nredis-master-55db5f7567   ...    app=redis,pod-template-hash=1186193123,role=master,tier=backend\r\nredis-slave-584c66c5b5    ...    app=redis,pod-template-hash=1407227161,role=slave,tier=backend\r\n<\/span><\/code><\/pre>\n<p>\u540d\u5b57\u662f\u90e8\u7f72\u540d\u79f0 + \u968f\u673a\u5b57\u7b26\u4e32\u3002<br \/>\n\u53e6\u5916\uff0c\u5728SELECTOR\u4e2d\u6709\u4e00\u4e2a\u53eb\u505a&#8221;pod-template-hash&#8221;\u7684\u4e1c\u897f\u3002\u4e3a\u4e86\u786e\u4fdd\u5373\u4f7f\u5b58\u5728\u591a\u4e2a\u6df7\u5408\u7684ReplicaSet\u6765\u7ba1\u7406\u540c\u4e00\u6a21\u677f\u7684Pod\uff08\u5982RollingUpdate\u7b49\uff09\uff0cKubernetes\u4f1a\u81ea\u52a8\u6dfb\u52a0\u4e00\u4e2a\u5177\u6709\u7279\u5b9a\u503c\u7684\u6807\u7b7e\u4f5c\u4e3a\u552f\u4e00\u6807\u8bc6\u3002<\/p>\n<p>\u8907\u88fd\u8a2d\u5b9a\u7684\u8a73\u7d30\u8cc7\u8a0a\uff08\u592a\u9577\u4e86\uff0c\u8acb\u81ea\u5df1\u770b\uff01\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl describe rs frontend-5c548f4769\r\n<\/code><\/pre>\n<h4>\u535a\u5ba2<\/h4>\n<p>Pod\u5217\u8868<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pod <span class=\"nt\">-o<\/span> wide\r\n<span class=\"go\">NAME                            READY   STATUS    RESTARTS   AGE   IP          NODE\r\nfrontend-5c548f4769-xhpxz       1\/1     Running   0          1d    10.1.1.65   docker-for-desktop\r\nredis-master-55db5f7567-2n4qp   1\/1     Running   0          1d    10.1.1.67   docker-for-desktop\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running   0          1d    10.1.1.66   docker-for-desktop\r\n<\/span><\/code><\/pre>\n<p>\u8fd9\u6b21\u7684\u540d\u5b57\u53d8\u6210\u4e86ReplicaSet\u540d+\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u662f\u5427\u3002<\/p>\n<p>\u8bf7\u67e5\u770bPod\u8be6\u60c5\uff08\u5185\u5bb9\u8f83\u957f\uff0c\u8bf7\u67e5\u770b\u624b\u5934\u6587\u6863\uff01\uff09\u53ef\u67e5\u770b\u8bbe\u7f6e\u3001\u542f\u52a8\u65f6\u95f4\u3001\u72b6\u6001\u3001\u4e8b\u4ef6\u7b49\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl describe pod frontend-5c548f4769-xhpxz \r\n<\/code><\/pre>\n<p>\u4f60\u53ef\u4ee5\u5728Pod\u4e0a\u67e5\u770b\u65e5\u5fd7\uff08\u7531\u4e8e\u65e5\u5fd7\u5185\u5bb9\u8f83\u957f\uff0c\u8bf7\u5728\u81ea\u5df1\u624b\u8fb9\u67e5\u770b\uff01\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl logs frontend-5c548f4769-xhpxz \r\n<\/code><\/pre>\n<h4>\u670d\u52a1<\/h4>\n<p>\u670d\u52a1\u6e05\u5355<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get svc <span class=\"nt\">-o<\/span> wide\r\n<span class=\"go\">NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE   SELECTOR\r\n<\/span><span class=\"gp\">frontend       NodePort    10.102.204.76    &lt;none&gt;<\/span>        80:30590\/TCP   1d    <span class=\"nv\">app<\/span><span class=\"o\">=<\/span>guestbook,tier<span class=\"o\">=<\/span>frontend\r\n<span class=\"gp\">kubernetes     ClusterIP   10.96.0.1        &lt;none&gt;<\/span>        443\/TCP        1d    &lt;none&gt;\r\n<span class=\"gp\">redis-master   ClusterIP   10.98.133.213    &lt;none&gt;<\/span>        6379\/TCP       1d    <span class=\"nv\">app<\/span><span class=\"o\">=<\/span>redis,role<span class=\"o\">=<\/span>master,tier<span class=\"o\">=<\/span>backend\r\n<span class=\"gp\">redis-slave    ClusterIP   10.107.141.173   &lt;none&gt;<\/span>        6379\/TCP       1d    <span class=\"nv\">app<\/span><span class=\"o\">=<\/span>redis,role<span class=\"o\">=<\/span>slave,tier<span class=\"o\">=<\/span>backend\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u524d\u7aef\u7684\u7c7b\u578b\u662fNodePort\uff0c\u6240\u4ee5\u5916\u90e8\u6709\u4e00\u4e2a\u7aef\u53e3\u5f00\u653e\u3002<br \/>\n\u521a\u521a\u6211\u4eec\u4f7f\u7528\u4e86Ingress\u8fdb\u884c\u8bbf\u95ee\uff0c\u4f46\u5b9e\u9645\u4e0a\u4e5f\u53ef\u4ee5\u901a\u8fc7localhost:30590\uff08\u7aef\u53e3\u53f7\u4f1a\u968f\u65f6\u53d8\u5316\uff09\u8fdb\u884c\u8bbf\u95ee\u3002<br \/>\n\u4f46\u8bf7\u6ce8\u610f\uff0c\u8fd9\u662f\u4e00\u4e2a\u670d\u52a1\uff0c\u53d7\u5230L4\u63a7\u5236\u3002<\/p>\n<p>\u8be6\u7ec6\u670d\u52a1\uff08\u8bf7\u624b\u5934\u67e5\u9605\uff0c\u5185\u5bb9\u8f83\u957f\uff01\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl describe svc frontend\r\n<\/code><\/pre>\n<h4>\u5165\u53e3<\/h4>\n<p>Ingress\u5217\u8868<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get ing\r\n<span class=\"go\">NAME                HOSTS   ADDRESS     PORTS   AGE\r\nguestbook-ingress   *       localhost   80      1d\r\n<\/span><\/code><\/pre>\n<p>Ingress\u8be6\u7ec6\u4fe1\u606f\uff08\u592a\u957f\u4e86\uff0c\u8bf7\u4f60\u81ea\u5df1\u770b\u4e00\u4e0b\uff01\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl describe ing guestbook-ingress\r\n<\/code><\/pre>\n<h3>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u6269\u5927\u89c4\u6a21<\/h3>\n<p>\u6211\u5c1d\u8bd5\u5c06\u524d\u7aef\u7684Pod\u6570\u91cf\u589e\u52a0\u5230\u4e24\u4e2a\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> vi examples\/guestbook\/frontend-deployment.yaml\r\n<span class=\"go\">10\u884c\u76ee   replicas: 1 &lt;- \u3053\u308c\u30922\u306b\u5909\u66f4\r\n<\/span><\/code><\/pre>\n<p>\u90e8\u7f72<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> examples\/guestbook\/frontend-deployment.yaml\r\n<\/code><\/pre>\n<p>\u6da8\u4e86\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">NAME                            READY   STATUS    RESTARTS   AGE\r\nfrontend-5c548f4769-vltkv       1\/1     Running   0          15s\r\nfrontend-5c548f4769-xhpxz       1\/1     Running   0          1d\r\nredis-master-55db5f7567-2n4qp   1\/1     Running   0          1d\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running   0          1d\r\n<\/span><\/code><\/pre>\n<h3>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u81ea\u52a8\u56de\u590d\u4e00\u4e0b\u3002<\/h3>\n<p>\u8ba9\u6211\u4eec\u6709\u610f\u5220\u9664Pod\u3002<br \/>\n\u8ba9\u6211\u4eec\u5c1d\u8bd5\u5220\u9664\u521a\u521a\u65b0\u589e\u7684\u7b2c\u4e8c\u4e2aPod\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl delete pod frontend-5c548f4769-vltkv\r\n<\/code><\/pre>\n<p>\u8fc7\u4e86\u4e00\u4f1a\u513f\uff0c\u65b0\u7684pod\u88ab\u521b\u5efa\u4e86\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">NAME                            READY   STATUS    RESTARTS   AGE\r\nfrontend-5c548f4769-ns5q2       1\/1     Running   0          8s\r\nfrontend-5c548f4769-xhpxz       1\/1     Running   0          1d\r\nredis-master-55db5f7567-2n4qp   1\/1     Running   0          1d\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running   0          1d\r\n<\/span><\/code><\/pre>\n<h3>\u89c2\u5bdf\u4e00\u4e0bDeployment\u7684\u90e8\u7f72\u7ba1\u7406\u60c5\u51b5<\/h3>\n<p>\u7531\u4e8e\u4e0d\u66f4\u6539Pod\uff0c\u4e0d\u4f1a\u8bb0\u5f55\u5386\u53f2\u8bb0\u5f55\uff08\u65e0\u6cd5\u901a\u8fc7\u89c4\u6a21\u89e3\u51b3\u95ee\u9898\uff09\uff0c\u6240\u4ee5\u8bd5\u7740\u6539\u53d8\u4f7f\u7528\u7684\u5185\u5b58\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> vi examples\/guestbook\/frontend-deployment.yaml\r\n<span class=\"go\">23\u884c\u76ee   memory: 100Mi &lt;- \u3053\u308c\u3092120Mi\u306b\u5909\u66f4\r\n<\/span><\/code><\/pre>\n<p>\u90e8\u7f72<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> examples\/guestbook\/frontend-deployment.yaml\r\n<\/code><\/pre>\n<p>\u9010\u6e10\u8f6c\u53d8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">#<\/span> \u5f90\u3005\u306b\u5207\u308a\u66ff\u308f\u3063\u3066\u3044\u308b\uff01\r\n<span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">NAME                            READY   STATUS              RESTARTS   AGE\r\nfrontend-5c548f4769-ns5q2       1\/1     Running             0          11m\r\nfrontend-5c548f4769-xhpxz       1\/1     Running             0          1d\r\nfrontend-68dd74b969-ztcdw       0\/1     ContainerCreating   0          5s\r\nredis-master-55db5f7567-2n4qp   1\/1     Running             0          1d\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running             0          1d\r\n\r\n<\/span><span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">NAME                            READY   STATUS              RESTARTS   AGE\r\nfrontend-5c548f4769-xhpxz       1\/1     Running             0          1d\r\nfrontend-68dd74b969-6shhj       0\/1     ContainerCreating   0          6s\r\nfrontend-68dd74b969-ztcdw       1\/1     Running             0          21s\r\nredis-master-55db5f7567-2n4qp   1\/1     Running             0          1d\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running             0          1d\r\n\r\n<\/span><span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">NAME                            READY   STATUS    RESTARTS   AGE\r\nfrontend-68dd74b969-6shhj       1\/1     Running   0          26s\r\nfrontend-68dd74b969-ztcdw       1\/1     Running   0          41s\r\nredis-master-55db5f7567-2n4qp   1\/1     Running   0          1d\r\nredis-slave-584c66c5b5-z2fvj    1\/1     Running   0          1d\r\n<\/span><\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u67e5\u770b\u4e00\u4e0b\u901a\u8fc7Deployment\u8fdb\u884c\u7ba1\u7406\u7684\u5386\u53f2\u8bb0\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl rollout <span class=\"nb\">history <\/span>deployments frontend\r\n<span class=\"go\">deployment.extensions\/frontend\r\nREVISION  CHANGE-CAUSE\r\n<\/span><span class=\"gp\">1         &lt;none&gt;<\/span>\r\n<span class=\"gp\">2         &lt;none&gt;<\/span>\r\n<\/code><\/pre>\n<p>REVISION\u7684\u503c\u8d8a\u5927\uff0c\u8868\u793a\u5b83\u662f\u65b0\u7684\u3002<br \/>\nCHANGE-CAUSE\u4f1a\u5728\u6e05\u5355\u6587\u4ef6\u4e2d\u6dfb\u52a0\u540d\u4e3a\u201cAnnotation\u201d\u7684\u4fe1\u606f\uff0c\u4f46\u8fd9\u6b21\u6211\u4eec\u5c06\u65e0\u89c6\u5b83\u3002<\/p>\n<p>\u8ba9\u6211\u770b\u770bREVISION=2\u7684\u8be6\u7ec6\u4fe1\u606f\uff08\u56e0\u4e3a\u5185\u5bb9\u5f88\u957f\uff0c\u8bf7\u8ba9\u6211\u4eb2\u81ea\u67e5\u770b\uff01)<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl rollout <span class=\"nb\">history <\/span>deployments frontend <span class=\"nt\">--revision<\/span><span class=\"o\">=<\/span>2\r\n<\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u56de\u6eda\u5230\u5148\u524d\u7684\u7248\u672c\u3002<br \/>\n\u867d\u7136\u8fd9\u6b21\u6307\u5b9a\u4e86\u7248\u672c\uff0c\u4f46\u5f53\u56de\u9000\u5230\u524d\u4e00\u4e2a\u7248\u672c\u65f6\uff0c&#8221;&#8211;to-revision&#8221;\u53ef\u4ee5\u7701\u7565\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl rollout undo deployments frontend <span class=\"nt\">--to-revision<\/span><span class=\"o\">=<\/span>1\r\n<\/code><\/pre>\n<p>\u5f53\u518d\u6b21\u67e5\u770b\u5386\u53f2\u8bb0\u5f55\u65f6\uff0cREVISION=1\u5df2\u7ecf\u6d88\u5931\u3002<\/p>\n<p>\u5373\u4f7f\u8fdb\u884c\u56de\u6eda\u64cd\u4f5c\uff0c\u4e5f\u4f1a\u6709\u4e00\u4e2a\u65b0\u7684\u7248\u672c\uff0c\u4f46\u662f\u76f8\u540c\u5185\u5bb9\u7684\u7248\u672c\u5c06\u4f1a\u4ece\u5386\u53f2\u8bb0\u5f55\u4e2d\u88ab\u5220\u9664\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl rollout <span class=\"nb\">history <\/span>deployments frontend\r\n<span class=\"go\">deployment.extensions\/frontend\r\nREVISION  CHANGE-CAUSE\r\n<\/span><span class=\"gp\">2         &lt;none&gt;<\/span>\r\n<span class=\"gp\">3         &lt;none&gt;<\/span>\r\n<\/code><\/pre>\n<h3>\u987a\u4fbf\u95ee\u4e00\u4e0b\uff0cMaster\u5728\u505a\u4ec0\u4e48\u5462\uff1f<\/h3>\n<p>\u6700\u7d42\u89e3\u91ca\u4e0b\u6765\uff0cMaster\u4e3b\u8981\u662f\u7531Pod\u96c6\u7fa4\u7ec4\u6210\u7684\u3002<br \/>\n\u5728kube-system\u547d\u540d\u7a7a\u95f4\u4e2d\uff0c\u5f52\u5c5e\u4e8eMaster\u7684Pod\u5b58\u5728\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pods <span class=\"nt\">--namespace<\/span><span class=\"o\">=<\/span>kube-system\r\n<span class=\"go\">NAMESPACE     NAME                                         READY   STATUS    RESTARTS   AGE\r\nkube-system   etcd-docker-for-desktop                      1\/1     Running   0          1m\r\nkube-system   kube-apiserver-docker-for-desktop            1\/1     Running   0          1m\r\nkube-system   kube-controller-manager-docker-for-desktop   1\/1     Running   0          1m\r\nkube-system   kube-dns-86f4d74b45-xb4qh                    3\/3     Running   0          2m\r\nkube-system   kube-proxy-8r45p                             1\/1     Running   0          2m\r\nkube-system   kube-scheduler-docker-for-desktop            1\/1     Running   0          1m\r\n<\/span><\/code><\/pre>\n<h4>etcd<\/h4>\n<ul class=\"post-ul\">\u30af\u30e9\u30b9\u30bf\u5185\u306e\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3057\u3066\u3044\u308b\u4e00\u8cab\u6027\u306e\u3042\u308b\u9ad8\u53ef\u7528\u6027\u306eKVS<\/ul>\n<h4>Kubernetes \u7684 API \u670d\u52a1\u5668<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30af\u30e9\u30b9\u30bf\u306b\u5bfe\u3059\u308b\u5168\u3066\u306e\u64cd\u4f5c\u3092\u53f8\u308bAPI\u30b5\u30fc\u30d0\u30fc<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u8a8d\u8a3c\u3084\u8a8d\u53ef\u306e\u51e6\u7406\u306a\u3069\u3082\u884c\u3046<\/ul>\n<h4>Kubernetes\u8c03\u5ea6\u5668<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Pod\u306eNode\u3078\u306e\u5272\u308a\u5f53\u3066\u3092\u884c\u3046\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u30fc<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Pod\u3092\u914d\u7f6e\u3059\u308bNode\u306e\u9078\u629e\u3082\u884c\u3046<\/ul>\n<h4>Kubernetes\u63a7\u5236\u5668\u7ba1\u7406\u5668<\/h4>\n<ul class=\"post-ul\">\u5404\u7a2eKubernetes\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u8d77\u52d5\u3057\u7ba1\u7406\u3059\u308b\u30de\u30cd\u30fc\u30b8\u30e3\u30fc<\/ul>\n<p>\u5728Node\u4e2d\u4e5f\u5305\u542b\u4e0eMaster\u534f\u540c\u5de5\u4f5c\u7684\u5143\u7d20\u3002<\/p>\n<h4>kubelet \u7ffb\u8bd1\u4e3a\u201ckubelet\u201d\u3002<\/h4>\n<ul class=\"post-ul\">Node\u306e\u30e1\u30a4\u30f3\u51e6\u7406\u3067\u3042\u308bPod\u306e\u8d77\u52d5\u30fb\u7ba1\u7406\u3092\u884c\u3046\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/ul>\n<h4>kube-proxy (Kubernetes\u4ee3\u7406)<\/h4>\n<ul class=\"post-ul\">Service\u304c\u6301\u3064\u4eee\u60f3\u7684\u306aIP\u30a2\u30c9\u30ec\u30b9(ClusterIP)\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b<\/ul>\n<p>\u4ee5\u56fe\u8868\u8868\u793a\u7684\u8bdd\uff0c\u60c5\u51b5\u4f1a\u662f\u8fd9\u6837\u7684\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/180-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.47.50.png\" \/><\/div>\n<h3>\u6574\u7406<\/h3>\n<p>\u8bf7\u5220\u9664\u5ba2\u6237\u7559\u8a00\u672c\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl delete <span class=\"nt\">-f<\/span> examples\/guestbook\/\r\n<\/code><\/pre>\n<p>\u4e0d\u4e45\u4e4b\u540e\u5c06\u88ab\u5220\u9664<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pod\r\n<span class=\"go\">No resources found.\r\n<\/span><\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/186-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.48.14.png\" \/><\/div>\n<h2>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u4f7f\u7528EKS\u521b\u5efa\u4e00\u4e2a\u96c6\u7fa4\u3002<\/h2>\n<h3>EKS \u662f\u4ec0\u4e48\uff1f<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u8907\u6570AZ\u3067master\u3092\u5197\u9577\u69cb\u6210\u3057\u3066\u5b9f\u884c<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">master\u306e\u76e3\u8996\u30fb\u81ea\u52d5\u56de\u5fa9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u81ea\u52d5\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u30fb\u30d1\u30c3\u30c1\u9069\u7528<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4ed6\u306eAWS\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u7d71\u5408<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">DataPlane\uff08EC2\uff09\u306f\u81ea\u524d\u3067\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u3056\u3063\u304f\u308a\u8cbb\u7528\u611f : $144\/\u6708 (2019\/04\u73fe\u5728\u30fb\u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3 : EC2\u8cbb\u7528\u306f\u5225\u9014)<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/190-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.48.27.png\" \/><\/div>\n<h3>\u8ba9\u6211\u4eec\u6765\u521b\u5efa\u4e00\u4e2a\u96c6\u7fa4\u5427\uff01<\/h3>\n<p>\u6211\u8ba4\u4e3a\u5c3d\u7ba1\u5982\u6b64\uff0c\u8fd9\u6b21\u6211\u4eec\u53ea\u9700\u8981\u786e\u8ba4\u6b65\u9aa4\u5373\u53ef\u3002<br \/>\n\u867d\u7136\u77e5\u9053\u54ea\u4e9b\u6b65\u9aa4\u662f\u5fc5\u8981\u7684\u5f88\u597d\uff0c\u4f46\u6709\u66f4\u597d\u7684\u65b9\u6cd5\uff0c\u6240\u4ee5\u5b9e\u9645\u4e0a\u53bb\u505a\u4f1a\u6d6a\u8d39\u65f6\u95f4\u3002<br \/>\n\u5728\u5e7b\u706f\u7247\u4e0a\u4e5f\u5199\u6709\u6b65\u9aa4\uff0c\u5982\u679c\u60f3\u5c1d\u8bd5\u7684\u8bdd\uff0c\u8bf7\u53c2\u8003\u90a3\u91cc\u3002<\/p>\n<h3>\u7528\u66f4\u597d\u7684\u65b9\u6cd5<\/h3>\n<h4>eksctl\u53ef\u4ee5\u7528\u4e2d\u6587\u7ffb\u8bd1\u4e3a\uff1a<\/h4>\n<p>\u6269\u5c55\u662f\u4e9a\u9a6c\u900a\u5f39\u6027\u5bb9\u5668\u670d\u52a1\uff08Amazon Elastic Kubernetes Service\uff0c\u7b80\u79f0EKS\uff09\u7684\u4e00\u4e2a\u5de5\u5177\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u975e\u516c\u5f0f\u30fb\u30c7\u30d5\u30a1\u30af\u30c8\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/eksctl.io\/<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30b3\u30de\u30f3\u30c9\u4e00\u3064\u3067\u30af\u30e9\u30b9\u30bf\u69cb\u7bc9<\/ul>\n<h4>\u5feb\u901f\u5f00\u59cb<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u516c\u5f0f\u30fb\u6700\u8fd1\u51fa\u305f<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/aws.amazon.com\/jp\/quickstart\/architecture\/amazon-eks\/<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/dev.classmethod.jp\/cloud\/aws\/eks-quickstart\/<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Cfn\u3092\u4f7f\u3063\u3066\u30af\u30e9\u30b9\u30bf\u69cb\u7bc9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u3044\u308b\u306e\u3067\u7d50\u69cb\u8c6a\u83ef\u306a\u69cb\u6210<\/ul>\n<h2>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u4f7f\u7528eksctl\u3002<\/h2>\n<h3>eksctl\u662f\u4ec0\u4e48\uff1f<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30de\u30f3\u30c9\u4e00\u3064\u3067EKS\u306eCluster\u304c\u3067\u304d\u3061\u3083\u3046\u30c4\u30fc\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">CloudFormation\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u81ea\u52d5\u751f\u6210\u3057\u3066\u69cb\u7bc9\u3057\u3066\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">node\u306e\u30aa\u30fc\u30c8\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u306a\u3069\u3001\u4fbf\u5229\u306a\u6a5f\u80fd\u3082<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u3068\u306f\u3044\u3048\u307e\u3060\u767a\u5c55\u9014\u4e0a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30ed\u30b4\u3092\u898b\u3066\u307f\u308b\u3068\u5206\u304b\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3001go\u3067\u3067\u304d\u3066\u3044\u307e\u3059<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/201-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.48.50.png\" \/><\/div>\n<h3>\u8ba9\u6211\u4eec\u8bd5\u8bd5\u770b\u5427\uff01<\/h3>\n<p>\u53ea\u9700\u4e00\u4e2a\u547d\u4ee4\uff0c\u5373\u53ef\u521b\u5efa\u96c6\u7fa4\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> eksctl create cluster <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--name<\/span> eksctl-handson <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--region<\/span> ap-northeast-1 <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--nodes<\/span> 3 <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--nodes-min<\/span> 3 <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--nodes-max<\/span> 3 <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--node-type<\/span> t2.medium <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--ssh-public-key<\/span> &lt;\u30ad\u30fc\u30da\u30a2\u540d&gt;\r\n<\/code><\/pre>\n<p>\u7136\u800c\uff0c\u6784\u5efa\u5b8c\u6210\u9700\u8981\u5927\u7ea615\u5206\u949f&#8230;<br \/>\n\u9009\u62e9\u65e7AWS\u8d26\u6237\u7684ap-northeast-1b\u4e5f\u9700\u8981\u6307\u5b9aAZ\u3002<\/p>\n<p>\u8bf7\u53c2\u8003\u5176\u4ed6\u9009\u9879\u4ee5\u83b7\u53d6\u5e2e\u52a9\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> eksctl create cluster <span class=\"nt\">-h<\/span>\r\n<\/code><\/pre>\n<p>\u5f53\u6784\u5efa\u5b8c\u6210\u540e\uff0c\u4f1a\u6709\u4ee5\u4e0b\u7684\u611f\u89c9\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/209-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.49.01.png\" \/><\/div>\n<h3>\u6682\u65f6\u90e8\u7f72\u5427<\/h3>\n<p>\u6839\u636e\u5df2\u7ecf\u514b\u9686\u7684\u5185\u5bb9\u6062\u590d\u539f\u72b6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cd <\/span>examples\r\n<span class=\"gp\">$<\/span> git reset <span class=\"nt\">--hard<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">cd<\/span> ..\/\r\n<\/code><\/pre>\n<p>\u5c06 frontend-service \u7684\u7c7b\u578b\u66f4\u6539\u4e3a LoadBalancer\u3002<br \/>\n\u8fd9\u662f\u4e0e\u4e91\u8d1f\u8f7d\u5747\u8861\u5668\uff08\u5728\u8fd9\u91cc\u662f ELB\uff09\u8fdb\u884c\u5408\u4f5c\u7684\u7c7b\u578b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> vi examples\/guestbook\/frontend-service.yaml\r\n<span class=\"go\">9-13\u884c\u76ee\r\n<\/span><span class=\"gp\">  #<\/span> comment or delete the following line <span class=\"k\">if <\/span>you want to use a LoadBalancer\r\n<span class=\"go\">  type: NodePort                                                           &lt;- \u3053\u3053\u3092\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\r\n<\/span><span class=\"gp\">  #<\/span> <span class=\"k\">if <\/span>your cluster supports it, uncomment the following to automatically create\r\n<span class=\"gp\">  #<\/span> an external load-balanced IP <span class=\"k\">for <\/span>the frontend service.\r\n<span class=\"gp\">  #<\/span> <span class=\"nb\">type<\/span>: LoadBalancer                                                     &lt;- \u3053\u3053\u3092\u30a2\u30f3\u30b3\u30e1\u30f3\u30c8\r\n<\/code><\/pre>\n<p>\u7533\u8bf7\u5427\uff01 ba!)<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> examples\/guestbook\/\r\n<\/code><\/pre>\n<p>\u8fc7\u4e00\u4f1a\u513f\u5c31\u4f1a\u5b8c\u6210\u5efa\u8bbe\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get all\r\n<span class=\"go\">NAME                                READY   STATUS    RESTARTS   AGE\r\npod\/frontend-56f7975f44-2vtbr       1\/1     Running   0          8s\r\npod\/frontend-56f7975f44-j25zn       1\/1     Running   0          8s\r\npod\/frontend-56f7975f44-mss7q       1\/1     Running   0          8s\r\npod\/redis-master-6b464554c8-wrjrp   1\/1     Running   0          8s\r\npod\/redis-slave-b58dc4644-ft2fd     1\/1     Running   0          7s\r\npod\/redis-slave-b58dc4644-p59fk     1\/1     Running   0          7s\r\n\r\nNAME                   TYPE           CLUSTER-IP       EXTERNAL-IP                               PORT(S)        AGE\r\nservice\/frontend       LoadBalancer   10.100.61.11     xxxxxx.ap-northeast-1.elb.amazonaws.com   80:31673\/TCP   8s\r\n<\/span><span class=\"gp\">service\/kubernetes     ClusterIP      10.100.0.1       &lt;none&gt;<\/span>                                    443\/TCP        23m\r\n<span class=\"gp\">service\/redis-master   ClusterIP      10.100.137.217   &lt;none&gt;<\/span>                                    6379\/TCP       7s\r\n<span class=\"gp\">service\/redis-slave    ClusterIP      10.100.217.57    &lt;none&gt;<\/span>                                    6379\/TCP       7s\r\n<span class=\"go\">\r\nNAME                           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/frontend       3         3         3            3           8s\r\ndeployment.apps\/redis-master   1         1         1            1           8s\r\ndeployment.apps\/redis-slave    2         2         2            2           7s\r\n\r\nNAME                                      DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/frontend-56f7975f44       3         3         3       8s\r\nreplicaset.apps\/redis-master-6b464554c8   1         1         1       8s\r\nreplicaset.apps\/redis-slave-b58dc4644     2         2         2       7s\r\n<\/span><\/code><\/pre>\n<p>\u56e0\u4e3aservice\/frontend\u7684EXTERNAL-IP\u4e0a\u9644\u6709ELB\u7684\u57df\u540d\uff0c\u6240\u4ee5\u6211\u4eec\u5c1d\u8bd5\u8bbf\u95ee\u90a3\u91cc\u3002<\/p>\n<h3>\u8ba9\u6211\u4eec\u8bd5\u8bd5\u5b89\u88c5\u4eea\u8868\u677f\u3002 .)<\/h3>\n<p>\u5e94\u7528\u9002\u7528\u4e8e\u4eea\u8868\u677f\u7684Pod\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v1.10.1\/src\/deploy\/recommended\/kubernetes-dashboard.yaml\r\n<\/code><\/pre>\n<p>\u83b7\u53d6\u767b\u5f55\u4eea\u8868\u76d8\u6240\u9700\u7684\u4ee4\u724c<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> aws-iam-authenticator token <span class=\"nt\">-i<\/span> eksctl-handson | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.status.token'<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u4ee3\u7406\u8bbf\u95ee\u4eea\u8868\u76d8<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl proxy <span class=\"nt\">--port<\/span><span class=\"o\">=<\/span>8000 <span class=\"nt\">--address<\/span><span class=\"o\">=<\/span><span class=\"s1\">'0.0.0.0'<\/span> <span class=\"nt\">--disable-filter<\/span><span class=\"o\">=<\/span><span class=\"nb\">true<\/span>\r\n<\/code><\/pre>\n<p>\u5f53\u8bbf\u95ee http:\/\/localhost:8000\/api\/v1\/namespaces\/kube-system\/services\/https:kubernetes-dashboard:\/proxy\/ \u65f6\uff0c\u5c06\u8fdb\u5165\u4eea\u8868\u76d8\u7684\u767b\u5f55\u9875\u9762\u3002\u8bf7\u952e\u5165\u4ee4\u724c\u4ee5\u767b\u5f55\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/228-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.49.33.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/229-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.49.42.png\" \/><\/div>\n<h3>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u6536\u96c6\u65e5\u5fd7<\/h3>\n<p>\u6211\u4f1a\u5c06Kubernetes\u7684\u65e5\u5fd7\u653e\u5165CloudWatchLogs\u4e2d\u5c1d\u8bd5\u3002<\/p>\n<h4>\u4e91\u76d1\u63a7\u5bb9\u5668\u6d1e\u5bdf<\/h4>\n<p>\u7136\u800c\u5728\u5b9e\u65bd Hands-On \u540e\u5ba3\u5e03\u4e86 &#8220;CloudWatch Container Insights&#8221;\u3002<br \/>\n\u5b83\u662f\u4e00\u9879\u80fd\u591f\u63d0\u4f9b\u65e5\u5fd7\u548c\u5ea6\u91cf\u6570\u636e\u7684\u6258\u7ba1\u670d\u52a1\u3002<br \/>\n\u867d\u7136\u76ee\u524d\u4ecd\u5904\u4e8e\u516c\u5171\u9884\u89c8\u9636\u6bb5\uff0c\u4f46\u5728\u4f7f\u7528 AWS \u65f6\uff0c\u5b83\u5c06\u6210\u4e3a\u6807\u51c6\u914d\u7f6e\u3002<\/p>\n<p>\u66ab\u6642\u5728\u9019\u88e1\uff0c\u5148\u7c21\u8ff0\u4e00\u4e0bDaemonSet\u7684\u6982\u5ff5\uff0c\u7136\u5f8c\u518d\u5beb\u4e0b\u50b3\u7d71\u7684\u6b65\u9a5f\u3002<\/p>\n<h4>Docker\u5bb9\u5668\u7684\u65e5\u5fd7<\/h4>\n<p>\u5728Docker\u5bb9\u5668\u4e2d\uff0c\u6807\u51c6\u8f93\u51fa\u88ab\u89c6\u4e3a\u65e5\u5fd7\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u65e5\u5fd7\u4ee5JSON\u683c\u5f0f\u4fdd\u5b58\u4e3a\u6587\u4ef6\u3002<br \/>\n\u672c\u6b21\u6211\u4eec\u5c06\u5728\u6bcf\u4e2a\u8282\u70b9\u4e0a\u653e\u7f6e\u4e00\u4e2afluentd\u7684Pod\uff0c\u4ee5\u6536\u96c6\u8282\u70b9\u5185\u7684Pod\u751f\u6210\u7684\u65e5\u5fd7\u6587\u4ef6\u5e76\u5c06\u5176\u53d1\u9001\u5230CloudWatch\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/237-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.49.53.png\" \/><\/div>\n<h4>DaemonSet : \u5b88\u62a4\u8fdb\u7a0b\u96c6<\/h4>\n<p>\u73b0\u5728\uff0c\u5728\u914d\u7f6ePod\u65f6\uff0c\u65e0\u6cd5\u9009\u62e9Node\u3002Kubernetes\u4f1a\u4e3a\u6211\u4eec\u505a\u597d\u3002\u50cf\u8fd9\u6b21\u4e00\u6837\uff0c\u5f53\u60f3\u8981\u5728\u6bcf\u4e2aNode\u4e0a\u542f\u52a8\u4e00\u4e2aPod\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528DaemonSet\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/240-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.50.09.png\" \/><\/div>\n<p>\u90a3\u4e48\uff0c\u8ba9\u6211\u4eec\u8bd5\u4e00\u8bd5\u5427\u3002<\/p>\n<h4>\u90e8\u7f72<\/h4>\n<p>\u83b7\u53d6\u7ed1\u5b9a\u5230\u8282\u70b9 EC2 \u7684 IAM \u89d2\u8272\u7684\u540d\u79f0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nv\">INSTANCE_PROFILE_NAME<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws iam list-instance-profiles | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.InstanceProfiles[].InstanceProfileName'<\/span> | <span class=\"nb\">grep <\/span>nodegroup<span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nv\">ROLE_NAME<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws iam get-instance-profile <span class=\"nt\">--instance-profile-name<\/span> <span class=\"nv\">$INSTANCE_PROFILE_NAME<\/span> | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.InstanceProfile.Roles[] | .RoleName'<\/span><span class=\"si\">)<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u8981\u4e3aIAM\u89d2\u8272\u6dfb\u52a0\u7528\u4e8e\u65e5\u5fd7\u6536\u96c6\u7684\u5185\u5d4c\u7b56\u7565\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"sh\">\"<\/span><span class=\"no\">EoF<\/span><span class=\"sh\">\" &gt; .\/k8s-logs-policy.json\r\n<\/span><span class=\"go\">{\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Action\": [\r\n                \"logs:DescribeLogGroups\",\r\n                \"logs:DescribeLogStreams\",\r\n                \"logs:CreateLogGroup\",\r\n                \"logs:CreateLogStream\",\r\n                \"logs:PutLogEvents\"\r\n            ],\r\n            \"Resource\": \"*\",\r\n            \"Effect\": \"Allow\"\r\n        }\r\n    ]\r\n}\r\nEoF\r\n<\/span><span class=\"gp\">$<\/span> aws iam put-role-policy <span class=\"nt\">--role-name<\/span> <span class=\"nv\">$ROLE_NAME<\/span> <span class=\"nt\">--policy-name<\/span> Logs-Policy-For-Worker <span class=\"nt\">--policy-document<\/span> file:\/\/k8s-logs-policy.json\r\n<\/code><\/pre>\n<p>\u83b7\u53d6Fluentd\u7684\u6e05\u5355\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> wget https:\/\/eksworkshop.com\/intermediate\/230_logging\/deploy.files\/fluentd.yml\r\n<\/code><\/pre>\n<p>\u66f4\u6539\u96c6\u7fa4\u540d\u79f0<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> vi fluentd.yml\r\n<span class=\"go\">197\u884c\u76ee\r\nvalue: us-east-1 &lt;- ap-northeast-1 \u306b\u5909\u66f4\r\n\r\n199\u884c\u76ee\r\nvalue: eksworkshop-eksctl &lt;- eksctl-handson \u306b\u5909\u66f4\r\n<\/span><\/code><\/pre>\n<p>\u90e8\u7f72Fluentd<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> fluentd.yml\r\n<\/code><\/pre>\n<p>\u8fc7\u4e00\u4f1a\u513f\uff0c\u65e5\u5fd7\u5c31\u4f1a\u4e0a\u4f20\u5230CloudWatch\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/254-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8_2019-05-23_6_50_23.png\" \/><\/div>\n<h4>\u770b\u4e00\u4e0b\u6e05\u5355\u6587\u4ef6<\/h4>\n<p>\u770b\u4e00\u4e0bfluentd.yaml\u6587\u4ef6\uff0c\u53ef\u4ee5\u770b\u51fa\u5df2\u7ecf\u914d\u7f6e\u4e86DaemonSet\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"s\">(\u7565)<\/span>\r\n<span class=\"nn\">---<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">extensions\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">DaemonSet<\/span>                      <span class=\"c1\"># DaemonSet\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">fluentd-cloudwatch<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kube-system<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">k8s-app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">fluentd-cloudwatch<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>                          <span class=\"c1\"># ---\u3053\u3053\u304b\u3089Pod\u306e\u5b9a\u7fa9--------------------------------------------<\/span>\r\n    <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">k8s-app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">fluentd-cloudwatch<\/span>\r\n    <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">serviceAccountName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">fluentd<\/span>\r\n      <span class=\"na\">terminationGracePeriodSeconds<\/span><span class=\"pi\">:<\/span> <span class=\"m\">30<\/span>\r\n      <span class=\"c1\"># Because the image's entrypoint requires to write on \/fluentd\/etc but we mount configmap there which is read-only,<\/span>\r\n      <span class=\"c1\"># this initContainers workaround or other is needed.<\/span>\r\n      <span class=\"c1\"># See https:\/\/github.com\/fluent\/fluentd-kubernetes-daemonset\/issues\/90<\/span>\r\n      <span class=\"na\">initContainers<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">copy-fluentd-config<\/span>\r\n        <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">busybox<\/span>\r\n        <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s1\">'<\/span><span class=\"s\">sh'<\/span><span class=\"pi\">,<\/span> <span class=\"s1\">'<\/span><span class=\"s\">-c'<\/span><span class=\"pi\">,<\/span> <span class=\"s1\">'<\/span><span class=\"s\">cp<\/span> <span class=\"s\">\/config-volume\/..data\/*<\/span> <span class=\"s\">\/fluentd\/etc'<\/span><span class=\"pi\">]<\/span>\r\n        <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">config-volume<\/span>\r\n          <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/config-volume<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">fluentdconf<\/span>\r\n          <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/fluentd\/etc<\/span>\r\n<span class=\"s\">\uff08\u7565\uff09<\/span>\r\n<\/code><\/pre>\n<h3>\u8ba9\u6211\u4eec\u8bd5\u8bd5\u4f7f\u7528Helm\u3002<\/h3>\n<h4>Helm\u662f\u4ec0\u4e48\uff1f<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u7528\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u7ba1\u7406\u30c4\u30fc\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d1\u30c3\u30b1\u30fc\u30b8\u306f&#8221;Chart&#8221;\u3068\u547c\u3070\u308c\u3001\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u542b\u307e\u308c\u308b<br \/>\n&#8220;Tiller&#8221;\u3068\u547c\u3070\u308c\u308b\u30b5\u30fc\u30d0\u30fc\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(\u3053\u308c\u3082Pod)\u3092\u4ecb\u3057\u3066\u30af\u30e9\u30b9\u30bf\u5185\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p>\u3061\u306a\u307f\u306b&#8221;helm&#8221;\u306f\u515c\u3067\u306f\u306a\u304f\u8239\u306e\u8235\u3001&#8221;chart&#8221;\u306f\u6d77\u56f3\u3001&#8221;tiller&#8221;\u306f\u8235\u67c4\u306e\u610f\u5473<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/261-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.50.41.png\" \/><\/div>\n<h4>\u57fa\u4e8e\u89d2\u8272\u7684\u8bbf\u95ee\u63a7\u5236\uff08RBAC\uff09<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u306e\u6a29\u9650\u5236\u5fa1\u306e\u4ed5\u7d44\u307f<\/ul>\n<\/li>\n<\/ul>\n<p>Kubernetes\u306e\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u30ed\u30fc\u30eb\u306b\u3088\u3063\u3066\u5236\u5fa1<br \/>\n\u30e6\u30fc\u30b6\u30fc\u3068\u30ed\u30fc\u30eb\u3092Binding\u306b\u3088\u3063\u3066\u7d10\u4ed8\u3051\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u6a5f\u80fd\u3059\u308b<\/p>\n<p>\u30e6\u30fc\u30b6\u30fc\u7a2e\u5225<\/p>\n<p>\u8a8d\u8a3c\u30e6\u30fc\u30b6\u30fc\u30fb\u30b0\u30eb\u30fc\u30d7 : \u30af\u30e9\u30b9\u30bf\u5916\u304b\u3089Kubernetes API\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc<br \/>\nServiceAccount : Pod\u304cKubernetes API\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc<\/p>\n<p>\u30ed\u30fc\u30eb\u7a2e\u5225<\/p>\n<p>Role : \u6307\u5b9a\u306enamespace\u5185\u3067\u306e\u307f\u6709\u52b9<br \/>\nClusterRole : \u30af\u30e9\u30b9\u30bf\u5168\u4f53\u3067\u6709\u52b9<\/p>\n<p>Helm\u306b\u3082RBAC\u3092\u6709\u52b9\u306b\u3067\u304d\u308bChart\u304c\u591a\u304f\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/264-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.50.51.png\" \/><\/div>\n<h4>\u5b89\u88c5Helm<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/helm.sh\/docs\/using_helm\/#installing-helm<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Mac\u306e\u5834\u5408<\/ul>\n<\/li>\n<\/ul>\n<p>brew install kubernetes-helm<\/p>\n<p>\u521b\u5efa\u7528\u4e8eTiller\u670d\u52a1\u8d26\u53f7\u7684\u6e05\u5355\u6587\u4ef6<br \/>\n&#8220;cluster-admin&#8221;\u662f\u9ed8\u8ba4\u5b58\u5728\u7684ClusterRole\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span><span class=\"no\">EoF<\/span><span class=\"sh\"> &gt; tiller_rbac.yaml\r\n<\/span><span class=\"go\">---\r\napiVersion: v1\r\nkind: ServiceAccount\r\nmetadata:\r\n  name: tiller\r\n  namespace: kube-system\r\n---\r\napiVersion: rbac.authorization.k8s.io\/v1beta1\r\nkind: ClusterRoleBinding\r\nmetadata:\r\n  name: tiller\r\nroleRef:\r\n  apiGroup: rbac.authorization.k8s.io\r\n  kind: ClusterRole\r\n  name: cluster-admin\r\nsubjects:\r\n  - kind: ServiceAccount\r\n    name: tiller\r\n    namespace: kube-system\r\nEoF\r\n<\/span><\/code><\/pre>\n<p>\u521b\u5efa\u7528\u4e8eTiller\u7684\u670d\u52a1\u8d26\u53f7<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> tiller_rbac.yaml\r\n<\/code><\/pre>\n<p>\u6307\u5b9aTiller\u7684\u670d\u52a1\u8d26\u53f7\u5b89\u88c5Helm\u5230\u96c6\u7fa4\u4e2d\uff0c<br \/>\n\u8fd9\u6837Tiller\u7684Pod\u5c06\u88ab\u90e8\u7f72\u5230kube-system\u547d\u540d\u7a7a\u95f4\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> helm init <span class=\"nt\">--service-account<\/span> tiller\r\n<\/code><\/pre>\n<h4>\u5b89\u88c5Jenkins<\/h4>\n<p>\u521b\u5efaCustomValue\u6587\u4ef6\u3002<br \/>\n\u53ef\u4ee5\u901a\u8fc7&#8221;helm inspect values stable\/jenkins&#8221;\u547d\u4ee4\u67e5\u770b\u53c2\u6570\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span><span class=\"no\">EoF<\/span><span class=\"sh\"> &gt; jenkins.yaml\r\n<\/span><span class=\"go\">rbac:\r\n  create: true\r\nmaster:\r\n  service_port: 8080\r\npersistence:\r\n  size: 1Gi\r\nEoF\r\n<\/span><\/code><\/pre>\n<p>\u5b89\u88c5Jenkins<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> helm <span class=\"nb\">install<\/span> <span class=\"nt\">-f<\/span> jenkins.yaml <span class=\"nt\">--name<\/span> jenkins stable\/jenkins\r\n<\/code><\/pre>\n<p>\u8fc7\u4e00\u4f1a\u513f\u5c31\u5b8c\u6210\u90e8\u7f72\uff08\u5927\u7ea62-3\u5206\u949f\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get all\r\n<span class=\"go\">NAME                         READY   STATUS    RESTARTS   AGE\r\npod\/jenkins-f65b9477-89s69   1\/1     Running   0          33m\r\n\r\nNAME                    TYPE           CLUSTER-IP      EXTERNAL-IP                               PORT(S)          AGE\r\nservice\/jenkins         LoadBalancer   10.100.22.208   xxxxxx.ap-northeast-1.elb.amazonaws.com   8081:30196\/TCP   33m\r\n<\/span><span class=\"gp\">service\/jenkins-agent   ClusterIP      10.100.58.26    &lt;none&gt;<\/span>                                    50000\/TCP        33m\r\n<span class=\"gp\">service\/kubernetes      ClusterIP      10.100.0.1      &lt;none&gt;<\/span>                                    443\/TCP          2h\r\n<span class=\"go\">\r\nNAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/jenkins   1         1         1            1           33m\r\n\r\nNAME                               DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/jenkins-f65b9477   1         1         1       33m\r\n<\/span><\/code><\/pre>\n<p>\u83b7\u53d6\u5bc6\u7801\uff08\u5b89\u88c5\u65e5\u5fd7\u4e2d\u8bb0\u5f55\u4e86\u83b7\u53d6\u65b9\u6cd5\u7684\u90a3\u4e2a\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">printf<\/span> <span class=\"si\">$(<\/span>kubectl get secret <span class=\"nt\">--namespace<\/span> default jenkins <span class=\"nt\">-o<\/span> <span class=\"nv\">jsonpath<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"{.data.jenkins-admin-password}\"<\/span> | <span class=\"nb\">base64<\/span> <span class=\"nt\">--decode<\/span><span class=\"si\">)<\/span><span class=\"p\">;<\/span><span class=\"nb\">echo<\/span>\r\n<span class=\"go\">XXXXXXXX\r\n<\/span><\/code><\/pre>\n<p>\u83b7\u53d6\u767b\u5f55\u7f51\u5740\uff08\u5b89\u88c5\u65f6\u5728\u65e5\u5fd7\u4e2d\u5199\u6709\u83b7\u53d6\u65b9\u6cd5\u7684\u90a3\u4e2a\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">export <\/span><span class=\"nv\">SERVICE_IP<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>kubectl get svc <span class=\"nt\">--namespace<\/span> default jenkins <span class=\"nt\">--template<\/span> <span class=\"s2\">\"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}\"<\/span><span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">echo <\/span>http:\/\/<span class=\"nv\">$SERVICE_IP<\/span>:8080\/login\r\n<span class=\"go\">http:\/\/xxxxxx.ap-northeast-1.elb.amazonaws.com:8080\/login\r\n<\/span><\/code><\/pre>\n<p>\u767b\u5f55\u540e\uff0c\u8bbf\u95ee\u9875\u9762\u4f1a\u663e\u793a\u5982\u4e0b\u5185\u5bb9\uff1a<br \/>\n\u7528\u6237\u540d\uff1aadmin<br \/>\n\u5bc6\u7801\uff1a\u901a\u8fc7\u547d\u4ee4\u83b7\u53d6\u7684\u90a3\u4e2a<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/285-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.51.24.png\" \/><\/div>\n<h4>\u5378\u8f7dJenkins<\/h4>\n<p>&#8212; purge\u662f\u4e00\u4e2a\u9009\u9879\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u8be5\u9009\u9879\uff0c\u4fee\u8ba2\u8bb0\u5f55\u5c06\u4fdd\u7559\uff0c\u53ef\u4ee5\u8fdb\u884c\u56de\u6eda\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> helm delete <span class=\"nt\">--purge<\/span> jenkins\r\n<\/code><\/pre>\n<h3>\u8ba9\u6211\u4eec\u8bbe\u6cd5\u8fdb\u884c\u76d1\u89c6<\/h3>\n<p>\u6211\u8ba4\u4e3a\u8fd9\u4e5f\u53ef\u80fd\u4f1a\u88ab&#8221;CloudWatch Container Insights&#8221;\u66ff\u4ee3\uff0c\u4f46\u6211\u8fd8\u662f\u5199\u4e0b\u6765\u4e3a\u597d\u3002<\/p>\n<p>\u8fd9\u6b21\u6211\u4eec\u5c06\u4f7f\u7528Prometheus\/Grafana\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Prometheus<\/ul>\n<\/li>\n<\/ul>\n<p>OSS\u306e\u30ea\u30bd\u30fc\u30b9\u76e3\u8996\u30c4\u30fc\u30eb<br \/>\n\u5c0e\u5165\u304c\u30ab\u30f3\u30bf\u30f3\u3001\u3044\u3044\u611f\u3058\u306b\u901a\u77e5\u304f\u308c\u308b\u3001\u9ad8\u6027\u80fd\u306a\u3069\u3067\u4eba\u6c17\u304c\u9ad8\u3044<br \/>\n\u305f\u3060\u3001\u30c7\u30fc\u30bf\u306e\u53ef\u8996\u5316\u304c\u672c\u696d\u3067\u306f\u306a\u3044\u306e\u3067\u529b\u4e0d\u8db3<\/p>\n<p>Grafana<\/p>\n<p>OSS\u306e\u30ed\u30b0\u30fb\u30c7\u30fc\u30bf\u53ef\u8996\u5316\u30c4\u30fc\u30eb<br \/>\nPrometheus\u304c\u53ce\u96c6\u3057\u305f\u30c7\u30fc\u30bf\u3092\u304b\u3063\u3053\u3088\u304f\u8868\u793a\u3067\u304d\u308b<\/p>\n<h4>\u5b89\u88c5Prometheus<\/h4>\n<p>\u4f7f\u7528\u4e2d\u6587\u8fdb\u884c\u91cd\u8ff0\uff1a<\/p>\n<p>\u521b\u5efa\u4e00\u4e2a CustomValue \u6587\u4ef6\u3002<br \/>\n\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u547d\u4ee4 &#8220;helm inspect values stable\/prometheus&#8221; \u6765\u67e5\u770b\u53c2\u6570\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span><span class=\"no\">EoF<\/span><span class=\"sh\"> &gt; prometheus.yaml\r\n<\/span><span class=\"go\">alertmanager:\r\n  persistentVolume:\r\n    size: 1Gi\r\n    storageClass: \"gp2\"\r\nserver:\r\n  persistentVolume:\r\n    size: 1Gi\r\n    storageClass: \"gp2\"\r\n  retention: \"12h\"\r\npushgateway:\r\n  enabled: false\r\nEoF\r\n<\/span><\/code><\/pre>\n<p>\u5b89\u88c5 Prometheus\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl create namespace prometheus\r\n<span class=\"gp\">$<\/span> helm <span class=\"nb\">install<\/span> <span class=\"nt\">-f<\/span> prometheus.yaml <span class=\"nt\">--name<\/span> prometheus <span class=\"nt\">--namespace<\/span> prometheus stable\/prometheus\r\n<\/code><\/pre>\n<p>\u7b49\u5f85\u90e8\u7f72\u5b8c\u6210\u540e\u5c1d\u8bd5\u8bbf\u95ee\uff08\u542f\u52a8\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4\uff09<br \/>\n\u4e0b\u9762\u662f\u5b89\u88c5\u65f6\u51fa\u73b0\u7684\u65e5\u5fd7\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">export <\/span><span class=\"nv\">POD_NAME<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>kubectl get pods <span class=\"nt\">--namespace<\/span> prometheus <span class=\"nt\">-l<\/span> <span class=\"s2\">\"app=prometheus,component=server\"<\/span> <span class=\"nt\">-o<\/span> <span class=\"nv\">jsonpath<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"{.items[0].metadata.name}\"<\/span><span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> kubectl <span class=\"nt\">--namespace<\/span> prometheus port-forward <span class=\"nv\">$POD_NAME<\/span> 9090\r\n<\/code><\/pre>\n<p>\u5f53\u8bbf\u95eehttp:\/\/localhost:9090\/targets\u65f6\uff0c\u53ef\u4ee5\u770b\u5230Prometheus\u7684\u754c\u9762\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/301-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.51.44.png\" \/><\/div>\n<h4>\u5b89\u88ddGrafana<\/h4>\n<p>\u521b\u5efaCustomValue\u6587\u4ef6<br \/>\n\u53ef\u4ee5\u901a\u8fc7&#8221;helm inspect values stable\/grafana&#8221;\u547d\u4ee4\u6765\u67e5\u770b\u53c2\u6570\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span><span class=\"no\">EoF<\/span><span class=\"sh\"> &gt; grafana.yaml\r\n<\/span><span class=\"go\">persistence:\r\n  storageClassName: gp2\r\nadminPassword: password\r\ndatasources:\r\n  datasources.yaml:\r\n    apiVersion: 1\r\n    datasources:\r\n     - name: Prometheus\r\n       type: prometheus\r\n       url: \"http:\/\/prometheus-server.prometheus.svc.cluster.local\"\r\n       access: proxy\r\n       isDefault: true\r\nservice:\r\n  type: LoadBalancer\r\nEoF\r\n<\/span><\/code><\/pre>\n<p>\u5b89\u88c5Grafana<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl create namespace grafana\r\n<span class=\"gp\">$<\/span> helm <span class=\"nb\">install<\/span> <span class=\"nt\">-f<\/span> grafana.yaml <span class=\"nt\">--name<\/span> grafana <span class=\"nt\">--namespace<\/span> grafana stable\/grafana\r\n<\/code><\/pre>\n<p>\u7b49\u5f85\u90e8\u7f72\u5b8c\u6210\u540e\uff0c\u5c1d\u8bd5\u8bbf\u95ee\uff08\u542f\u52a8\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4\uff09<br \/>\n\u4ee5\u4e0b\u662f\u5b89\u88c5\u8fc7\u7a0b\u4e2d\u663e\u793a\u7684\u65e5\u5fd7<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">export <\/span><span class=\"nv\">ELB<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>kubectl get svc <span class=\"nt\">-n<\/span> grafana grafana <span class=\"nt\">-o<\/span> <span class=\"nv\">jsonpath<\/span><span class=\"o\">=<\/span><span class=\"s1\">'{.status.loadBalancer.ingress[0].hostname}'<\/span><span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">echo<\/span> <span class=\"s2\">\"http:\/\/<\/span><span class=\"nv\">$ELB<\/span><span class=\"s2\">\"<\/span>\r\n<span class=\"go\">http:\/\/xxxxxx.ap-northeast-1.elb.amazonaws.com\r\n<\/span><\/code><\/pre>\n<p>\u767b\u5f55\u540e\uff0c\u60a8\u5c06\u8fdb\u5165\u4ee5\u4e0b\u5c4f\u5e55\uff1a<br \/>\n&#8211; \u7528\u6237\u540d\uff1aadmin<br \/>\n&#8211; \u5bc6\u7801\uff1apassword\uff08\u5df2\u5728grafana.yaml\u4e2d\u8bb0\u5f55\uff09<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/310-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.01.png\" \/><\/div>\n<h4>\u5236\u4f5c\u4eea\u8868\u677f<\/h4>\n<p>\u8ba9\u6211\u4eec\u5c1d\u8bd5\u4ece\u5bfc\u5165\u754c\u9762\u4e2d\u5f15\u5165\u516c\u5f00\u7684\u6a21\u677f\u3002<\/p>\n<p>\u6a21\u677f\u7f16\u53f7\u4e3a3131\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/314-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.10.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/315-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.19.png\" \/><\/div>\n<p>\u6709\u4e00\u79cd\u4e1c\u897f\u51fa\u73b0\u5f97\u6709\u4e9b\u50cf\u90a3\u4e2a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/317-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.27.png\" \/><\/div>\n<p>\u5728\u4e2d\u6587\u4e2d\uff0c\u53ef\u4ee5\u8fd9\u6837\u8868\u8fbe\uff1a\u5982\u679c\u662f3146\uff0c\u5c31\u4f1a\u53d8\u6210\u8fd9\u6837\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/319-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.35.png\" \/><\/div>\n<h3>\u6574\u7406\u6574\u7406<\/h3>\n<p>\u8bf7\u6ce8\u610f\uff0c\u5728\u4f7f\u7528eksctl\u5220\u9664\u96c6\u7fa4\u65f6\uff0c\u5982\u679c\u4e0d\u6e05\u7406\u96c6\u7fa4\u5185\u7684\u8d44\u6e90\uff0c\u5c06\u4f1a\u5728CloudFormation\u4e2d\u62a5\u9519\u3002<\/p>\n<p>\u5220\u9664Prometheus\u548cGrafana\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> helm delete <span class=\"nt\">--purge<\/span> prometheus\r\n<span class=\"gp\">$<\/span> helm delete <span class=\"nt\">--purge<\/span> grafana\r\n<\/code><\/pre>\n<p>\u5220\u9664 Fluentd<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl delete <span class=\"nt\">-f<\/span> fluentd.yml\r\n<\/code><\/pre>\n<p>\u5220\u9664\u4eea\u8868\u677f<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl delete <span class=\"nt\">-f<\/span> https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v1.10.1\/src\/deploy\/recommended\/kubernetes-dashboard.yaml\r\n<\/code><\/pre>\n<p>\u8bf7\u5378\u8f7d\u7559\u8a00\u677f\u5e94\u7528\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl delete <span class=\"nt\">-f<\/span> examples\/guestbook\/\r\n<\/code><\/pre>\n<p>\u89e3\u9664IAM Role\u4e0a\u9644\u52a0\u7684\u7528\u4e8e\u65e5\u5fd7\u6536\u96c6\u7684\u7b56\u7565\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nv\">INSTANCE_PROFILE_NAME<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws iam list-instance-profiles | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.InstanceProfiles[].InstanceProfileName'<\/span> | <span class=\"nb\">grep <\/span>nodegroup<span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> <span class=\"nv\">ROLE_NAME<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span>aws iam get-instance-profile <span class=\"nt\">--instance-profile-name<\/span> <span class=\"nv\">$INSTANCE_PROFILE_NAME<\/span> | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.InstanceProfile.Roles[] | .RoleName'<\/span><span class=\"si\">)<\/span>\r\n<span class=\"gp\">$<\/span> aws iam delete-role-policy <span class=\"nt\">--role-name<\/span> <span class=\"nv\">$ROLE_NAME<\/span> <span class=\"nt\">--policy-name<\/span> Logs-Policy-For-Worker\r\n<\/code><\/pre>\n<p>\u5efa\u8bae\u5728AWS\u63a7\u5236\u53f0\u4e0a\u786e\u8ba4\u96c6\u7fa4\u662f\u5426\u771f\u7684\u5df2\u88ab\u5220\u9664\uff0c\u56e0\u4e3a\u6211\u53ea\u80fd\u770b\u5230\u90e8\u5206\u8fc7\u7a0b\uff0c\u65e0\u6cd5\u786e\u8ba4\u5220\u9664\u7684\u7ed3\u679c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> eksctl delete cluster <span class=\"nt\">--name<\/span> eksctl-handson\r\n<\/code><\/pre>\n<h2>\u8ba9\u6211\u4eec\u7528GKE\u521b\u5efa\u4e00\u4e2a\u96c6\u7fa4(\u9644\u52a0)\u3002<\/h2>\n<p>\u65e2\u7136\u5982\u6b64\uff0c\u8fd8\u662f\u770b\u770b\u539f\u4f5c\u5427\uff0c\u53ea\u9700\u8981\u4e00\u70b9\u70b9\u65f6\u95f4\u3002<br \/>\n\u5047\u8bbeCLI\u548cGCP\u9879\u76ee\u7684\u8bbe\u7f6e\u5df2\u7ecf\u5b8c\u6210\u3002<\/p>\n<h3>\u8ba9\u6211\u4eec\u8bd5\u8bd5\u770b<\/h3>\n<p>\u53ea\u9700\u8981\u4e00\u4e2a\u547d\u4ee4\uff0c\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u5305\u62ecNode\u5728\u5185\u7684\u96c6\u7fa4\u3002<br \/>\n\u800c\u4e14\u53ea\u9700\u8981\u5927\u7ea63\u520630\u79d2\uff01\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> gcloud container clusters create gke-handson <span class=\"nt\">--cluster-version<\/span><span class=\"o\">=<\/span>1.12.7-gke.10 <span class=\"nt\">--machine-type<\/span><span class=\"o\">=<\/span>n1-standard-1 <span class=\"nt\">--num-nodes<\/span><span class=\"o\">=<\/span>3\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/339-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.52.49.png\" \/><\/div>\n<p>kubectl\u7684\u914d\u7f6e\u5df2\u7ecf\u6b63\u786e\u66f4\u6539\u4e86\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl config get-contexts\r\n<span class=\"go\">CURRENT   NAME                                   CLUSTER                                AUTHINFO                             NAMESPACE\r\n          docker-for-desktop                     docker-for-desktop-cluster             docker-for-desktop\r\n*         xxxxxx_asia-northeast1-a_gke-handson   xxxxxx_asia-northeast1-a_gke-handson   xxxxxx_asia-northeast1-a_gke-handson\r\n<\/span><\/code><\/pre>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cfluentd\u548cprometheus\u5df2\u7ecf\u5b89\u88c5\u597d\u4e86\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl get pods <span class=\"nt\">--namespace<\/span><span class=\"o\">=<\/span>kube-system\r\n<span class=\"go\">NAME                                                    READY   STATUS    RESTARTS   AGE\r\nevent-exporter-v0.2.3-f9c896d75-52nkr                   2\/2     Running   0          2m5s\r\nfluentd-gcp-scaler-69d79984cb-zm56b                     1\/1     Running   0          113s\r\nfluentd-gcp-v3.2.0-5mncb                                2\/2     Running   0          63s\r\nfluentd-gcp-v3.2.0-9sdg7                                2\/2     Running   0          74s\r\nfluentd-gcp-v3.2.0-t59sr                                2\/2     Running   0          54s\r\nheapster-v1.6.0-beta.1-6fc8df6cb8-54qrk                 3\/3     Running   0          85s\r\nkube-dns-autoscaler-76fcd5f658-22l8j                    1\/1     Running   0          104s\r\nkube-dns-b46cc9485-5kspm                                4\/4     Running   0          92s\r\nkube-dns-b46cc9485-j8fmn                                4\/4     Running   0          2m5s\r\nkube-proxy-gke-gke-handson-default-pool-d757b1ec-9ld7   1\/1     Running   0          108s\r\nkube-proxy-gke-gke-handson-default-pool-d757b1ec-lcl8   1\/1     Running   0          110s\r\nkube-proxy-gke-gke-handson-default-pool-d757b1ec-z2m6   1\/1     Running   0          110s\r\nl7-default-backend-6f8697844f-s8lgv                     1\/1     Running   0          2m6s\r\nmetrics-server-v0.3.1-5b4d6d8d98-tn8cw                  2\/2     Running   0          87s\r\nprometheus-to-sd-4v26j                                  1\/1     Running   0          111s\r\nprometheus-to-sd-k4jj7                                  1\/1     Running   0          110s\r\nprometheus-to-sd-mhs8h                                  1\/1     Running   0          110s\r\n<\/span><\/code><\/pre>\n<p>\u7528\u8fd9\u4e2a\uff0c\u4f60\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u75313\u4e2a\u8282\u70b9\u7ec4\u6210\u7684\u96c6\u7fa4\u3002<\/p>\n<p>\u5f53\u7136\u53ef\u4ee5\u4f7f\u7528\u4ee5\u524d\u4f7f\u7528\u8fc7\u7684\u6e05\u5355\u6587\u4ef6\u8fdb\u884c\u90e8\u7f72\uff0c\u8ba9\u6211\u4eec\u8bd5\u4e00\u8bd5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl apply <span class=\"nt\">-f<\/span> examples\/guestbook\/\r\n<\/code><\/pre>\n<h3>\u6574\u7406<\/h3>\n<p>\u5220\u9664\u64cd\u4f5c\u53ea\u9700\u5927\u7ea63\u520630\u79d2\u5de6\u53f3\u5c31\u53ef\u4ee5\u5b8c\u6210\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> gcloud container clusters delete gke-handson\r\n<\/code><\/pre>\n<p>kubectl\u7684\u914d\u7f6e\u4e5f\u5df2\u7ecf\u6b63\u786e\u5220\u9664\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kubectl config get-contexts\r\n<span class=\"go\">CURRENT   NAME                                   CLUSTER                                AUTHINFO                             NAMESPACE\r\n          docker-for-desktop                     docker-for-desktop-cluster             docker-for-desktop\r\n<\/span><\/code><\/pre>\n<p>\u4e3a\u4e86\u786e\u4fdd\uff0c\u53ef\u4ee5\u5728\u63a7\u5236\u53f0\u4e0a\u68c0\u67e5\u662f\u5426\u8fd8\u6709\u53ef\u7528\u8d44\u6e90\u3002<\/p>\n<h3>EKS\u548cGKE<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u67d4\u8edf\u6027<\/ul>\n<\/li>\n<\/ul>\n<p>EKS\u306f\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u308b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u5e45\u304c\u5927\u304d\u3044<br \/>\n\u3067\u3082\u3084\u3063\u3071\u308a\u9762\u5012\u306a\u306e\u3067eksctl\u3068\u304b\u304c\u8a95\u751f\u3057\u3066\u3044\u305f\u308a\u3059\u308b\u2026<br \/>\nGKE\u306f\u3044\u3044\u611f\u3058\u306b\u3057\u3066\u304f\u308c\u308b<\/p>\n<p>\u7acb\u3061\u4e0a\u304c\u308a\u306e\u901f\u3055<\/p>\n<p>EKS\u306f(eksctl\u5229\u7528\u3067)15\u5206\u3050\u3089\u3044<br \/>\nGKE\u306f3\u5206\u534a\u3050\u3089\u3044<\/p>\n<p>\u8cbb\u7528<\/p>\n<p>EKS\u306fmaster\u306b\u8cbb\u7528\u304c\u304b\u304b\u308b(\u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3\u3067$144\/\u6708\u3050\u3089\u3044)<br \/>\nGKE\u306fmaster\u306b\u8cbb\u7528\u304c\u304b\u304b\u3089\u306a\u3044\uff01<\/p>\n<p>\u3069\u3063\u3061\u3092\u9078\u307c\u3046\uff1f<\/p>\n<p>\u7d14\u7c8b\u306bKubernetes\u3092\u4f7f\u3044\u305f\u3044\u3060\u3051\u306a\u3089\u5727\u5012\u7684\u306bGKE<br \/>\nAWS\u306e\u3082\u308d\u3082\u308d\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u5408\u308f\u305b\u3066\u4f7f\u3044\u305f\u3044\u306a\u3089EKS<\/p>\n<h2>\u5176\u4ed6\u5404\u7a2e\u5176\u4ed6\u4e8b\u9805<\/h2>\n<h3>\u6ca1\u6709\u4ecb\u7ecd\u8fc7\u7684\u8d44\u6e90<\/h3>\n<p>\u5728\u5b9e\u8df5\u4e2d\uff0c\u6211\u4f1a\u4ecb\u7ecd\u4e00\u4e9b\u5173\u952e\u8d44\u6e90\uff0c\u8fd9\u4e9b\u8d44\u6e90\u5728\u5b9e\u8df5\u8fc7\u7a0b\u4e2d\u5e76\u6ca1\u6709\u63d0\u53ca\u3002<\/p>\n<h4>\u5de5\u4f5c<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5358\u767a\u306e\u51e6\u7406\u3092\u7ba1\u7406<\/ul>\n<\/li>\n<\/ul>\n<p>\u6307\u5b9a\u3057\u305f\u6570\u3060\u3051Pod\u3092\u4f5c\u6210\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">batch\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Job<\/span>                    <span class=\"c1\"># Job\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example_job<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">parallelism<\/span><span class=\"pi\">:<\/span> <span class=\"m\">3<\/span>             <span class=\"c1\"># \u540c\u6642\u306b\u5b9f\u884c\u3059\u308bPod\u306e\u6570<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>                  <span class=\"c1\"># ---\u3053\u3053\u304b\u3089Pod\u306e\u5b9a\u7fa9--------------------------------------------<\/span>\r\n    <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example<\/span>\r\n    <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n<\/code><\/pre>\n<h4>\u5b9a\u671f\u4efb\u52a1<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5b9a\u671f\u5b9f\u884c\u3059\u308b\u51e6\u7406\u3092\u7ba1\u7406<\/ul>\n<\/li>\n<\/ul>\n<p>\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u6cbf\u3063\u3066Pod\u3092\u4f5c\u6210\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c<br \/>\n\u30b3\u30f3\u30c6\u30ca\u5185\u3067Cron\u3092\u8a2d\u5b9a\u3057\u306a\u304f\u3066\u3088\u304f\u306a\u308b\u306e\u3067\u4fbf\u5229\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">batch\/v1beta1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">CronJob<\/span>                <span class=\"c1\"># CronJob\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example_job<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">schedule<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">*\/1<\/span> <span class=\"s\">*<\/span> <span class=\"s\">*<\/span> <span class=\"s\">*<\/span> <span class=\"s\">*\"<\/span>    <span class=\"c1\"># \u8d77\u52d5\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092cron\u3068\u540c\u3058\u578b\u5f0f\u3067\u5b9a\u7fa9<\/span>\r\n  <span class=\"s\">jobTemplate:\u2028    spec<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>              <span class=\"c1\"># ---\u3053\u3053\u304b\u3089Pod\u306e\u5b9a\u7fa9--------------------------------------------<\/span>\r\n        <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">example<\/span>\r\n        <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n<\/code><\/pre>\n<h4>\u914d\u7f6e\u6620\u5c04<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u60c5\u5831\u3092\u5b9a\u7fa9\u3057\u3066Pod\u306b\u63d0\u4f9b<\/ul>\n<\/li>\n<\/ul>\n<p>\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b<br \/>\nVolume\u3068\u3057\u3066\u63d0\u4f9b<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ConfigMap<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cm-example<\/span>\r\n<span class=\"na\">data<\/span><span class=\"pi\">:<\/span>                           <span class=\"c1\"># key-value\u578b\u5f0f\u3067\u8a2d\u5b9a\u60c5\u5831\u3092\u66f8\u3044\u3066\u3044\u304f<\/span>\r\n  <span class=\"na\">EXAMPLE<\/span><span class=\"pi\">:<\/span> <span class=\"s\">this_is_example<\/span>\r\n  <span class=\"s\">example.txt<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\r\n    <span class=\"s\">this<\/span>\r\n    <span class=\"s\">is<\/span>\r\n    <span class=\"s\">example<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\"># Pod\u306e\u5b9a\u7fa9\u4e2d<\/span>\r\n<span class=\"s\">(\u7565)<\/span>  \r\n  <span class=\"s\">env<\/span><span class=\"pi\">:<\/span>                         <span class=\"c1\"># \u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">EXAMPLE<\/span>\r\n    <span class=\"na\">valueFrom<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">configMapKeyRef<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cm-example<\/span>\r\n        <span class=\"na\">key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">EXAMPLE<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n  <span class=\"s\">containers<\/span><span class=\"pi\">:<\/span>                  <span class=\"c1\"># Volume\u3068\u3057\u3066\u63d0\u4f9b\u3002\u3053\u308c\u3067 \/config\/example.txt \u304c\u6271\u3048\u308b\u3088\u3046\u306b\u306a\u308b<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">alpine<\/span>\r\n    <span class=\"s\">(\u7565)<\/span>\r\n    <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>              <span class=\"c1\">## \u30b3\u30f3\u30c6\u30ca\u5185\u3067\u306eVolume\u306e\u30de\u30a6\u30f3\u30c8\u8a2d\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cm-volume<\/span>\r\n      <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/config<\/span>\r\n  <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>                     <span class=\"c1\">## Volume\u306e\u5b9a\u7fa9      <\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cm-volume<\/span>\r\n    <span class=\"na\">configMap<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cm-example<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n<\/code><\/pre>\n<h4>\u79d8\u5bc6<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u5bc6\u60c5\u5831\u3092\u5b9a\u7fa9\u3057\u3066Pod\u306b\u63d0\u4f9b<\/ul>\n<\/li>\n<\/ul>\n<p>\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b<br \/>\nVolume\u3068\u3057\u3066\u63d0\u4f9b<\/p>\n<p>ConfigMap\u3068\u306e\u9055\u3044<\/p>\n<p>\u6587\u5b57\u5217\u3092Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u305f\u72b6\u614b\u3067\u6271\u3046(\u30d0\u30a4\u30ca\u30ea\u30c7\u30fc\u30bf\u3092\u6271\u3048\u308b\u3088\u3046\u306b)<br \/>\n\u3082\u3061\u308d\u3093\u6697\u53f7\u5316\u76ee\u7684\u3058\u3083\u306a\u3044\u306e\u3067\u3001\u305d\u306e\u307e\u307eGithub\u306b\u4e0a\u3052\u305f\u308a\u3057\u305f\u3089\u30c0\u30e1<br \/>\n(\u8a2d\u5b9a\u306b\u3088\u3063\u3066)etcd\u4e0a\u306b\u6697\u53f7\u5316\u3057\u305f\u72b6\u614b\u3067\u4fdd\u5b58\u3055\u308c\u308b<br \/>\nNode\u3067\u306fPod\u306etmpfs(\u8981\u3059\u308b\u306b\u30e1\u30e2\u30ea)\u4e0a\u306b\u4fdd\u5b58\u3055\u308c\u308b<br \/>\nNode\u306f\u5272\u308a\u5f53\u3066\u3089\u308c\u305fPod\u304c\u53c2\u7167\u3059\u308bSecret\u4ee5\u5916\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044<br \/>\n\u3044\u304f\u3064\u304bType\u304c\u3042\u308b<br \/>\nOpaque: ConfigMap\u3068\u540c\u3058\u69cb\u9020\u5316\u3055\u308c\u3066\u306a\u3044Key\/Value\u5f62\u5f0f<br \/>\nkubernetes.io\/tls: TLS\u306e\u79d8\u5bc6\u9375\u3068\u516c\u958b\u9375\u3092\u683c\u7d0d<br \/>\nkubernetes.io\/service-account-token: Kubernetes\u306e\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Secret<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">secret-example<\/span>\r\n<span class=\"na\">stringData<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">password<\/span><span class=\"pi\">:<\/span> <span class=\"s\">xxxxxxxxxxxx<\/span>           <span class=\"c1\"># Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217<\/span>\r\n  <span class=\"s\">credential.txt<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\r\n    <span class=\"s\">xxxxxxxxxxxxx<\/span>\r\n    <span class=\"s\">xxxxxxxxxxxxx<\/span>\r\n    <span class=\"s\">xxxxxxxxxxxxx<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\"># Pod\u306e\u5b9a\u7fa9\u4e2d<\/span>\r\n<span class=\"s\">(\u7565)<\/span>  \r\n  <span class=\"s\">env<\/span><span class=\"pi\">:<\/span>                         <span class=\"c1\"># \u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PASSWORD<\/span>\r\n    <span class=\"na\">valueFrom<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">secretKeyRef<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">secret-example<\/span>\r\n        <span class=\"na\">key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">password<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n  <span class=\"s\">containers<\/span><span class=\"pi\">:<\/span>                  <span class=\"c1\"># Volume\u3068\u3057\u3066\u63d0\u4f9b\u3002\u3053\u308c\u3067 \/secrets\/credential.txt \u304c\u6271\u3048\u308b\u3088\u3046\u306b\u306a\u308b<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">alpine<\/span>\r\n    <span class=\"s\">(\u7565)<\/span>\r\n    <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>              <span class=\"c1\">## \u30b3\u30f3\u30c6\u30ca\u5185\u3067\u306eVolume\u306e\u30de\u30a6\u30f3\u30c8\u8a2d\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">secret-volume<\/span>\r\n      <span class=\"na\">mountPath<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/secrets<\/span>\r\n  <span class=\"na\">volumes<\/span><span class=\"pi\">:<\/span>                     <span class=\"c1\">## Volume\u306e\u5b9a\u7fa9      <\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">secret-volume<\/span>\r\n    <span class=\"na\">secret<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">secretName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">secret-data<\/span>\r\n<span class=\"s\">(\u7565)<\/span>\r\n<\/code><\/pre>\n<h4>\u5b58\u50a8\u76f8\u5173\u7684\u5404\u79cd\u4e8b\u52a1<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">PersistentVolume<\/ul>\n<\/li>\n<\/ul>\n<p>\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u5b9f\u4f53<br \/>\nAWS\u306a\u3089Node\u306eEC2\u304c\u6301\u3064EBS<\/p>\n<p>PersistentVolumeClaim<\/p>\n<p>\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ad6\u7406\u7684\u306b\u62bd\u8c61\u5316\u3057\u305f\u30ea\u30bd\u30fc\u30b9<br \/>\nPersistentVolume\u306b\u5bfe\u3057\u3066\u5fc5\u8981\u306a\u5bb9\u91cf\u3092\u52d5\u7684\u306b\u78ba\u4fdd<\/p>\n<p>StorageClass<\/p>\n<p>PersistentVolume\u304c\u78ba\u4fdd\u3059\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u7a2e\u985e\u3092\u5b9a\u7fa9<br \/>\nAWS\u306a\u3089 io1\/\u00a0gp2\/sc1\/st1<\/p>\n<p>StatefulSet<\/p>\n<p>\u7d99\u7d9a\u7684\u306b\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u30b9\u30c6\u30fc\u30c8\u30d5\u30eb\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7ba1\u7406\u306b\u5411\u3044\u305f\u30ea\u30bd\u30fc\u30b9<br \/>\n\u7ba1\u7406\u4e0b\u306ePod\u306b\u306f\u9023\u756a\u306e\u8b58\u5225\u5b50\u304c\u4ed8\u4e0e\u3055\u308c\u3001\u518d\u4f5c\u6210\u3055\u308c\u3066\u3082\u540c\u3058\u8b58\u5225\u5b50\u3067\u3042\u308c\u3070\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u53c2\u7167\u3059\u308b<\/p>\n<p>\u5982\u679c\u5728\u4e91\u4e0a\u4f7f\u7528Kubernetes\uff0c\u57fa\u672c\u4e0a\u4f1a\u4f7f\u7528\u6258\u7ba1\u7684\u6570\u636e\u5e93\u670d\u52a1\u7b49\uff0c\u6240\u4ee5\u53ef\u80fd\u81ea\u5df1\u4f7f\u7528\u7684\u673a\u4f1a\u4e0d\u591a\u3002<br \/>\n\u53ef\u80fd\u4f1a\u5728\u5916\u90e8\u63d0\u4f9b\u7684\u6e05\u5355\u6587\u4ef6\u4e2d\u8fdb\u884c\u8bb0\u5f55\uff0c\u6240\u4ee5\u5e0c\u671b\u4e86\u89e3\u5e76\u77e5\u9053\u5b83\u7684\u5b58\u5728\u3002<\/p>\n<h3>\u8c03\u67e5\u6e05\u5355\u6587\u4ef6\u7684\u683c\u5f0f<\/h3>\n<p>\u5f53\u6d4f\u89c8Kubernetes\u76f8\u5173\u4fe1\u606f\u7684\u65f6\u5019\uff0c\u65e0\u8bba\u662f\u5728\u4e66\u672c\u8fd8\u662f\u5728\u7f51\u9875\u4e0a\uff0c\u90fd\u53ef\u4ee5\u627e\u5230\u5927\u91cf\u7684Manifest\u6587\u4ef6\u793a\u4f8b\u3002\u7136\u800c\uff0c\u7531\u4e8e\u53c2\u6570\u8fc7\u591a\uff0c\u80fd\u591f\u5b8c\u5168\u89e3\u91ca\u7684\u53ea\u6709\u5b98\u65b9\u624b\u518c\u4e4b\u7c7b\u7684\u8d44\u6e90\uff0c\u6240\u4ee5\u9700\u8981\u5b66\u4f1a\u5982\u4f55\u67e5\u9605\u8fd9\u4e9b\u8d44\u6e90\u3002<br \/>\nhttps:\/\/qiita.com\/Kta-M\/items\/039cee72e82590a0c4f4<\/p>\n<h3>\u4f7f\u7528\u65f6\u7684\u57fa\u672c\u7ed3\u6784\u6982\u5ff5<\/h3>\n<p>\u867d\u7136\u6211\u4ece\u672a\u5c1d\u8bd5\u8fc7\u5b9e\u9645\u64cd\u4f5c\uff0c\u4f46\u5e94\u8be5\u4f1a\u6709\u7c7b\u4f3c\u8fd9\u6837\u7684\u5e03\u5c40\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/379-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2019-05-23 6.53.10.png\" \/><\/div>\n<h2>\u603b\u7ed3<\/h2>\n<h3>\u8fdb\u884c\u5b9e\u8df5\u7684\u76ee\u6807(\u518d\u6b21\u63d0\u53ca)\u3002<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes\u3068\u304a\u53cb\u9054\u306b\u306a\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>\u30a4\u30e1\u30fc\u30b8\u3092\u63b4\u3080<br \/>\n\u89e6\u3063\u3066\u307f\u308b(\u30ed\u30fc\u30ab\u30eb\u30fbEKS\u30fb\u3061\u3087\u3063\u3068GKE)<br \/>\n\u69cb\u7bc9\u30fb\u904b\u7528\u304c\u3067\u304d\u308b\u3088\u3046\u306a\u6c17\u5206\u306b\u306a\u308b<\/p>\n<p>\u5df7\u306b\u3042\u3075\u308c\u308bKubernetes\u306e\u8a18\u4e8b\u30fb\u30b9\u30e9\u30a4\u30c9\u304c\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b<\/p>\n<h3>\u867d\u7136\u8fd9\u6837\u8bf4&#8230;<\/h3>\n<p>Kubernetes\u5728\u5927\u89c4\u6a21\u4e14\u590d\u6742\u7684\u7cfb\u7edf\u4e2d\u5c55\u73b0\u5176\u771f\u6b63\u4ef7\u503c\u3002<br \/>\n\u5982\u679c\u662f\u7b80\u5355\u7684\u7cfb\u7edf\uff0c\u4f8b\u5982Fargate\u6216ECS\u53ef\u80fd\u66f4\u597d\u3002<br \/>\n\u6839\u636e\u60c5\u51b5\uff0c\u751a\u81f3\u4f7f\u7528EC2\u7684\u4f20\u7edf\u914d\u7f6e\u4e5f\u8db3\u591f\u4e86\u3002<\/p>\n<h3>\u7136\u800c\uff0c\u6570\u5e74\u540e<\/h3>\n<p>\u6211\u8ba4\u4e3a\u5b83\u5f88\u6709\u53ef\u80fd\u6210\u4e3a\u53f8\u7a7a\u89c1\u60ef\u7684\u6280\u672f\u3002\u5e76\u4e14\u6709\u5145\u5206\u7684\u53ef\u80fd\u53d8\u5f97\u66f4\u52a0\u7b80\u5355\u6613\u7528\uff01\u6bd4\u5982\u8bf4\uff0c\u662f\u5426\u6709EKS\u7684Fargate\u652f\u6301\u2026\u2026\u3002<\/p>\n<p>\u65e0\u8bba\u5982\u4f55\uff0c\u73b0\u9636\u6bb5\u81ea\u5df1\u7684\u9009\u62e9\u589e\u591a\u662f\u4ef6\u597d\u4e8b\uff0c\u5bf9\u5427\uff01<\/p>\n<h3>\u6240\u4ee5<\/h3>\n<p>\u5982\u679c\u6211\u4eec\u80fd\u591f\u8fbe\u5230\u76ee\u6807\uff0c\u90a3\u5c31\u592a\u5e78\u8fd0\u4e86?<br \/>\n\u4f46\u662f\uff0c\u6211\u4eec\u521a\u521a\u8e0f\u5165\u4e86Kubernetes\u7684\u4e16\u754c\u3002\u8fd9\u6b21\u65e0\u6cd5\u5b8c\u5168\u4ecb\u7ecd\u7684\u672f\u8bed\u548c\u751f\u6001\u7cfb\u7edf\u90fd\u662f\u5e9e\u5927\u7684\u2026\u2026<br \/>\n\u6211\u4eec\u7684\u6218\u6597\u624d\u521a\u521a\u5f00\u59cb\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u56e0\u4e3a\u5728\u516c\u53f8\u5185\u8fdb\u884c\u4e86Kubernetes\u5b9e\u64cd\uff0c\u6240\u4ee5\u6211\u60f3\u548c\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u3002\u57286\u540d\u53c2\u4e0e\u8005\u79ef\u6781\u63d0\u95ee\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u89e3\u7b54\u95ee\u9898 [&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-43714","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>\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01 - 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\/\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684kubernetes\u5b9e\u8df5\u6559\u7a0b\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01\" \/>\n<meta property=\"og:description\" content=\"\u56e0\u4e3a\u5728\u516c\u53f8\u5185\u8fdb\u884c\u4e86Kubernetes\u5b9e\u64cd\uff0c\u6240\u4ee5\u6211\u60f3\u548c\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u3002\u57286\u540d\u53c2\u4e0e\u8005\u79ef\u6781\u63d0\u95ee\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u89e3\u7b54\u95ee\u9898 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684kubernetes\u5b9e\u8df5\u6559\u7a0b\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-31T06:57:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T15:46:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/15-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=\"13 \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\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/\",\"name\":\"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-12-31T06:57:21+00:00\",\"dateModified\":\"2024-04-28T15:46:53+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01\"}]},{\"@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\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01 - 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\/\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684kubernetes\u5b9e\u8df5\u6559\u7a0b\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01","og_description":"\u56e0\u4e3a\u5728\u516c\u53f8\u5185\u8fdb\u884c\u4e86Kubernetes\u5b9e\u64cd\uff0c\u6240\u4ee5\u6211\u60f3\u548c\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u3002\u57286\u540d\u53c2\u4e0e\u8005\u79ef\u6781\u63d0\u95ee\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u89e3\u7b54\u95ee\u9898 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684kubernetes\u5b9e\u8df5\u6559\u7a0b\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-12-31T06:57:21+00:00","article_modified_time":"2024-04-28T15:46:53+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543f37434c4406cd2268\/15-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"13 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/","name":"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-12-31T06:57:21+00:00","dateModified":"2024-04-28T15:46:53+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6570\u4e2a\u5c0f\u65f6\u5185\u5f7b\u5e95\u7406\u89e3\uff01\u975e\u5e38\u62e5\u6709\u5b9e\u529b\u7684Kubernetes\u5b9e\u8df5\u6559\u7a0b\uff01"}]},{"@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\/%e6%95%b0%e4%b8%aa%e5%b0%8f%e6%97%b6%e5%86%85%e5%bd%bb%e5%ba%95%e7%90%86%e8%a7%a3%ef%bc%81%e9%9d%9e%e5%b8%b8%e6%8b%a5%e6%9c%89%e5%ae%9e%e5%8a%9b%e7%9a%84kubernetes%e5%ae%9e%e8%b7%b5%e6%95%99%e7%a8%8b\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43714","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=43714"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43714\/revisions"}],"predecessor-version":[{"id":66030,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43714\/revisions\/66030"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=43714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=43714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=43714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}