{"id":35502,"date":"2022-11-19T11:54:42","date_gmt":"2023-10-12T21:15:46","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/"},"modified":"2024-04-29T01:27:32","modified_gmt":"2024-04-28T17:27:32","slug":"%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/","title":{"rendered":"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9"},"content":{"rendered":"<h3>\u6700\u521d<\/h3>\n<p>\u4f5c\u4e3a\u4e4b\u524d\u5173\u4e8eDocker\u5b66\u4e60\u7684\u5ef6\u7eed\uff0c\u6211\u5c06\u603b\u7ed3\u5b66\u4e60Kubernetes\u7684\u5185\u5bb9\u3002\u6211\u8ba4\u4e3a\u6211\u5df2\u7ecf\u6db5\u76d6\u4e86Kubernetes\u7684\u57fa\u672c\u6982\u5ff5\u548c\u547d\u4ee4\uff0c\u5e0c\u671b\u60a8\u5728\u5b66\u4e60\u65f6\u53ef\u4ee5\u53c2\u8003\u3002<\/p>\n<h3>\u25a0Kubernetes \u662f\u4ec0\u4e48<\/h3>\n<p>Kubernetes\u662f\u4e00\u79cd\u7528\u4e8e\u7ba1\u7406Docker\u7b49\u5bb9\u5668\u7684\u5de5\u5177\u3002\u5728\u5904\u7406\u591a\u4e2a\u4e3b\u673a\u4e0a\u7684\u5bb9\u5668\u65f6\u975e\u5e38\u65b9\u4fbf\u3002<\/p>\n<p>Docker run\u548cdocker-compose\u7684\u533a\u522b\u5728\u4e8e\u662f\u7ba1\u7406\u591a\u4e2a\u5bb9\u5668\u8fd8\u662f\u5355\u4e2a\u5bb9\u5668\u3002\u4f46\u662f\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u4e3b\u673a\u6d88\u5931\uff0c\u5bb9\u5668\u4e5f\u4f1a\u6d88\u5931\u3002\u56e0\u6b64\uff0c\u9700\u8981\u521b\u5efa\u591a\u4e2a\u4e3b\u673a\uff0c\u5e76\u5c06\u591a\u4e2a\u5bb9\u5668\u5206\u914d\u7ed9\u8fd9\u4e9b\u521b\u5efa\u7684\u4e3b\u673a\u96c6\u7fa4\uff0c\u8fd9\u5c31\u662f\u5bb9\u5668\u7f16\u6392\u5de5\u5177\u3002\u6700\u5e38\u7528\u7684\u5bb9\u5668\u7f16\u6392\u5de5\u5177\u662fKubernetes\u3002<\/p>\n<p>\u4f7f\u7528Kubernetes\u7684\u597d\u5904\u5305\u62ec\u4ee5\u4e0b\u51e0\u70b9\uff1a<br \/>\n&#8211; \u53ef\u4ee5\u5728\u591a\u4e2a\u4e3b\u673a\u4e0a\u5bf9\u591a\u4e2a\u5bb9\u5668\u8fdb\u884c\u8d1f\u8f7d\u5747\u8861\u548c\u5de5\u4f5c\u8d1f\u8f7d\u5206\u6563\u3002<br \/>\n&#8211; \u5373\u4f7f\u4e00\u4e2aPod\uff08\u5bb9\u5668\uff09\u505c\u6b62\uff0c\u4e5f\u53ef\u4ee5\u8fdb\u884c\u81ea\u52a8\u4fee\u590d\u3002<br \/>\n&#8211; \u53ef\u4ee5\u8fdb\u884c\u65e0\u505c\u673a\u66f4\u65b0\uff08\u6eda\u52a8\u66f4\u65b0\uff09\u3002<br \/>\n&#8211; \u53ef\u4ee5\u5728\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u671f\u95f4\u8fdb\u884c\u6269\u5c55\u548c\u7f29\u5c0f\u3002<\/p>\n<h3>\u25a0\u5b66\u4e60\u73af\u5883<\/h3>\n<p>&#8211; \u5b66\u4e60\u7684\u5730\u65b9\u6216\u6761\u4ef6<\/p>\n<p>\u5982\u679c\u8981\u5728\u672c\u5730\u73af\u5883\u4e2d\u6784\u5efa\u5b66\u4e60\u73af\u5883\uff0c\u8bf7\u53c2\u8003\u4ee5\u4e0b\u6587\u7ae0\u8fdb\u884c\u5b89\u88c5\u3002<br \/>\nhttps:\/\/qiita.com\/khara_nasuo486\/items\/08d7918690c4416ec28c<br \/>\n\u6b64\u5916\uff0c\u4f5c\u4e3a\u53ef\u4ee5\u5728\u7f51\u9875\u4e0a\u4f7f\u7528Kubernetes\u7684\u7ad9\u70b9\uff0c\u6211\u5728\u6b64\u63d0\u4f9b\u4ee5\u4e0b\u4fe1\u606f\u3002\u5982\u679c\u5bf9\u5728\u672c\u5730\u73af\u5883\u4e2d\u6784\u5efa\u73af\u5883\u611f\u5230\u9ebb\u70e6\uff0c\u8bf7\u4f7f\u7528\u6b64\u7ad9\u70b9\u3002<br \/>\nhttps:\/\/labs.play-with-k8s.com\/<\/p>\n<h3>\u25a0\u5173\u4e8eKubernetes\u4e2d\u7684\u8282\u70b9<\/h3>\n<p>\u5728Kubernetes\u4e2d\uff0c\u901a\u8fc7\u4ece\u5ba2\u6237\u7aef\u53d1\u9001\u547d\u4ee4\u5230\u7c7b\u4f3c\u4e8eDocker\u4e2d\u7684\u5b88\u62a4\u7a0b\u5e8f\u7684\u8282\u70b9\uff0c\u8fd9\u4e9b\u8282\u70b9\u88ab\u79f0\u4e3a\u4e3b\u8282\u70b9\uff0c\u5e76\u4e14\u4e3b\u8282\u70b9\u63a5\u6536\u5230\u547d\u4ee4\u540e\u4f1a\u5c06\u5176\u53d1\u9001\u5230\u5de5\u4f5c\u8282\u70b9\uff0c\u8fd9\u5c31\u6784\u6210\u4e86\u4e00\u79cd\u7ed3\u6784\u3002<\/p>\n<p>\u4f5c\u4e3a\u4e3b\u8282\u70b9\u7684\u89d2\u8272\uff0c\u53ef\u4ee5\u5217\u4e3e\u4ee5\u4e0b\u51e0\u70b9\uff1a<br \/>\n&#8211; \u63a7\u5236\u96c6\u7fa4<br \/>\n&#8211; \u8c03\u5ea6\u548c\u751f\u547d\u5468\u671f\u76d1\u63a7<br \/>\n&#8211; \u8d1f\u8f7d\u5747\u8861\u548c\u81ea\u52a8\u4fee\u590d<\/p>\n<p>\u5de5\u4f5c\u8282\u70b9\u7684\u89d2\u8272\u5982\u4e0b\u6240\u793a\uff1a<br \/>\n&#8211; \u670d\u52a1\u5668\u4e0a\u6267\u884c\u5bb9\u5668<br \/>\n&#8211; \u5728\u591a\u4e2a\u8282\u70b9\u4e0a\u5f62\u6210\u96c6\u7fa4<br \/>\n&#8211; \u6839\u636e\u4e3b\u8282\u70b9\u7684\u547d\u4ee4\u521b\u5efa\u6216\u5220\u9664Pod<\/p>\n<p>\u5ba2\u6237\u7aef\u662f\u6307\u5199\u5165\u6267\u884c\u547d\u4ee4\u7684\u63a7\u5236\u53f0\uff0c\u4f46\u5728Kubernetes\u4e0a\uff0c\u901a\u8fc7kubectl\u547d\u4ee4\u53ef\u4ee5\u521b\u5efa\u5305\u542b\u5404\u79cd\u8bbe\u7f6e\u7684\u6e05\u5355\u6587\u4ef6\uff0c\u6216\u8005\u6839\u636e\u6e05\u5355\u6587\u4ef6\u6307\u793a\u4e3b\u8282\u70b9\u5bf9\u8d44\u6e90\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<h3>\u25a0\u4f7f\u7528Hello World\u8fdb\u884c\u4eb2\u81ea\u4f53\u9a8c\u6307\u5bfc<\/h3>\n<h4>\u25b6Kubernetes\u5bb9\u5668\u7ec4\u542f\u52a8<\/h4>\n<p>Pod\u88ab\u79f0\u4e3a\u5c06\u5bb9\u5668\u7ec4\u6210\u4e00\u4e2a\u7ec4\u7684\u865a\u62df\u4e3b\u673a\u3002Pod\u662fKubernetes\u7ba1\u7406\u7684\u57fa\u672c\u5355\u4f4d\uff0c\u5b83\u5177\u6709\u5171\u4eab\u865a\u62df\u7f51\u7edc\u63a5\u53e3\uff08\u76f8\u540c\u7684IP\u548c\u6587\u4ef6\u7cfb\u7edf\uff09\u7684\u80fd\u529b\uff0c\u56e0\u6b64\u626e\u6f14\u7740\u865a\u62df\u4e3b\u673a\u7684\u89d2\u8272\u3002<\/p>\n<p>\u6211\u4eec\u5c06\u770b\u4e00\u4e0b\u5982\u4f55\u521b\u5efa\u8fd9\u6837\u7684Pod\u5e76\u786e\u8ba4\u4fe1\u606f\u3002<\/p>\n<h5>\u25cf\u4f7f\u7528kubectl\u8fd0\u884c<\/h5>\n<p>\u9996\u5148\u662f\u542f\u52a8Pod\u3002\u901a\u8fc7\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u542f\u52a8Pod\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u60f3\u8981\u542f\u52a8Pod\uff0c\u6240\u4ee5\u52a0\u5165\u4e86&#8221;&#8211;restart Never&#8221;\u9009\u9879\uff0c\u4f46\u6839\u636e\u521b\u5efa\u7684\u5bf9\u8c61\u7684\u4e0d\u540c\uff0c\u9700\u8981\u8fdb\u884c\u76f8\u5e94\u7684\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl run \u2013image [\u30a4\u30e1\u30fc\u30b8\u540d]:[\u30bf\u30b0\u540d] \u2013restart Never [Pod\u540d]\r\n\r\n=====HelloWorld\u306e\u30a4\u30e1\u30fc\u30b8=====\r\n$kubectl run --image hello-world:latest --restart Never helloworld\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\npod\/helloworld created\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u50cfdocker run\u4e00\u6837\uff0c\u4f7f\u7528kubectl run\u547d\u4ee4\u6307\u5b9a\u591a\u79cd\u9009\u9879\u3002\u4f8b\u5982\uff0c\u901a\u8fc7\u4f7f\u7528-e\u9009\u9879\u53ef\u4ee5\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u3002\u6709\u5173\u5176\u4ed6\u9009\u9879\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u8003\u4ee5\u4e0b\u9875\u9762\uff1a<br \/>\nhttps:\/\/kubernetes.io\/ja\/docs\/reference\/kubectl\/overview\/<\/p>\n<h5>\u25cf\u67e5\u770bkubectl\u5217\u8868<\/h5>\n<p>\u8981\u663e\u793aPod\u7684\u5217\u8868\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get pod\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         READY   STATUS      RESTARTS   AGE\r\nhelloworld   0\/1     Completed   0          3m6s\r\n<\/code><\/pre>\n<h5>\u25cf\u67e5\u770b kubectl \u7684\u65e5\u5fd7<\/h5>\n<p>\u5982\u679c\u60f3\u67e5\u770bPod\u7684\u65e5\u5fd7\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl logs [Pod\u540d]\r\n\r\n=====HelloWorld\u306e\u30a4\u30e1\u30fc\u30b8=====\r\n$kubectl logs helloworld\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello from Docker!\r\nThis message shows that your installation appears to be working correctly.\r\n\r\nTo generate this message, Docker took the following steps:\r\n 1. The Docker client contacted the Docker daemon.\r\n 2. The Docker daemon pulled the \"hello-world\" image from the Docker Hub.\r\n    (amd64)\r\n 3. The Docker daemon created a new container from that image which runs the\r\n    executable that produces the output you are currently reading.\r\n 4. The Docker daemon streamed that output to the Docker client, which sent it\r\n    to your terminal.\r\n\r\nTo try something more ambitious, you can run an Ubuntu container with:\r\n $ docker run -it ubuntu bash\r\n\r\nShare images, automate workflows, and more with a free Docker ID:\r\n https:\/\/hub.docker.com\/\r\n\r\nFor more examples and ideas, visit:\r\n https:\/\/docs.docker.com\/get-started\/\r\n<\/code><\/pre>\n<h5>kubectl \u8be6\u7ec6\u63cf\u8ff0<\/h5>\n<p>\u5982\u679c\u4f60\u60f3\u67e5\u770bPod\u7684\u5143\u6570\u636e\uff0c\u8bf7\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl describe pod [Pod\u540d]\r\n\r\n=====HelloWorld\u306e\u30a4\u30e1\u30fc\u30b8=====\r\n$kubectl describe pod helloworld\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nName:         helloworld\r\nNamespace:    default\r\nPriority:     0\r\nNode:         minikube\/192.168.49.2\r\nStart Time:   Mon, 18 Jul 2022 15:18:17 +0900\r\nLabels:       run=helloworld\r\nAnnotations:  &lt;none&gt;\r\nStatus:       Succeeded\r\nIP:           172.17.0.3\r\nIPs:\r\n  IP:  172.17.0.3\r\nContainers:\r\n  helloworld:\r\n    Container ID:   docker:\/\/c9c20f5ebe1ffe3d5f69767e80f6f3ae0c515bb743028a38ab66f169c010b0af\r\n    Image:          hello-world:latest\r\n    Image ID:       docker-pullable:\/\/hello-world@sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0\r\n###############################\u4e2d\u7565###############################\r\nEvents:\r\n  Type    Reason     Age   From               Message\r\n  ----    ------     ----  ----               -------\r\n  Normal  Scheduled  11m   default-scheduler  Successfully assigned default\/helloworld to minikube\r\n  Normal  Pulling    11m   kubelet            Pulling image \"hello-world:latest\"\r\n  Normal  Pulled     11m   kubelet            Successfully pulled image \"hello-world:latest\" in 4.342894157s\r\n  Normal  Created    11m   kubelet            Created container helloworld\r\n  Normal  Started    11m   kubelet            Started container helloworld\r\n<\/code><\/pre>\n<h5>\u25cf\u5220\u9664kubectl<\/h5>\n<p>\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\u4ee5\u5220\u9664\u521b\u5efa\u7684Pod\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl delete pod [Pod\u540d]\r\n\r\n=====HelloWorld\u306e\u30a4\u30e1\u30fc\u30b8=====\r\n$kubectl delete pod helloworld\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\npod \"helloworld\" deleted\r\n<\/code><\/pre>\n<h5>\u25cf\u8fd0\u884ckubectl exec\u547d\u4ee4<\/h5>\n<p>\u4e3a\u4e86\u8fdb\u5165\u521b\u5efa\u7684Pod\u4e2d\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl exec -it [Pod\u540d] [\u30b7\u30a7\u30eb\u540d]\r\n\r\n=====HelloWorld\u306e\u30a4\u30e1\u30fc\u30b8=====\r\n$kubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld\r\n$kubectl exec -it helloworld sh\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nkubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.\r\n\/ #\r\n<\/code><\/pre>\n<h4>\u901a\u8fc7Service\u5728\u96c6\u7fa4\u5185\u5916\u8fdb\u884c\u516c\u5f00\u3002<\/h4>\n<h5>\u25cf\u6765\u81ea\u7c07\u5185\u90e8\u7684\u8fde\u63a5<\/h5>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5c06\u4ece\u96c6\u7fa4\u5185\u90e8\u8fdb\u884c\u8fde\u63a5\u786e\u8ba4\u3002\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u5305\u542bcurl\u5bb9\u5668\u7684Pod\uff0c\u5e76\u8fdb\u884cShell\u8fde\u63a5\uff0c\u7136\u540e\u5bf9helloworld Pod\u8fdb\u884cCurl\u8bbf\u95ee\u6d4b\u8bd5\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl run --port 8080 --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld\r\n$kubectl get pod\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES\r\nhelloworld   1\/1     Running   0          3m25s   172.17.0.3   minikube   &lt;none&gt;           &lt;none&gt;\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$kubectl run --image curlimages\/curl:latest -it --restart Never --rm curl sh\r\n\r\n#####\u958b\u3044\u305f\u30b7\u30a7\u30eb\u3067\u4e0b\u8a18\u3092\u5165\u529b#####\r\n#curl 172.17.0.3:8080\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u67e5\u770b\u8fd9\u4e2a\u7ed3\u679c\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u901a\u8fc7\u5728curl\u4e2d\u6307\u5b9ahelloworld\u7684IP\u5730\u5740\u4e3a&#8221;172.17.0.3&#8243;\uff0c\u5e76\u5f00\u653e\u7aef\u53e38080\uff0c\u901a\u8fc7\u8fd9\u6837\u6307\u5b9a\uff0c\u6211\u4eec\u53ef\u4ee5\u786e\u8ba4curl\u5bb9\u5668\u53ef\u4ee5\u8fde\u63a5\u5230hellorowld\u5bb9\u5668\u3002<br \/>\n\u4e3a\u4e86\u786e\u8ba4\u5176\u5b58\u5728\u4e8e\u5185\u90e8\uff0c\u6211\u4eec\u9700\u8981\u5728curl\u5bb9\u5668\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u65f6\uff0c\u901a\u8fc7\u663e\u793a\u5305\u62ecIP\u5728\u5185\u7684pod\u5217\u8868\uff08\u4f7f\u7528-o wide\u9009\u9879\uff09\uff0c\u7ed3\u679c\u5982\u4e0b\uff0c\u6211\u4eec\u53ef\u4ee5\u786e\u8ba4\u5b83\u786e\u5b9e\u5b58\u5728\u4e8e\u76f8\u540c\u7684\u7f51\u7edc\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get pod -o wide\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES\r\ncurl         1\/1     Running   0          2m43s   172.17.0.4   minikube   &lt;none&gt;           &lt;none&gt;\r\nhelloworld   1\/1     Running   0          2m53s   172.17.0.3   minikube   &lt;none&gt;           &lt;none&gt;\r\n<\/code><\/pre>\n<h5>\u25cf\u6765\u81ea\u96c6\u7fa4\u5916\u90e8\u7684\u8fde\u63a5<\/h5>\n<p>\u63a5\u4e0b\u6765\u8fdb\u884c\u4e0e\u7fa4\u96c6\u5916\u7684\u8fde\u63a5\uff0c\u4f46\u8bf4\u5b9e\u8bdd\uff0c\u8fd9\u662f\u4e0d\u53ef\u80fd\u7684\u3002\u8fd9\u4e0eDocker\u7684\u60c5\u51b5\u76f8\u540c\uff0c\u4e3b\u673a\u7684IP\u548cPod\u7684IP\u8303\u56f4\u4e0d\u540c\u3002\u56e0\u6b64\uff0c\u4e3a\u4e86\u4f7f\u5176\u53ef\u8bbf\u95ee\uff0c\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u79f0\u4e3aService\u7684\u5b9e\u4f53\u6765\u516c\u5f00Pod\u5230\u5916\u90e8\u3002<\/p>\n<p>Service\u662f\u6307\u5177\u6709\u9759\u6001IP\u5730\u5740\u7684L4\u8d1f\u8f7d\u5e73\u8861\u5668\uff0c\u7528\u4e8e\u5c06Pod\u53d1\u5e03\u5230\u96c6\u7fa4\u5185\u5916\u3002\u7531\u4e8e\u65e0\u6cd5\u786e\u5b9aPod\u4f55\u65f6\u505c\u6b62\u548c\u6d88\u5931\uff0c\u56e0\u6b64\u9700\u8981\u5c06\u539f\u59cbService\u516c\u5f00\u3002<\/p>\n<p>\u670d\u52a1\u6709\u4e09\u79cd\u7c7b\u578b\uff0c\u6bcf\u79cd\u7c7b\u578b\u90fd\u5177\u6709\u4ee5\u4e0b\u7279\u70b9\uff1a<br \/>\n&#8211; ClusterIP Service\uff08\u96c6\u7fa4\u5185\u8fde\u63a5\uff09<br \/>\n\u901a\u8fc7\u5c06\u5177\u6709\u4e0d\u786e\u5b9a\u6d88\u5931\u65f6\u95f4\u7684Pod IP\u8fdb\u884c\u62bd\u8c61\u5316\uff0c\u5e76\u653e\u7f6e\u5177\u6709\u9759\u6001IP\u7684\u4ee3\u7406\uff0c\u53ef\u4ee5\u83b7\u5f97\u4ee5\u4e0b\u4f18\u70b9\uff1a<br \/>\n1. \u5728\u8bbf\u95eePod\u65f6\uff0c\u65e0\u9700\u77e5\u9053Pod\u7684IP\u3002<br \/>\n2. \u5728\u8bbf\u95eePod\u65f6\uff0c\u53ef\u4ee5\u8fdb\u884c\u8d1f\u8f7d\u5747\u8861\u3002<\/p>\n<p>&#8211; NodePort Service\uff08\u96c6\u7fa4\u5185\u5916\u8fde\u63a5\uff09<br \/>\nNodePort Service\u53ef\u4ee5\u901a\u8fc7Node IP\u548cNode Port\u6765\u5b9e\u73b0\u5bf9\u96c6\u7fa4\u5916\u7684Pod\u8fdb\u884c\u516c\u5f00\uff0c\u8fd9\u662fClusterIP\u65e0\u6cd5\u5b9e\u73b0\u7684\u4f18\u70b9\u3002\u7136\u800c\uff0c\u5b58\u5728\u4ee5\u4e0b\u7f3a\u70b9\uff1a<br \/>\n1. \u9700\u8981\u77e5\u9053Node IP\u3002<br \/>\n2. \u9700\u8981\u77e5\u9053Node Port\u3002<\/p>\n<p>&#8211; LoadBalancer Service\uff08\u96c6\u7fa4\u5185\u5916\u8fde\u63a5\uff09<br \/>\n\u901a\u8fc7\u4ece\u63d0\u4f9b\u5546\u7684L4\u8d1f\u8f7d\u5747\u8861\u5668DNS\u8def\u7531\u5230\u6bcf\u4e2a\u8282\u70b9\u7684\u7279\u5b9a\u7aef\u53e3\u6765\u8bbf\u95eePod\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u4e86\u89e3Node IP\u548cNode Port\u3002\u7136\u800c\uff0c\u4e5f\u5b58\u5728\u4ee5\u4e0b\u7f3a\u70b9\uff1a<br \/>\n1. \u6bcf\u4e2aService\u90fd\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668\uff0c\u6210\u672c\u8f83\u9ad8\u3002<br \/>\n2. \u7531\u4e8e\u662fL4\u8d1f\u8f7d\u5747\u8861\u5668\uff0c\u65e0\u6cd5\u8fdb\u884c\u57fa\u4e8eL7\u7684HTTP\u4e3b\u673a\u548c\u8def\u5f84\u7684\u8d1f\u8f7d\u5747\u8861\u5206\u914d\u3002<\/p>\n<p>\u6211\u4eec\u5c06\u9010\u4e00\u786e\u8ba4\u4e0a\u8ff0\u6bcf\u4e2a\u670d\u52a1\u7684\u5185\u5bb9\u3002<\/p>\n<h5>\u25cf\u96c6\u7fa4 IP \u670d\u52a1<\/h5>\n<p>\u6211\u4eec\u5c06\u628aHelloWorld Pod\u4f5c\u4e3aClusterIP\u7684Service\uff0c\u5728\u96c6\u7fa4\u5185\u90e8\u8fdb\u884c\u516c\u5f00\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u4ece\u540c\u4e00\u96c6\u7fa4\u5185\u7684\u5176\u4ed6Pod\u8bbf\u95ee\u3002<br \/>\n\u901a\u8fc7\u5728\u4ee5\u4e0b\u542f\u52a8\u7684Pod\u4e0a\u6307\u5b9a&#8211;type ClusterIP\u9009\u9879\uff0c\u53ef\u4ee5\u5c06\u5176\u4f5c\u4e3aClusterIP\u7684Service\u8fdb\u884c\u516c\u5f00\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl expose pod [Pod\u540d] --type ClusterIP [Service\u540d]\r\n\r\n=====helloworld Pod\u3092helloworld-clusterip\u3068\u3044\u3046Service\u540d\u3067\u516c\u958b=====\r\n$kubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld\r\n$kubectl expose pod helloworld --type ClusterIP --port 8080 --name helloworld-clusterip\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nservice\/helloworld-clusterip exposed\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u83b7\u53d6\u670d\u52a1\u7684\u5217\u8868\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get service\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE\r\nhelloworld-clusterip   ClusterIP   10.102.43.35   &lt;none&gt;        8080\/TCP   4m43s\r\nkubernetes             ClusterIP   10.96.0.1      &lt;none&gt;        443\/TCP    10h\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u8fd9\u4e2a\u7ed3\u679c\uff0c\u6211\u4eec\u53ef\u4ee5\u786e\u8ba4\u786e\u5b9e\u521b\u5efa\u4e86\u7c7b\u578b\u4e3aClusterIP\u7684\u670d\u52a1\u3002<\/p>\n<p>\u7136\u540e\uff0c\u91cd\u65b0\u542f\u52a8 curl \u5bb9\u5668\uff0c\u5e76\u901a\u8fc7 helloworld-clusterip \u8bbf\u95ee helloworld\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl run --image curlimages\/curl:7.68.0 -it --restart Never --rm curl sh \r\n\r\n#####\u958b\u3044\u305f\u30b7\u30a7\u30eb\u3067\u4e0b\u8a18\u3092\u5165\u529b#####\r\n$curl 10.102.43.35:8080\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u6839\u636e\u6b64\u7ed3\u679c\uff0c\u786e\u8ba4\u53ef\u4ee5\u8bbf\u95eehelloworld\u3002\u8fd9\u4e2a\u7ed3\u679c\u4e0e\u524d\u9762\u89e3\u91ca\u7684&#8221;\u4ece\u96c6\u7fa4\u5185\u8fde\u63a5&#8221;\u7684\u90e8\u5206\u7684\u7ed3\u679c\u76f8\u540c\u3002\u7136\u800c\uff0c\u524d\u9762\u6240\u505a\u7684\u662f\u4ececurl\u5bb9\u5668\u76f4\u63a5\u8fde\u63a5\u5230helloworld\u5bb9\u5668\u3002<br \/>\n\u672c\u6b21\u6240\u505a\u7684\u7ed3\u679c\u662f\u4ececurl\u5bb9\u5668\u8bbf\u95eehelloworld-clusterip\u670d\u52a1\uff0c\u7136\u540e\u901a\u8fc7\u8d1f\u8f7d\u5747\u8861\uff08\u7531\u4e8e\u53ea\u521b\u5efa\u4e86\u4e00\u4e2aPod\uff0c\u6240\u4ee5\u5177\u4f53\u662f\u7279\u5b9a\u7684Pod\uff09\u7684\u529f\u80fd\uff0c\u670d\u52a1\u5c06\u8bbf\u95eehelloworld\u3002<br \/>\n\u56e0\u6b64\uff0c\u7531\u4e8e\u610f\u4e49\u4e0d\u540c\uff0c\u9700\u8981\u6ce8\u610f\u3002<\/p>\n<h5>\u25cf\u8282\u70b9\u7aef\u53e3\u670d\u52a1<\/h5>\n<p>\u6211\u4eec\u5c06\u628aHelloWorld Pod\u4f5c\u4e3aNodeIP\u7684Service\u5728\u96c6\u7fa4\u5185\u5916\u8fdb\u884c\u516c\u5f00\uff0c\u5e76\u786e\u4fdd\u5176\u4ed6Pod\u53ef\u4ee5\u4ece\u540c\u4e00\u96c6\u7fa4\u5185\u8bbf\u95ee\u5b83\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7\u5728\u4e0b\u9762\u793a\u4f8b\u7684Pod\u542f\u52a8\u547d\u4ee4\u4e2d\u6307\u5b9a\u9009\u9879&#8221;&#8211;type NodePort&#8221;\u6765\u5c06\u5176\u4f5c\u4e3aClusterIP\u7684Service\u8fdb\u884c\u516c\u5f00\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl expose pod [Pod\u540d] --type NodePortIP [Service\u540d]\r\n\r\n=====helloworld Pod\u3092helloworld-nodeport\u3068\u3044\u3046Service\u540d\u3067\u516c\u958b=====\r\n$kubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld\r\n$kubectl expose pod helloworld --type NodePort --port 8080 --name helloworld-nodeport\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nservice\/helloworld-nodeport exposed\r\n<\/code><\/pre>\n<p>\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u308b\u3053\u3068\u3067Service\u306e\u4e00\u89a7\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get service\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE\r\nhelloworld-nodeport   NodePort    10.107.162.126   &lt;none&gt;        8080:30224\/TCP   57s\r\nkubernetes            ClusterIP   10.96.0.1        &lt;none&gt;        443\/TCP          11h\r\n<\/code><\/pre>\n<p>\u3053\u306e\u7d50\u679c\u3001\u78ba\u304b\u306bType Nodeport\u306eService\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u306f\u540c\u4e00\u30af\u30e9\u30b9\u30bf\u5185\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u624b\u9806\u306fClusterIP\u306e\u5834\u5408\u3068\u540c\u3058\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl run --image curlimages\/curl:7.68.0 -it --restart Never --rm curl sh \r\n\r\n#####\u958b\u3044\u305f\u30b7\u30a7\u30eb\u3067\u4e0b\u8a18\u3092\u5165\u529b#####\r\n$curl 10.107.162.126:8080\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u3053\u306e\u7d50\u679c\u3001helloworld-nodeport\u3092\u7d4c\u7531\u3057\u3066helloworld\u306b\u30a2\u30af\u30bb\u30b9\u304c\u884c\u3048\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u6b21\u306b\u30af\u30e9\u30b9\u30bf\u5916\uff08\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\uff09\u304b\u3089\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u63a5\u7d9a\u306e\u305f\u3081\u306bminikube\u306eIP\u304c\u5fc5\u8981\u3068\u306a\u308b\u306e\u3067\u3001\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057IP\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$minikube ip\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\n192.168.49.2\r\n<\/code><\/pre>\n<p>\u3053\u306eIP\u306b\u5bfe\u3057\u3066\u3001curl\u30b3\u30de\u30f3\u30c9\u3092\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3067\u5b9f\u884c\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3092\u884c\u3044\u307e\u3059\u3002\u3053\u306e\u969b\u3001\u30dd\u30fc\u30c8\u306fPod\u5074\u306e30224\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$curl 192.168.49.2:30224\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u3053\u306e\u7d50\u679c\u3001helloworld\u306b\u30a2\u30af\u30bb\u30b9\u304c\u884c\u3048\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002(minikube\u8d77\u52d5\u6642\u306e\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u3001\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u5834\u5408\u304c\u3042\u308b\u3088\u3046\u3067\u3059\u3002\u305d\u306e\u5834\u5408\u306fminikube service &#8211;url helloworld-nodeport\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u51fa\u529b\u3055\u308c\u305furl\u306b\u5bfe\u3057\u3066curl\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002)<\/p>\n<h5>\u8d1f\u8f7d\u5747\u8861\u5668\u670d\u52a1<\/h5>\n<p>HelloWorld Pod\u3092NodeIP\u306eService\u3068\u3057\u3066\u3001\u30af\u30e9\u30b9\u30bf\u306e\u5185\u5916\u306b\u516c\u958b\u3057\u3001\u540c\u4e00\u30af\u30e9\u30b9\u30bf\u5185\u306e\u5225\u306ePod\u304b\u3089\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u3053\u3068\u3092\u898b\u3066\u3044\u304d\u307e\u3059\u3002<br \/>\n\u4e0b\u8a18\u306e\u3088\u3046\u306b\u8d77\u52d5\u3057\u3066\u3044\u308bPod\u306b\u5bfe\u3057\u3066&#8211;type LoadBalancer\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067ClusterIP\u306eService\u3068\u3057\u3066\u516c\u958b\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl expose pod [Pod\u540d] --type NodePortIP [Service\u540d]\r\n\r\n=====helloworld Pod\u3092helloworld-loadbalancer\u3068\u3044\u3046Service\u540d\u3067\u516c\u958b=====\r\n$kubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld\r\n$kubectl expose pod helloworld --type LoadBalancer --port 8080 --name helloworld-loadbalancer\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nservice\/helloworld-loadbalancer exposed\r\n<\/code><\/pre>\n<p>\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u308b\u3053\u3068\u3067Service\u306e\u4e00\u89a7\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get service\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME                      TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE\r\nhelloworld-loadbalancer   LoadBalancer   10.105.4.118   &lt;pending&gt;     8080:31006\/TCP   37s\r\nkubernetes                ClusterIP      10.96.0.1      &lt;none&gt;        443\/TCP          11h\r\n<\/code><\/pre>\n<p>\u3053\u306e\u7d50\u679c\u3001\u78ba\u304b\u306bType LoadBalancer\u306eService\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u306f\u540c\u4e00\u30af\u30e9\u30b9\u30bf\u5185\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u624b\u9806\u306fClusterIP\u306e\u5834\u5408\u3068\u540c\u3058\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl run --image curlimages\/curl:7.68.0 -it --restart Never --rm curl sh \r\n\r\n#####\u958b\u3044\u305f\u30b7\u30a7\u30eb\u3067\u4e0b\u8a18\u3092\u5165\u529b#####\r\n$curl 10.105.4.118:8080\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u901a\u8fc7helloworld-LoadBalancer\uff0c\u6211\u4eec\u786e\u8ba4\u80fd\u591f\u8bbf\u95ee\u5230helloworld\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u786e\u8ba4\u96c6\u7fa4\u5916\uff08\u672c\u5730\u73af\u5883\uff09\u53ef\u4ee5\u8bbf\u95ee\u3002<\/p>\n<pre class=\"post-pre\"><code>$curl $(minikube service helloworld-loadbalancer --url)\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u3053\u306e\u7d50\u679c\u3001helloworld\u306b\u30a2\u30af\u30bb\u30b9\u304c\u884c\u3048\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<h4>\u25b6Ingress\u3092\u7528\u3044\u305f\u30af\u30e9\u30b9\u30bf\u5916\u90e8\u3078\u306e\u516c\u958b<\/h4>\n<p>Ingress\u3068\u306fPod\u3092\u30af\u30e9\u30b9\u30bf\u5185\u5916\u306b\u516c\u958b\u3059\u308bL7(http\u306b\u57fa\u3065\u3044\u3066\u632f\u308a\u5206\u3051\u53ef\u80fd)\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306e\u3053\u3068\u3067\u3059\u3002\u30af\u30e9\u30b9\u30bf\u5916\u90e8\u304b\u3089\u306eURL\u306e\u30db\u30b9\u30c8\u30fb\u30d1\u30b9\u306b\u3088\u308bService\u306e\u632f\u308a\u5206\u3051\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002\u5916\u90e8\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u306f\u30d1\u30d6\u30ea\u30c3\u30afDNS\u3092\u7528\u3044\u3066\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3092\u7528\u3044\u308b\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3059\u3002\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u3066\u3001minikube\u306bIngress\u306e\u30a2\u30c9\u30aa\u30f3\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$minikube addons enable ingress\r\n<\/code><\/pre>\n<p>\u7136\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff0c\u5728minikube\u4e0a\u663e\u793a\u63d2\u4ef6\u5217\u8868\uff0c\u5e76\u786e\u8ba4ingress\u5df2\u542f\u7528(enable)\u3002<\/p>\n<pre class=\"post-pre\"><code>$minikube addons list\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\n|-----------------------------|----------|--------------|--------------------------------|\r\n|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |\r\n|-----------------------------|----------|--------------|--------------------------------|\r\n| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |\r\n| auto-pause                  | minikube | disabled     | Google                         |\r\n| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |\r\n| dashboard                   | minikube | disabled     | Kubernetes                     |\r\n| default-storageclass        | minikube | enabled \u2705   | Kubernetes                     |\r\n| efk                         | minikube | disabled     | 3rd party (Elastic)            |\r\n| freshpod                    | minikube | disabled     | Google                         |\r\n| gcp-auth                    | minikube | disabled     | Google                         |\r\n| gvisor                      | minikube | disabled     | Google                         |\r\n| headlamp                    | minikube | disabled     | kinvolk.io                     |\r\n| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |\r\n| inaccel                     | minikube | disabled     | InAccel &lt;info@inaccel.com&gt;     |\r\n| ingress                     | minikube | enabled \u2705   | 3rd party (unknown)            |\r\n| ingress-dns                 | minikube | disabled     | Google                         |\r\n| istio                       | minikube | disabled     | 3rd party (Istio)              |\r\n| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |\r\n| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |\r\n| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |\r\n| logviewer                   | minikube | disabled     | 3rd party (unknown)            |\r\n| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |\r\n| metrics-server              | minikube | disabled     | Kubernetes                     |\r\n| nvidia-driver-installer     | minikube | disabled     | Google                         |\r\n| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |\r\n| olm                         | minikube | disabled     | 3rd party (Operator Framework) |\r\n| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |\r\n| portainer                   | minikube | disabled     | Portainer.io                   |\r\n| registry                    | minikube | disabled     | Google                         |\r\n| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |\r\n| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |\r\n| storage-provisioner         | minikube | enabled \u2705   | Google                         |\r\n| storage-provisioner-gluster | minikube | disabled     | 3rd party (unknown)            |\r\n| volumesnapshots             | minikube | disabled     | Kubernetes                     |\r\n|-----------------------------|----------|--------------|--------------------------------|\r\n<\/code><\/pre>\n<p>\u7136\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff0c\u786e\u8ba4 Ingress controller pod \u5df2\u88ab\u521b\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get pods -n ingress-nginx\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME                                        READY   STATUS      RESTARTS      AGE\r\ningress-nginx-admission-create-g95fq        0\/1     Completed   0             27m\r\ningress-nginx-admission-patch-6t9vb         0\/1     Completed   0             27m\r\ningress-nginx-controller-755dfbfc65-gflns   1\/1     Running     1 (16m ago)   27m\r\n<\/code><\/pre>\n<p>\u5bf9\u4e8e minikube\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u542f\u7528\u63d2\u4ef6\u6765\u521b\u5efa Ingress \u63a7\u5236\u5668\uff0c\u4f46\u5728\u4e91\u73af\u5883\u4e2d\uff0c\u9700\u8981\u5b89\u88c5 Ingress \u63a7\u5236\u5668\u3002<\/p>\n<p>\u6b21\u306b\u30a2\u30af\u30bb\u30b9\u3092\u516c\u958b\u3057\u305f\u3044\u30d1\u30b9\u3092yaml\u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4eca\u56de\u306fhello-world Pod\u3092\u5168\u3066\u306e\u30d1\u30b9\u300c\/\u300d\u3067\u516c\u958b\u3059\u308b\u3088\u3046\u306b\u5b9f\u65bd\u3092\u884c\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u4e0b\u8a18\u306e\u3088\u3046\u306ayaml\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">networking.k8s.io\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Ingress<\/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\">helloworld<\/span>\r\n  <span class=\"na\">annotations<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">nginx.ingress.kubernetes.io\/rewrite-target<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/$1<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">rules<\/span><span class=\"pi\">:<\/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\">pathType<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Prefix<\/span>\r\n            <span class=\"na\">backend<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n                <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-nodeport<\/span>\r\n                <span class=\"na\">port<\/span><span class=\"pi\">:<\/span>\r\n                  <span class=\"na\">number<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306eyaml\u30d5\u30a1\u30a4\u30eb\u3067\u306fIngress\u306e\u540d\u524d\u3092helloworld\u306b\u3057\u3066\u3001http\u306e\u4e0b\u306b\u30d1\u30b9\u306b\u95a2\u3059\u308b\u30eb\u30fc\u30eb\u3092\u8a18\u8f09\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u69cb\u9020\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u307e\u305fpath\u3068\u3057\u3066\u300c\/\u300d\u306b\u6765\u305f\u3089\u3069\u306eService\u306b\u30a2\u30af\u30bb\u30b9\u3055\u305b\u308b\u306e\u304b\u3068\u3044\u3046\u3053\u3068\u3092backend\u306e\u7b87\u6240\u306b\u3066\u8a18\u8f09\u3057\u3066\u3044\u3066\u3001\u3053\u306e\u5834\u5408\u306fhelloworld-nodeport\u306b\u30dd\u30fc\u30c88080\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u3044\u3066\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306e\u4f5c\u6210\u3092\u884c\u3044\u307e\u3059\u3002\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306b\u95a2\u3057\u3066\u306f\u5f8c\u307b\u3069\u8aac\u660e\u3092\u884c\u3044\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u8a2d\u5b9a\u3092\u53cd\u6620\u3055\u305b\u308b\u7a0b\u5ea6\u306e\u8a8d\u8b58\u3067\u3088\u3044\u3067\u3059\u3002\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u3066\u3001\u3053\u308c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl apply -f ingress.yaml\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\ningress.networking.k8s.io\/helloworld created\r\n<\/code><\/pre>\n<p>\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u4ee5\u5217\u51faIngress\uff0c\u5e76\u786e\u8ba4\u5df2\u521b\u5efa\u4e86\u7531\u4e0a\u8ff0\u547d\u4ee4\u521b\u5efa\u7684helloworld\u7684Ingress\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get ingress\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         CLASS   HOSTS   ADDRESS        PORTS   AGE\r\nhelloworld   nginx   *       192.168.49.2   80      4m20s\r\n<\/code><\/pre>\n<p>\u8981\u67e5\u770bIngress\u8d44\u6e90\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl describe ingress [Ingress\u540d]\r\n\r\n=====helloworld\u306e\u5834\u5408=====\r\n$kubectl describe ingress helloworld\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nName:             helloworld\r\nLabels:           &lt;none&gt;\r\nNamespace:        default\r\nAddress:          192.168.49.2\r\nIngress Class:    nginx\r\nDefault backend:  &lt;default&gt;\r\nRules:\r\n  Host        Path  Backends\r\n  ----        ----  --------\r\n  *\r\n              \/   helloworld-nodeport:8080 (172.17.0.4:8080)\r\nAnnotations:  nginx.ingress.kubernetes.io\/rewrite-target: \/$1\r\nEvents:\r\n  Type    Reason  Age                    From                      Message\r\n  ----    ------  ----                   ----                      -------\r\n  Normal  Sync    7m50s (x2 over 7m54s)  nginx-ingress-controller  Scheduled for sync\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u901a\u8fc7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u83b7\u53d6Ingress\u63a7\u5236\u5668\u7684IP\uff0c\u5e76\u4f7f\u7528\u6b64IP\u901a\u8fc7Ingress\u8bbf\u95eehelloworld-nodeport\u670d\u52a1\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get ingress | awk '{ print $4 }'|tail -1\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\n192.168.49.2\r\n\r\n=====Ingress\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9=====\r\n$curl 192.168.49.2\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nHello, world!\r\nVersion: 1.0.0\r\nHostname: helloworld\r\n<\/code><\/pre>\n<p>\u4ece\u8fd9\u4e2a\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff0c\u6210\u529f\u5730\u901a\u8fc7Ingress\u8bbf\u95ee\u5230\u4e86helloworld-nodeport\u7684Service\uff0c\u5e76\u4e14\u8fdb\u4e00\u6b65\u8bbf\u95ee\u5230\u4e86helloworld Pod\u3002<\/p>\n<h4>\u25b6\u901a\u8fc7\u590d\u5236\u8fdb\u884c\u89c4\u6a21\u6269\u5927<\/h4>\n<p>\u30b7\u30b9\u30c6\u30e0\u306e\u5197\u9577\u5316\u3092\u884c\u3046\u305f\u3081\u306b\u306fReplica\u3068\u3044\u3046\u30ea\u30bd\u30fc\u30b9\u3092\u7528\u3044\u307e\u3059\u3002Replica\u3067\u306fSpec\u306b\u3066\u5b9a\u7fa9\u3057\u305f\u30ec\u30d7\u30ea\u30ab\u306e\u6570\u3092\u81ea\u52d5\u914d\u7f6e\u30fb\u7dad\u6301(Pod\u304c\u505c\u6b62\u3057\u305f\u5834\u5408\u306b\u81ea\u52d5\u4fee\u5fa9)\u3059\u308b\u6a5f\u80fd\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u3061\u3089\u3082yaml\u30d5\u30a1\u30a4\u30eb\u306b\u8a2d\u5b9a\u3092\u8a18\u8f09\u3057\u3066\u3044\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067Sample\u3068\u3057\u3066\u7528\u3044\u308b\u306e\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306ayaml\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">apps\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ReplicaSet<\/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\">helloworld<\/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\">helloworld<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">replicas<\/span><span class=\"pi\">:<\/span> <span class=\"m\">5<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">matchLabels<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/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\">helloworld<\/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\">helloworld<\/span>\r\n          <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/hello-app:1.0<\/span>\r\n<\/code><\/pre>\n<p>\u6839\u636e\u6b64yaml\u6587\u4ef6\u4e2d\u6307\u5b9a\u7684replicas\u6570\u503c\uff0cPod\u5c06\u88ab\u590d\u5236\u3002\u5728\u6b64\u6587\u4ef6\u4e2d\uff0c\u8bbe\u7f6e\u4e3a5\uff0c\u56e0\u6b64\u5c06\u521b\u5efa5\u4e2aPod\u3002<\/p>\n<p>\u4f7f\u7528\u6b64YAML\u6587\u4ef6\u6765\u5c06Pod\u4f5c\u4e3aReplicaSet\u542f\u52a8\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl apply -f replicaset.yaml\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nreplicaset.apps\/helloworld created\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u786e\u8ba4\u590d\u5236\u96c6\u5df2\u7ecf\u88ab\u521b\u5efa\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl get replicaset\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         DESIRED   CURRENT   READY   AGE\r\nhelloworld   5         5         5       3m21s\r\n\r\n=====Pod\u3092\u78ba\u8a8d=====\r\n$kubectl get pod\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME               READY   STATUS    RESTARTS   AGE\r\nhelloworld-8nkgp   1\/1     Running   0          4m32s\r\nhelloworld-8rf9j   1\/1     Running   0          4m32s\r\nhelloworld-jcdgd   1\/1     Running   0          4m32s\r\nhelloworld-tltwb   1\/1     Running   0          4m32s\r\nhelloworld-x4mf5   1\/1     Running   0          4m32s\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u786e\u8ba4replicaset\u5df2\u7ecf\u521b\u5efa\uff0c\u5e76\u4e14\u663e\u793a\u67095\u4e2aPod\u5df2\u7ecf\u521b\u5efa\u3002\u901a\u8fc7\u663e\u793aPod\u5217\u8868\u7684\u7ed3\u679c\uff0c\u53ef\u4ee5\u786e\u8ba4\u786e\u5b9e\u5df2\u7ecf\u521b\u5efa\u4e86Pod\u3002\u540c\u65f6\u8fd8\u53ef\u4ee5\u786e\u8ba4\u8fd9\u4e9bPod\u90fd\u662f\u4ee5helloworld-[\u54c8\u5e0c\u503c]\u7684\u540d\u79f0\u521b\u5efa\u7684\u3002<\/p>\n<p>\u5728\u8fd0\u884c\u671f\u95f4\u589e\u52a0\u5df2\u521b\u5efa\u7684Pod\u7684\u6570\u91cf\u4e5f\u662f\u53ef\u80fd\u7684\u3002\u8fd9\u53ef\u4ee5\u901a\u8fc7\u5728kubectl scale\u547d\u4ee4\u540e\u6dfb\u52a0&#8211;replicas\u9009\u9879\u6765\u5b9e\u73b0\u3002\u6211\u4eec\u53ef\u4ee5\u4ee5\u5c06\u5176\u589e\u52a0\u523010\u4e2a\u4e3a\u4f8b\u8fdb\u884c\u5c1d\u8bd5\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl scale --replicas=10 replicaset\/helloworld\r\n\r\n=====replicaset\u3092\u78ba\u8a8d=====\r\n$kubectl get replicaset\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         DESIRED   CURRENT   READY   AGE\r\nhelloworld   10        10        10      13m\r\n\r\n=====Pod\u3092\u78ba\u8a8d=====\r\n$kubectl get pod\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME               READY   STATUS    RESTARTS   AGE\r\nhelloworld-8nkgp   1\/1     Running   0          14m\r\nhelloworld-8rf9j   1\/1     Running   0          14m\r\nhelloworld-j6jzt   1\/1     Running   0          2m15s\r\nhelloworld-jcdgd   1\/1     Running   0          14m\r\nhelloworld-r8tcj   1\/1     Running   0          2m15s\r\nhelloworld-tltwb   1\/1     Running   0          14m\r\nhelloworld-tqb9g   1\/1     Running   0          2m15s\r\nhelloworld-vmbk7   1\/1     Running   0          2m15s\r\nhelloworld-wltrq   1\/1     Running   0          2m15s\r\nhelloworld-x4mf5   1\/1     Running   0          14m\r\n<\/code><\/pre>\n<p>\u5f53\u67e5\u770b\u6267\u884c\u7ed3\u679c\u65f6\uff0c\u53ef\u4ee5\u786e\u8ba4Pod\u7684\u6570\u91cf\u589e\u52a0\u5230\u4e8610\u4e2a\u3002<\/p>\n<p>\u6211\u60f3\u8981\u5c1d\u8bd5\u505c\u6b62\u63a5\u4e0b\u6765\u542f\u52a8\u7684\u4e00\u4e2aPod\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5f53\u5176\u4e2d\u4e00\u4e2aPod\u505c\u6b62\u65f6\uff0creplicaset\u4f1a\u5224\u65ad\u5e76\u91cd\u65b0\u521b\u5efaPod\u3002\u5728\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0cPod\u5c06\u88ab\u5206\u914d\u4e00\u4e2a\u4e0e\u505c\u6b62\u4e4b\u524d\u4e0d\u540c\u7684\u54c8\u5e0c\u503c\uff0c\u56e0\u6b64\u4e00\u4e2aPod\u5c06\u88ab\u6539\u53d8\u4e3a\u53e6\u4e00\u4e2a\u54c8\u5e0c\u503c\u3002\u4e0b\u9762\u662f\u505c\u6b62\u4e0a\u8ff0\u7684helloworld-8nkgp\u7684\u60c5\u51b5\u63cf\u8ff0\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl delete pod helloworld-8nkgp\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\npod \"helloworld-8nkgp\" deleted\r\n\r\n=====Pod\u306e\u72b6\u614b\u78ba\u8a8d=====\r\n$kubectl get pod\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME               READY   STATUS    RESTARTS   AGE\r\nhelloworld         1\/1     Running   0          23h\r\nhelloworld-8rf9j   1\/1     Running   0          20m\r\nhelloworld-c7gn7   1\/1     Running   0          2s\r\nhelloworld-j6jzt   1\/1     Running   0          8m22s\r\nhelloworld-jcdgd   1\/1     Running   0          20m\r\nhelloworld-r8tcj   1\/1     Running   0          8m22s\r\nhelloworld-tltwb   1\/1     Running   0          20m\r\nhelloworld-tqb9g   1\/1     Running   0          8m22s\r\nhelloworld-vmbk7   1\/1     Running   0          8m22s\r\nhelloworld-wltrq   1\/1     Running   0          8m22s\r\nhelloworld-x4mf5   1\/1     Running   0          20m\r\n<\/code><\/pre>\n<p>\u4f60\u53ef\u4ee5\u786e\u8ba4\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5df2\u7ecf\u81ea\u52a8\u751f\u6210\u4e86helloworld-c7gn7\u6765\u53d6\u4ee3\u505c\u6b62\u7684helloworld-8nkgp\u3002<\/p>\n<h4>\u6eda\u52a8\u66f4\u65b0\uff0c\u56de\u6eda<\/h4>\n<p>\u6b21\u306bDeployment\u3068\u3044\u3046\u30ea\u30bd\u30fc\u30b9\u3092\u7528\u3044\u3066Pod\u306eRolling Update\u3001Rollback\uff08\u7121\u505c\u6b62\u66f4\u65b0\uff09\u3092\u884c\u3044\u307e\u3059\u3002Deployment\u3067\u306fPod\u306eDeploy\u6642\u306b\u65b0\u3057\u3044ReplicaSet\u3092\u4f5c\u6210\u3057\u3001\u53e4\u3044ReplicaSet\u3067\u7ba1\u7406\u3055\u308c\u3066\u3044\u308bPod\u3092\u505c\u6b62\u3055\u305b\u306a\u304c\u3089\u3001\u65b0\u3057\u3044ReplicaSet\u3067\u7ba1\u7406\u3055\u308c\u3066\u3044\u308bPod\u3092\u4f5c\u6210\u3059\u308b\u3068\u3044\u3046\u624b\u9806\u3092\u6bb5\u968e\u7684\u306b\u884c\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u65b0\u3057\u3044\uff08Version Up\u5f8c\u7b49\uff09ReplicaSet\u306b\u66f4\u65b0\u5f8c\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8f09\u305b\u308b\u3053\u3068\u3067\u7121\u505c\u6b62\u3067\u306e\u66f4\u65b0\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u4e0a\u8a18\u306fUpdate\u306b\u3064\u3044\u3066\u3067\u3059\u304c\u3001Rollback\uff08\u5143\u306e\u72b6\u614b\u306b\u623b\u3059\uff09\u3053\u3068\u3082\u3067\u304d\u3001\u3053\u306e\u5834\u5408\u306b\u3082\u540c\u69d8\u306b\u505c\u6b62\u3068\u8d77\u52d5\u3092\u6bb5\u968e\u7684\u306b\u884c\u3046\u3053\u3068\u3067\u3001\u7121\u505c\u6b62\u3067\u306eRollback\u3092\u884c\u3046\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002<br \/>\n\u3053\u306eDeployment\u306e\u4f5c\u6210\u306b\u306fkubectl create deployment\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u4ecetag\u4e3a1.0\u7684helloworld\u5207\u6362\u5230tag\u4e3a2.0\u7684helloworld\u3002\u9996\u5148\uff0c\u7531\u4e8e\u53ea\u6709\u4e00\u4e2aPod\uff0c\u5207\u6362\u5f88\u96be\u7406\u89e3\uff0c\u6240\u4ee5\u6211\u4eec\u5c06Pod\u6269\u5c55\u52305\u4e2a\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl create deployment --image [\u30a4\u30e1\u30fc\u30b8\u540d] [deployment\u540d]\r\n\r\n=====tag 1.0\u306ehelloworld Pod\u306e\u7acb\u3061\u4e0a\u3052=====\r\n$kubectl create deployment --image gcr.io\/google-samples\/hello-app:1.0 helloworld\r\n\r\n=====deployment\u306e\u78ba\u8a8d=====\r\n$kubectl get deployment \r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME         READY   UP-TO-DATE   AVAILABLE   AGE\r\nhelloworld   1\/1     1            1           17s\r\n\r\n=====\u30b9\u30b1\u30fc\u30eb\u30a2\u30c3\u30d7=====\r\n$kubectl scale --replicas=5 deploy\/helloworld\r\n\r\n=====deployment\u306e\u78ba\u8a8d=====\r\n$kubectl get deployment \r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\nNAME                         READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/helloworld   3\/3     3            3           13m\r\n<\/code><\/pre>\n<p>\u6b21\u306bRolling Update\u3092\u884c\u3044\u307e\u3059\u304c\u3001\u305d\u306e\u305f\u3081\u306b\u306fPod\u7fa4\u306ename\u3092\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\uff08\u4e0a\u8a18\u306e\u3084\u308a\u65b9\u3067\u306f\u5404Pod\u540dhelloworld\u3068\u306f\u7570\u306a\u308bname\u304c\u4ed8\u304f\u3002\u5408\u308f\u305b\u308b\u65b9\u6cd5\u3082\u3042\u308b\u304c\u3053\u3053\u3067\u306f\u89e3\u8aac\u306f\u884c\u308f\u306a\u3044\uff09\u305d\u306e\u305f\u3081\u306b\u4f5c\u6210\u3057\u305fdeployment\u3092\u69cb\u6210\u3059\u308byaml\u30d5\u30a1\u30a4\u30eb\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u51fa\u529b\u306f\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3067\u884c\u3048\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl get deployment helloworl --output yaml\r\n\r\n#####\u51fa\u529b\u7d50\u679c#####\r\napiVersion: apps\/v1\r\nkind: Deployment\r\nmetadata:\r\n  annotations:\r\n    deployment.kubernetes.io\/revision: \"1\"\r\n  creationTimestamp: \"2022-07-20T13:57:15Z\"\r\n  generation: 2\r\n  labels:\r\n    app: helloworld\r\n  name: helloworld\r\n  namespace: default\r\n  resourceVersion: \"99302\"\r\n  uid: 6fd303f4-c30a-433b-909f-1cb49ffe3d50\r\nspec:\r\n  progressDeadlineSeconds: 600\r\n  replicas: 3\r\n  revisionHistoryLimit: 10\r\n  selector:\r\n    matchLabels:\r\n      app: helloworld\r\n  strategy:\r\n    rollingUpdate:\r\n      maxSurge: 25%\r\n      maxUnavailable: 25%\r\n    type: RollingUpdate\r\n  template:\r\n    metadata:\r\n      creationTimestamp: null\r\n      labels:\r\n        app: helloworld\r\n    spec:\r\n      containers:\r\n      - image: gcr.io\/google-samples\/hello-app:1.0\r\n        imagePullPolicy: IfNotPresent\r\n        name: hello-app\r\n        resources: {}\r\n        terminationMessagePath: \/dev\/termination-log\r\n        terminationMessagePolicy: File\r\n      dnsPolicy: ClusterFirst\r\n      restartPolicy: Always\r\n      schedulerName: default-scheduler\r\n      securityContext: {}\r\n      terminationGracePeriodSeconds: 30\r\nstatus:\r\n  availableReplicas: 3\r\n  conditions:\r\n  - lastTransitionTime: \"2022-07-20T13:57:15Z\"\r\n    lastUpdateTime: \"2022-07-20T13:57:17Z\"\r\n    message: ReplicaSet \"helloworld-7b8f9795b8\" has successfully progressed.\r\n    reason: NewReplicaSetAvailable\r\n    status: \"True\"\r\n    type: Progressing\r\n  - lastTransitionTime: \"2022-07-20T14:10:49Z\"\r\n    lastUpdateTime: \"2022-07-20T14:10:49Z\"\r\n    message: Deployment has minimum availability.\r\n    reason: MinimumReplicasAvailable\r\n    status: \"True\"\r\n    type: Available\r\n  observedGeneration: 2\r\n  readyReplicas: 3\r\n  replicas: 3\r\n  updatedReplicas: 3\r\n<\/code><\/pre>\n<p>\u8fd9\u4e2a\u8f93\u51fa\u7ed3\u679c\u7684spec-template-spec-containers-name\u662fPod\u7fa4\u7684\u540d\u79f0\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5b83\u662fhello-app\uff0c\u6240\u4ee5\u6211\u4eec\u4f7f\u7528\u5b83\u3002\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u8fdb\u884c\u6eda\u52a8\u66f4\u65b0\u3002<\/p>\n<pre class=\"post-pre\"><code>kubectl set image deploy\/[deployment\u540d] [\u4e0a\u8a18\u3067\u53d6\u5f97\u3057\u305fname]=[\u30a4\u30e1\u30fc\u30b8\u540d]\r\n\r\n=====tag2.0\u306ehelloworld Pod\u306e\u7acb\u3061\u4e0a\u3052=====\r\n$kubectl set image deploy\/helloworld helloworld=gcr.io\/google-samples\/hello-app:2.0\r\n\r\n=====\u9014\u4e2d\u7d50\u679c\u3092\u51fa\u529b=====\r\n$kubectl get pod\r\n\r\n#####\u51fa\u529b\u7d50\u679c#####\r\nNAME                          READY   STATUS        RESTARTS   AGE\r\nhelloworld-666776755c-4x8hl   1\/1     Running       0          2s\r\nhelloworld-666776755c-qpcdv   1\/1     Running       0          2s\r\nhelloworld-666776755c-qtvkh   0\/1     Pending       0          0s\r\nhelloworld-666776755c-tx254   1\/1     Running       0          2s\r\nhelloworld-7b8f9795b8-4fkmh   1\/1     Running       0          12m\r\nhelloworld-7b8f9795b8-hdppp   1\/1     Terminating   0          12m\r\nhelloworld-7b8f9795b8-p8qp6   1\/1     Running       0          11m\r\nhelloworld-7b8f9795b8-ph7b9   1\/1     Running       0          11m\r\n\r\n=====\u6700\u7d42\u7d50\u679c\u3092\u51fa\u529b=====\r\n$kubectl get pod\r\n\r\n#####\u51fa\u529b\u7d50\u679c#####\r\nNAME                          READY   STATUS    RESTARTS   AGE\r\nhelloworld-666776755c-4x8hl   1\/1     Running   0          2m42s\r\nhelloworld-666776755c-6cxnv   1\/1     Running   0          2m40s\r\nhelloworld-666776755c-qpcdv   1\/1     Running   0          2m42s\r\nhelloworld-666776755c-qtvkh   1\/1     Running   0          2m40s\r\nhelloworld-666776755c-tx254   1\/1     Running   0          2m42s\r\n<\/code><\/pre>\n<p>\u51fa\u529b\u7d50\u679c\u3092\u898b\u308b\u3053\u3068\u3067\u3001\u53e4\u3044helloworld\u304c\u5f90\u3005\u306b\u524a\u9664\u3055\u308c\u3001\u65b0\u3057\u3044helloworld\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u4eca\u56de\u306e\u51fa\u529b\u7d50\u679c\u3067\u306fPod\u3068\u3057\u3066\u5b58\u5728\u3057\u3066\u3044\u308b\u500b\u6570\u304c\u9014\u4e2d\u7d4c\u904e\u306e\u6642\u70b9\u30678\u500b\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u505c\u6b62\u9014\u4e2d\u306b\u4f5c\u6210\u304c\u884c\u308f\u308c\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u5b58\u5728\u3057\u3066\u3044\u308bPod\u306e\u500b\u6570\u304c\u5897\u3048\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u6700\u5927\u500b\u6570\u306f\u904b\u7528\u74b0\u5883\u306e\u30ea\u30bd\u30fc\u30b9\uff08\u30e1\u30e2\u30ea\u306a\u3069\uff09\u306b\u3088\u3063\u3066\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u6700\u5927\u3067\u4f55\u500b\u307e\u3067\u5b58\u5728\u3067\u304d\u308b\u306e\u304b\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u4e0b\u8a18\u8a18\u4e8b\u7b49\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<br \/>\nhttps:\/\/qiita.com\/Esfahan\/items\/f9c246e3c60fe8490af3<\/p>\n<p>\u307e\u305fRollback\u306b\u3064\u3044\u3066\u306f\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306b\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002\u52d5\u304d\u3068\u3057\u3066\u306f\u540c\u69d8\u3068\u306a\u308b\u305f\u3081\u3001\u78ba\u8a8d\u306f\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u305b\u3093\u3002<\/p>\n<pre class=\"post-pre\"><code>$deployment.apps\/helloworld rolled back\r\n\r\n#####\u5b9f\u884c\u7d50\u679c#####\r\ndeployment.apps\/helloworld rolled back\r\n<\/code><\/pre>\n<h3>\u25a0Kubernetes\u914d\u7f6e\u6587\u4ef6<\/h3>\n<p>\u3053\u3053\u307e\u3067\u306e\u8a71\u3067\u306f\u57fa\u672c\u7684\u306b\u30b3\u30de\u30f3\u30c9\u5185\u306bPod\u7b49\u306e\u60c5\u5831\u3092\u8a18\u8f09\u3059\u308b\u3088\u3046\u306b\u30b3\u30de\u30f3\u30c9\u3092\u8a18\u8f09\u3057\u3001\u90fd\u5ea6\u307b\u3057\u3044\u3082\u306e\u304c\u624b\u306b\u5165\u308b\u3088\u3046\u306b\u30b3\u30de\u30f3\u30c9\u306e\u4f8b\u3092\u6319\u3052\u3066\u3044\u304d\u307e\u3057\u305f\u3002\u4f8b\u3048\u3070\u4e00\u3064\u524d\u306e\u7bc0\u306eDeployment\u3092\u7acb\u3061\u4e0a\u3052\u3001\u305d\u306e\u5f8c\u306bPod\u6570\u3092\u5897\u3084\u3059\u3068\u3044\u3063\u305f\u3088\u3046\u306a\u66f8\u304d\u65b9\u304c\u5178\u578b\u4f8b\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u90fd\u5ea6\u884c\u3044\u305f\u3044\u3053\u3068\u3092\u547d\u4ee4\u3059\u308b\u3053\u3068\u3092\u547d\u4ee4\u7684\u3067\u3042\u308b\u3068\u3044\u3044\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u3067\u306fhow\u306b\u6ce8\u76ee\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u3053\u308c\u306b\u5bfe\u3057\u3066\u3001\u6700\u7d42\u7684\u306b\u5f97\u305f\u3044\u72b6\u614b\u3092\u8a18\u8f09\u3057\u3066\u6307\u5b9a\u3057\u3066\u4f5c\u6210\u3092\u884c\u3046\u3053\u3068\u3092\u5ba3\u8a00\u7684\u3068\u3044\u3044\u307e\u3059\u3002\u5ba3\u8a00\u7684\u306a\u5834\u5408\u306b\u306fwhat\u306b\u6ce8\u76ee\u3057\u3066\u4f5c\u6210\u3092\u884c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<br \/>\nKubernetes\u3067\u306f\u5ba3\u8a00\u7684\u306a\u8a18\u8ff0\u65b9\u6cd5\u3068\u3057\u3066\u3001yaml\u30d5\u30a1\u30a4\u30eb\uff08\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\uff09\u306b\u60c5\u5831\u3092\u8a18\u8f09\u3059\u308b\u3068\u3044\u3046\u65b9\u6cd5\u3092\u7528\u3044\u307e\u3059\u3002\u3053\u306eyaml\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u306b\u6700\u7d42\u7684\u306b\u5f97\u305f\u3044Pod\u7b49\u306e\u60c5\u5831(what)\u3092\u66f8\u304d\u8fbc\u3080\u3053\u3068\u3067\u76ee\u7684\u306e\u3082\u306e\u3092Kubernetes\u5074\u3067\u81ea\u52d5\u3067\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u3068\u304dKubernetes\u3067\u306f\u3069\u306e\u3088\u3046\u306b\uff08how\uff09\u306b\u4f5c\u308b\u306e\u304b\u306f\u8003\u3048\u308b\u5fc5\u8981\u306f\u306a\u304f\u306a\u308b\u305f\u3081\u3001\u3053\u306ehow\u3092\u62bd\u8c61\u5316\u3067\u304d\u308b\u3068\u3044\u3046\u70b9\u304c\u5ba3\u8a00\u7684\u306a\u65b9\u6cd5\u306e\u30e1\u30ea\u30c3\u30c8\u3068\u8a00\u3048\u307e\u3059\u3002<\/p>\n<p>\u4f8b\u3048\u3070\u4ee5\u4e0b\u306e2\u3064\u306f\u540c\u3058\u3053\u3068\u3092\u547d\u4ee4\u7684(kubectl run)\u306b\u8a18\u8f09\u3057\u305f\u3082\u306e\u3068\u5ba3\u8a00\u7684(yaml)\u306b\u8a18\u8f09\u3057\u305f\u3082\u306e\u306e\u4f8b\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>=====\u5ba3\u8a00\u7684=====\r\nkubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never Helloworld\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\">#=====\u547d\u4ee4\u7684=====<\/span>\r\n<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\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">null<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld<\/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\">env<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TEST_ENV<\/span>\r\n      <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Hello_World<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/hello-app:1.0<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n<\/code><\/pre>\n<p>\u547d\u4ee4\u7684\u306a\u8a18\u8f09\u304b\u3089\u5ba3\u8a00\u7684\u306a\u8a18\u8f09\u3078\u306e\u5909\u63db\u306f\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u901a\u3058\u3066\u884c\u3046\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl run --image gcr.io\/google-samples\/hello-app:1.0 --restart Never helloworld --dry-run -o yaml helloworld &gt; pod.yaml\r\n<\/code><\/pre>\n<p>\u3053\u306eyaml\u3092\u6307\u5b9a\u3057\u3066\u3001kubectl run\u3068\u540c\u3058Pod\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001kubectl apply\u30b3\u30de\u30f3\u30c9\u306b\u3066\u3001\u4f5c\u6210\u3057\u305fyaml\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl apply -f pod.yaml\r\n<\/code><\/pre>\n<p>\u6b21\u306byaml\u30d5\u30a1\u30a4\u30eb\u306e\u8a18\u8f09\u5185\u5bb9\u306b\u95a2\u3057\u3066\u307f\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5168\u3066\u3092\u3053\u3053\u306b\u8a18\u8f09\u3059\u308b\u3068\u3001\u91cf\u304c\u81a8\u5927\u306b\u306a\u308b\u306e\u3067\u4e00\u90e8\u306e\u307f\u8a18\u8f09\u3057\u3001\u4ed6\u306e\u7b87\u6240\u306b\u95a2\u3057\u3066\u306f\u516c\u5f0f\u30da\u30fc\u30b8\u7b49\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e0a\u8a18\u3067\u8a18\u8f09\u3057\u305fPod.yaml\u304c\u304a\u305d\u3089\u304f\u6700\u3082\u5358\u7d14\u306a\u5f62\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u5927\u96d1\u628a\u306a\u69cb\u6210\u3068\u3057\u3066\u306f\u540c\u3058\u3067\u3059\u3002<\/p>\n<p>\u3053\u306eyaml\u30d5\u30a1\u30a4\u30eb\u306e1\u6bb5\u76ee\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u304b\u3089\u898b\u3066\u3044\u304d\u307e\u3059\u3002\u5927\u304d\u304f4\u3064\u306e\u9805\u76ee\u304c\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u305d\u308c\u305e\u308c\u4e0b\u8a18\u306e\u3088\u3046\u306a\u610f\u5473\u3092\u6301\u3061\u307e\u3059\u3002<\/p>\n<div>\n<div class=\"post-table\">key\u610f\u5473apiVersion\u8868\u793a\u3055\u305b\u305f\u3044Kubernetes Object\u306eVersion\u3092\u6307\u5b9a\uff08\u4ee5\u4e0b\u53c2\u7167\uff09<br \/>\n<a id=\"reference-1dd3b966481a7134fc99\" href=\"https:\/\/qiita.com\/soymsk\/items\/69aeaa7945fe1f875822\">https:\/\/qiita.com\/soymsk\/items\/69aeaa7945fe1f875822<\/a>kindapiVersion \u3067\u6307\u5b9a\u3057\u305f Kubernetes Object \u30bb\u30c3\u30c8\u306e\u4e2d\u304b\u3089\u4f7f\u3044\u305f\u3044\u30bf\u30a4\u30d7\u3092\u6307\u5b9a<br \/>\n\u4f8b\uff1aPod\u3001ReplicaSet\u3001Deploymentmetadata\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u60c5\u5831\u3092\u6307\u5b9a \uff08\u540d\u524d\u306a\u3069\u4e00\u610f\u306b\u7279\u5b9a\u3059\u308b\u305f\u3081\u306e\u60c5\u5831spec\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u9069\u7528\u3059\u308b\uff08\u3057\u305f\u3044\uff09\u3082\u306e\u3092\u6307\u5b9a<\/div>\n<\/div>\n<p>\u4e0a\u8a18\u306e4\u9805\u76ee\u306fyaml\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u5fc5\u9808\u306e\u9805\u76ee\u3068\u306a\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u4f5c\u6210\u5bfe\u8c61\u306e\u7a2e\u985e\u306b\u3088\u3063\u30662\u6bb5\u76ee\u4ee5\u964d\u306f\u306b\u8a18\u8f09\u3059\u308b\u5185\u5bb9\u306f\u5909\u308f\u3063\u3066\u304f\u308b\u305f\u3081\u3001\u8a73\u7d30\u306a\u8aac\u660e\u306f\u5272\u611b\u3057\u307e\u3059\u3002\u4e0b\u8a18\u306e\u30da\u30fc\u30b8\u306a\u3069\u306b\u305d\u308c\u305e\u308c\u306e\u610f\u5473\u306b\u3064\u3044\u3066\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\nhttps:\/\/tanakakns.github.io\/kubernetes\/manifest\/<\/p>\n<p>\u4eca\u56de\u4f5c\u6210\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u3092\u8a18\u8f09\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div>\n<div class=\"post-table\">1\u6bb5\u76ee2\u6bb5\u76ee3\u6bb5\u76ee\u8aac\u660emetadata&#8212;-creationTimestamp-\u30ce\u30fc\u30c9\u306e\u4f5c\u6210\u6642\u523b\u6b8b\u3059\u304b\u306e\u8a2d\u5b9a-labels-Kubernetes \u30ce\u30fc\u30c9 \u30e9\u30d9\u30eb(\u4e0b\u8a18\u53c2\u7167)<br \/>\n<a href=\"https:\/\/kubernetes.io\/ja\/docs\/concepts\/overview\/working-with-objects\/labels\/\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/kubernetes.io\/ja\/docs\/concepts\/overview\/working-with-objects\/labels\/<\/a>-name-namespace\u5185\u3067\u4e00\u610f\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u8a2d\u5b9aspec&#8212;-containers-\u30b3\u30f3\u30c6\u30ca\u306e\u4ed5\u69d8\u3092\u8a2d\u5b9a\u3059\u308b&#8211;env\u74b0\u5883\u5909\u6570\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u6307\u5b9a\u3059\u308b&#8211;imagedocker\u30a4\u30e1\u30fc\u30b8\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3068\u30bf\u30b0&#8211;ports\u30dd\u30c3\u30c9\u5916\u90e8\u304b\u3089\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3046\u3051\u3068\u308b\u305f\u3081\u306b\u958b\u3044\u305f\u30dd\u30fc\u30c8\u306e\u30ea\u30b9\u30c8<\/div>\n<\/div>\n<h3>\u25a0Kubernetes\u306e\u30b9\u30c8\u30ec\u30fc\u30b8<\/h3>\n<h4>\u25b6\u914d\u7f6e\u56fe (Pei Zhi Tu)<\/h4>\n<p>Config Map\u3068\u3044\u3046\u30ea\u30bd\u30fc\u30b9\u3092\u7528\u3044\u308b\u3053\u3068\u3067\u3001\u74b0\u5883\u5909\u6570\u306a\u3069\u3092Key Value\u30da\u30a2\u3067\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002Config Map\u3067\u306f\u8a2d\u5b9a\u3057\u305f\u74b0\u5883\u5909\u6570\u3092volume\u3068\u3057\u3066Pod\u306b\u30de\u30a6\u30f3\u30c8\u3092\u884c\u3044\u307e\u3059\u3002<br \/>\n\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\u306f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5185\u306espec\u306e\u4e2d\u306benv\u3068\u3044\u3046\u9805\u76ee\u3092\u8a2d\u3051\u3066\u3001\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u5834\u5408\u5909\u6570\u306e\u518d\u5229\u7528\u304c\u3067\u304d\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3057\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u70b9\u3092Config Map\u3092\u7528\u3044\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u5177\u4f53\u7684\u306b\u3069\u306e\u3088\u3046\u306b\u4f5c\u6210\u3092\u884c\u3046\u306e\u304b\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3059\u3002\u307e\u305a\u306fConfig Map\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306e\u4f5c\u6210\u3092\u884c\u3044\u307e\u3059\u3002\u3053\u308c\u306fkubectl create\u30b3\u30de\u30f3\u30c9\u306b\u3066\u3001configmap\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u53ef\u80fd\u3067\u3059\u3002\u4e0b\u8a18\u306e\u4f8b\u3067\u306fyaml\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u5834\u5408TEST_ENV\u3068\u3044\u3046\u74b0\u5883\u5909\u6570\u306e\u4e2d\u306bHello_world\u3068\u3044\u3046\u6587\u5b57\u5217\u3092\u683c\u7d0d\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>$kubectl create configmap my-config --from-literal=TEST_ENV=Hello_World --dry-run -o yaml &gt; configmap.yaml \r\n<\/code><\/pre>\n<p>\u4e0a\u8a18\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u4f5c\u6210\u3057\u305fyaml\u30d5\u30a1\u30a4\u30eb\u304c\u4e0b\u8a18\u306e\u3082\u306e\u306b\u306a\u308a\u307e\u3059\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\">data<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">TEST_ENV<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Hello_World<\/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\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">null<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-config<\/span>\r\n<\/code><\/pre>\n<p>\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5728yaml\u6587\u4ef6\u7684\u7b2c\u4e00\u884c\u521b\u5efa\u4e86\u4e00\u4e2a\u540d\u4e3a&#8221;data&#8221;\u7684\u90e8\u5206\uff0c\u8fd9\u662f\u6307\u5b9a\u8981\u521b\u5efa\u7684\u8282\u70b9\u6240\u5177\u6709\u7684\u6570\u636e\u7684\u9879\u76ee\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7b80\u5355\u5730\u5c06\u952e\u201cTEST_ENV\u201d\u5bf9\u5e94\u5230\u503c\u201cHello_world\u201d\u3002<\/p>\n<p>\u901a\u8fc7\u4f7f\u7528\u521b\u5efa\u7684 yaml \u6587\u4ef6\u6765\u751f\u6210\u8282\u70b9\uff08kubectl apply\uff09\uff0c\u5982\u679c\u8981\u4f7f\u7528\u73af\u5883\u53d8\u91cf\uff0c\u53ef\u4ee5\u5728\u521b\u5efa Pod \u65f6\u5f15\u7528\u8be5 Config Map \u6765\u4f7f\u7528\u3002<br \/>\n\u901a\u8fc7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u8bb0\u5f55\u5728\u7528\u4e8e\u751f\u6210 Pod \u7684 yaml \u6587\u4ef6\u4e2d\u6765\u53cd\u6620 Config Map \u7684\u4fe1\u606f\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\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">null<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld<\/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\">env<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"c1\">#Pod\u5185\u3067\u5229\u7528\u3059\u308b\u74b0\u5883\u5909\u6570\u540d\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TEST_ENV_POD<\/span>\r\n      <span class=\"c1\">#valueFrom\u306b\u3066name\u3067\u6307\u5b9a\u3057\u305f\u74b0\u5883\u5909\u6570\u306b\u4f55\u3092\u5165\u308c\u308b\u306e\u304b\u3092\u6307\u5b9a<\/span>\r\n      <span class=\"na\">valueFrom<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"c1\">#configMap\u304b\u3089\u5f15\u7528\u3059\u308b\u3053\u3068\u3092\u6307\u5b9a<\/span>\r\n        <span class=\"na\">configMapKeyRef<\/span><span class=\"pi\">:<\/span> \r\n          <span class=\"c1\">#\u540d\u524d\u304cmy-config(\u4e0a\u3067\u4f5c\u6210\u3057\u305f)\u3068\u3044\u3046configMap\u3092\u6307\u5b9a<\/span>\r\n          <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-config<\/span>\r\n          <span class=\"c1\">#name\u3067\u6307\u5b9a\u3057\u305fconfigMap\u5185\u3067key\u304cTEST_ENV\u3068\u306a\u3063\u3066\u3044\u308b\u74b0\u5883\u5909\u6570\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u3092\u6307\u5b9a<\/span>\r\n          <span class=\"na\">key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TEST_ENV<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/hello-app:1.0<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n<\/code><\/pre>\n<p>\u5bf9\u4e8e\u4e0a\u8ff0\u7684Pod.yaml\uff0c\u5b83\u662f\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u540d\u4e3ahelloworld\u7684Pod\u7684yaml\u6587\u4ef6\u3002\u5728helloworld\u5185\u90e8\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u540d\u4e3aTEST_ENV_POD\u7684\u73af\u5883\u53d8\u91cf\uff0c\u5e76\u5c06\u5176\u503c\u8bbe\u7f6e\u4e3a\u5b58\u50a8\u5728Config Map\u7684TEST_ENV\u4e2d\u7684\u503c\uff08\u5373my-config\uff09\u3002\u901a\u8fc7\u8fd9\u79cd\u6307\u5b9a\u65b9\u5f0f\uff0c\u53ef\u4ee5\u5728\u5176\u4ed6Pod\u4e2d\u4e5f\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684\u65b9\u5f0f\u8fdb\u884c\u5229\u7528\uff0c\u4ece\u800c\u63d0\u9ad8\u4e86\u53ef\u91cd\u7528\u6027\u3002<\/p>\n<p>\u7d9a\u3044\u3066Pod\u306bVolume\u306e\u30de\u30a6\u30f3\u30c8\u3092\u884c\u3046\u65b9\u6cd5\u3092\u898b\u3066\u3044\u304d\u307e\u3059\u3002Pod\u306f\u7ba1\u7406\u4e0a\u306e\u57fa\u672c\u5358\u4f4d\u306b\u306a\u3063\u3066\u3044\u3066\u3001\u4eee\u60f3NetworkInterface(IP\u3001\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0)\u3092\u5171\u6709\u3059\u308b\u3068\u3044\u3053\u3068\u3092\u4e0a\u8a18\u3067\u8a18\u8f09\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u308c\u306f\u3064\u307e\u308aPod\u81ea\u4f53\u304cKubernetes\u4e0a\u3067\u306f\u4eee\u60f3\u30db\u30b9\u30c8\u306e\u3088\u3046\u306b\u8003\u3048\u3089\u308c\u308b\u3053\u3068\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306aPod\u306bvolume\u3068\u3057\u3066\u3001Config Map\u3092\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002Config Map\u3067\u306f\u74b0\u5883\u5909\u6570\u3060\u3051\u3067\u306a\u304f\u3001Key-Value\u30da\u30a2\u3092\u4fdd\u5b58\u3057\u3066\u3001\u305d\u306e\u30c7\u30fc\u30bf\u3092\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066volume\u3078\u306e\u30de\u30a6\u30f3\u30c8\u3092\u884c\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u4e0a\u8a18\u3067\u898b\u305f\u3082\u306e\u3067\u306fConfig\u3000Map\u306b\u4fdd\u5b58\u3057\u305f\u30c7\u30fc\u30bf\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u547c\u3073\u51fa\u3057\u3066\u3044\u307e\u3057\u305f\u3002<\/p>\n<p>\u3053\u308c\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306bPod.yaml\u30d5\u30a1\u30a4\u30eb\u3092\u4e0b\u8a18\u306e\u3088\u3046\u306b\u4fee\u6b63\u3057\u307e\u3059\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\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">null<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-configmap-volume<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-configmap-volume<\/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\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/hello-app:1.0<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-configmap-volume<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n    <span class=\"na\">resoueces<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{}<\/span>\r\n    <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"c1\">#volume\u540d\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">name:my-config-volume<\/span>\r\n      <span class=\"s\">#volume\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u6307\u5b9a<\/span>\r\n      <span class=\"s\">mountPath<\/span><span class=\"err\">:<\/span> <span class=\"s\">\/my-config\/TEST_ENV<\/span>\r\n    <span class=\"na\">volume<\/span><span class=\"pi\">:<\/span>\r\n     <span class=\"c1\">#\u4f5c\u6210\u3059\u308bvolume\u540d\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-config-volume<\/span>\r\n      <span class=\"na\">configMap<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"c1\">#Config Map\u540d\u3092\u6307\u5b9a<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-config<\/span>\r\n        <span class=\"na\">items<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"c1\">#Config Map\u5185\u306b\u3042\u308bKey\u306e\u540d\u524d\u3092\u6307\u5b9a<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TEST_ENV<\/span>\r\n          <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">keys<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306eyaml\u30d5\u30a1\u30a4\u30eb\u3067\u306fvolume\u306b\u95a2\u3057\u3066\u3001my-config\u3068\u3044\u3046\u540d\u524d\u306eConfig Map\u3092my-config-volume\u3068\u3044\u3046\u540d\u524d\u306evolume\u3067\u6307\u5b9a\u3057\u3001\u3053\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3092\u884c\u3044\u3001\u305d\u306e\u969b\u306b\u5bfe\u5fdc\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u30d1\u30b9\u540d\u3092\/my-config\/TEST_ENV\u306b\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u30d5\u30a1\u30a4\u30eb\u5316\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u5909\u66f4\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u3044\u3046\u30e1\u30ea\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<h4>\u25b6\u6c38\u4e45\u7684\u5927\u5c0f<\/h4>\n<p>\u7d9a\u3044\u3066\u6c38\u7d9a Volumme(Persistest Volume)\u306b\u3064\u3044\u3066\u307f\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u3067\u306f\u30c7\u30fc\u30bf\u306fPod\u5185\u306b\u3042\u308bVolume\u306b\u5909\u66f4\u3092\u884c\u3046\u3053\u3068\u3067\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001Pod\u304c\u6d88\u3048\u305f\u5834\u5408\u306b\u306f\u30c7\u30fc\u30bf\u3082\u6d88\u3048\u307e\u3059\u3002\u305d\u308c\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ef\u30a4\u30c9\u306b\u3042\u308bNode\u4e0a\u306b\u5b58\u5728\u3059\u308bPersistest Volume\u306b\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u884c\u3044\u307e\u3059\u3002\u5b9f\u969b\u52d5\u304d\u3068\u3057\u3066\u306f\u3001\u8907\u6570\u306eNode\u304c\u3042\u308b\u30af\u30e9\u30b9\u30bf\u5185\u306b\u5404Node\u304c\u5171\u6709\u3067\u304d\u308bvolume(Persistest Volume)\u3092\u4f5c\u6210\u3057\u3001\u5404Node\u304c\u5fc5\u8981\u306a\u5206\u3060\u3051\u3053\u306e\u5171\u901avolume\u306b\u8981\u6c42\u3092\u884c\u3044\u3001\u5f97\u305fvolume\u3092\u8981\u6c42\u5143\u306eNode\u3067\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3068\u3044\u3046\u3082\u306e\u3067\u3059\u3002<br \/>\n\u305d\u306e\u305f\u3081\u3001\u5171\u901a\u7684\u306avolume\u3092\u5b9a\u7fa9\u3059\u308byaml\u30d5\u30a1\u30a4\u30eb(pv.yaml)\u3068\u8981\u6c42\u4e8b\u9805\u3092\u8a18\u8f09\u3057\u305fyaml\u30d5\u30a1\u30a4\u30eb(pvc.yaml)\u3092\u7528\u610f\u3057\u3001Pod(Node)\u4f5c\u6210\u6642\u306b\u7528\u3044\u308byaml\u30d5\u30a1\u30a4\u30eb(Pod.yaml)\u306b\u306f\u3001\u3053\u306e\u8981\u6c42\u4e8b\u9805\u3092\u53c2\u7167\u3059\u308b\u3088\u3046\u8a18\u8f09\u3092\u884c\u3044\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30f3\u30d7\u30eb\u306f\u4e0b\u8a18\u306e\u901a\u308a\u3067\u3059\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\">PersistentVolume<\/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\">pv<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n <span class=\"na\">storageClassName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">manual<\/span>\r\n <span class=\"c1\">#volume\u306e\u30b5\u30a4\u30ba\u3092\u6307\u5b9a<\/span>\r\n <span class=\"na\">capacity<\/span><span class=\"pi\">:<\/span> <span class=\"s\">100M<\/span>\r\n <span class=\"c1\">#\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u7bc4\u56f2\u3092\u6307\u5b9a<\/span>\r\n <span class=\"na\">accessModes<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ReadWriteOnce<\/span>\r\n <span class=\"na\">hostPath<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\">#Node\u4e0a\u306e\u30d1\u30b9\u3092\u6307\u5b9a<\/span>\r\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/mnt\/pvc\"<\/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\">PersistentVolumeClaim<\/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\">pvc<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n <span class=\"na\">storageClassName<\/span><span class=\"pi\">:<\/span> <span class=\"s\">manual<\/span>\r\n <span class=\"c1\">#\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u7bc4\u56f2\u3092\u6307\u5b9a<\/span>\r\n <span class=\"na\">accessModes<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ReadWriteOnce<\/span>\r\n <span class=\"na\">resources<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"c1\">#\u8981\u6c42\u4e8b\u9805\u3092\u6307\u5b9a<\/span>\r\n  <span class=\"na\">requests<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"c1\">#\u307b\u3057\u3044\u5bb9\u91cf\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"na\">storage<\/span><span class=\"pi\">:<\/span> <span class=\"s\">10M<\/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\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">creationTimestamp<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">null<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-pvc<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-pvc<\/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\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gcr.io\/google-samples\/hello-app:1.0<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">helloworld-pvc<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n    <span class=\"na\">resoueces<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{}<\/span>\r\n    <span class=\"na\">volumeMounts<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"c1\">#volume\u540d\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">name:my-pv<\/span>\r\n      <span class=\"s\">#volume\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u6307\u5b9a<\/span>\r\n      <span class=\"s\">mountPath<\/span><span class=\"err\">:<\/span> <span class=\"s\">\/mnt\/pvc<\/span>\r\n    <span class=\"na\">volume<\/span><span class=\"pi\">:<\/span>\r\n     <span class=\"c1\">#\u4f5c\u6210\u3059\u308bvolume\u540d\u3092\u6307\u5b9a<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-pv<\/span>\r\n      <span class=\"c1\">#\u6c38\u7d9avolume\u8981\u6c42\u540d\u3092\u6307\u5b9a<\/span>\r\n      <span class=\"na\">persistentVolumeClaim<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">pvc<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u8981\u6267\u884c\u7684\u8bdd\uff0c\u9700\u8981\u6309\u7167\u4e0a\u8ff0\u7684\u987a\u5e8f\u4f7f\u7528kubectl apply\u9010\u4e2a\u6267\u884c\u8fd93\u4e2a\u6587\u4ef6\uff0c\u4f46\u5728\u6b64\u4e4b\u524d\uff0c\u9700\u8981\u5728\u96c6\u7fa4\u4e0a\u521b\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\u3002\u56e0\u6b64\uff0c\u5982\u679c\u4f7f\u7528minikube\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u8fde\u63a5\u5230\u96c6\u7fa4\u5e76\u8fdb\u884c\u521b\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code>$minikube ssh\r\n$sudo mkdir mnt\/pvc\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u521d \u4f5c\u4e3a\u4e4b\u524d\u5173\u4e8eDocker\u5b66\u4e60\u7684\u5ef6\u7eed\uff0c\u6211\u5c06\u603b\u7ed3\u5b66\u4e60Kubernetes\u7684\u5185\u5bb9\u3002\u6211\u8ba4\u4e3a\u6211\u5df2\u7ecf\u6db5\u76d6\u4e86Kuber [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35502","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>\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9 - 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\/\u5173\u4e8ekubernetes\u7684\u76f8\u5173\u5185\u5bb9\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9\" \/>\n<meta property=\"og:description\" content=\"\u6700\u521d \u4f5c\u4e3a\u4e4b\u524d\u5173\u4e8eDocker\u5b66\u4e60\u7684\u5ef6\u7eed\uff0c\u6211\u5c06\u603b\u7ed3\u5b66\u4e60Kubernetes\u7684\u5185\u5bb9\u3002\u6211\u8ba4\u4e3a\u6211\u5df2\u7ecf\u6db5\u76d6\u4e86Kuber [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ekubernetes\u7684\u76f8\u5173\u5185\u5bb9\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-12T21:15:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T17:27:32+00:00\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 \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\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/\",\"name\":\"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-10-12T21:15:46+00:00\",\"dateModified\":\"2024-04-28T17:27:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9\"}]},{\"@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\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9 - 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\/\u5173\u4e8ekubernetes\u7684\u76f8\u5173\u5185\u5bb9\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9","og_description":"\u6700\u521d \u4f5c\u4e3a\u4e4b\u524d\u5173\u4e8eDocker\u5b66\u4e60\u7684\u5ef6\u7eed\uff0c\u6211\u5c06\u603b\u7ed3\u5b66\u4e60Kubernetes\u7684\u5185\u5bb9\u3002\u6211\u8ba4\u4e3a\u6211\u5df2\u7ecf\u6db5\u76d6\u4e86Kuber [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ekubernetes\u7684\u76f8\u5173\u5185\u5bb9\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-12T21:15:46+00:00","article_modified_time":"2024-04-28T17:27:32+00:00","author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"12 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/","name":"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-10-12T21:15:46+00:00","dateModified":"2024-04-28T17:27:32+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5173\u4e8eKubernetes\u7684\u76f8\u5173\u5185\u5bb9"}]},{"@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\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ekubernetes%e7%9a%84%e7%9b%b8%e5%85%b3%e5%86%85%e5%ae%b9\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35502","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=35502"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35502\/revisions"}],"predecessor-version":[{"id":71645,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35502\/revisions\/71645"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=35502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=35502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=35502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}