{"id":36160,"date":"2023-10-12T23:21:30","date_gmt":"2023-07-01T15:00:18","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/"},"modified":"2024-05-04T03:56:53","modified_gmt":"2024-05-03T19:56:53","slug":"kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/","title":{"rendered":"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c"},"content":{"rendered":"<h1>\u7b80\u800c\u8a00\u4e4b<\/h1>\n<p>\u53c2\u8003\u7684\u4eb2\u624b\u5b9e\u8df5<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e24\u4e2a\u7f51\u9875\u7684\u94fe\u63a5\uff1a<\/p>\n<p>1. https:\/\/www.nic.ad.jp\/ja\/materials\/iw\/2018\/proceedings\/h2\/h2-takara-3.pdf<br \/>\n2. https:\/\/www.nic.ad.jp\/ja\/materials\/iw\/2018\/proceedings\/h2\/h2-takara-4.pdf<\/p>\n<h1>Kubernetes \u662f\u4ec0\u4e48\uff1f<\/h1>\n<p>Kubernetes\u662f\u4e00\u79cd\u7528\u4e8e\u81ea\u52a8\u5316\u64cd\u4f5cLinux\u5bb9\u5668\u7684\u5f00\u6e90\u8f6f\u4ef6\uff08OSS\uff09\uff0c\u4e5f\u88ab\u79f0\u4e3a&#8221;k8s&#8221;\u6216&#8221;kube&#8221;\u3002<br \/>\n\u5728\u65e5\u672c\uff0c\u5b83\u7684\u53d1\u97f3\u4e3a&#8221;\u30af\u30fc\u30d0\u30cd\u30c6\u30b9&#8221;\u6216&#8221;\u30af\u30fc\u30d9\u30cd\u30c6\u30a3\u30b9&#8221;\u3002<br \/>\n\u901a\u8fc7\u4f7f\u7528Kubernetes\uff0c\u60a8\u53ef\u4ee5\u81ea\u52a8\u5316\u5e94\u7528\u7a0b\u5e8f\u7684\u90e8\u7f72\u548c\u6269\u5c55\u7b49\u64cd\u4f5c\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u5b83\u53ef\u4ee5\u5c06\u8fd0\u884cLinux\u5bb9\u5668\u7684\u4e3b\u673a\u96c6\u7fa4\u5316\u3002<\/p>\n<h3>\u4e2d\u6587\u4e2d\u8981\u6c42\u8eab\u4efd\u3001\u8077\u696d\u7b49\u4fe1\u606f\u7684\u5217\u8868\u3002<\/h3>\n<p>\u6211\u5c06\u6574\u7406\u5e38\u89c1\u7684\u672f\u8bed\u4ee5\u5907\u67e5\u9605\u3002<br \/>\n\u60a8\u65e0\u987b\u8bb0\u4f4f\u8fd9\u91cc\u7684\u6240\u6709\u5185\u5bb9\uff0c\u5f53\u5728\u5b9e\u8df5\u4e2d\u9047\u5230\u4e0d\u719f\u6089\u7684\u672f\u8bed\u65f6\uff0c\u8bf7\u53c2\u8003\u6b64\u5904\u3002<\/p>\n<p>Kubernetes \u7684\u7ec4\u6210\u8981\u7d20<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30dd\u30c3\u30c9(Pod)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30dd\u30c3\u30c9\u306f\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u3002\u30dd\u30c3\u30c9\u5358\u4f4d\u3067\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u30fb\u7834\u68c4\u3055\u308c\u307e\u3059\u3002\u307e\u305f\u3001\u30dd\u30c3\u30c9\u306f\u4e00\u6642\u7684\u306a\u5b58\u5728\u3067\u3042\u308b\u305f\u3081\u518d\u8d77\u52d5\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5404\u30dd\u30c3\u30c9\u306b\u306f\u4e00\u610f\u306e\u4eee\u60f3NIC\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u307e\u305f\u3001\u540c\u3058\u30dd\u30c3\u30c9\u5185\u306e\u30b3\u30f3\u30c6\u30ca\u540c\u58eb\u306fIP\u30a2\u30c9\u30ec\u30b9\u3092\u5171\u6709\u3057\u3001localhost \u3067\u901a\u4fe1\u3067\u304d\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ce\u30fc\u30c9(Node)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Docker\u30b3\u30f3\u30c6\u30ca\u3092\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d0\u306e\u3053\u3068\u3067\u3059\u3002\u8907\u6570\u306e\u30dd\u30c3\u30c9\u3092\u6301\u3061\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30de\u30b9\u30bf\u30fc\u30ce\u30fc\u30c9(Master Node)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5404\u30ce\u30fc\u30c9\u306e\u7ba1\u7406\u3092\u884c\u3046\u30ce\u30fc\u30c9\u306e\u3053\u3068\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30af\u30e9\u30b9\u30bf\u30fc(Cluster)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u3084\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8a2d\u5b9a\u306a\u3069\u3092\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3057\u305f\u3082\u306e\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9(Namespace)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3092\u3064\u3051\u3066\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u4eee\u60f3\u5316\u3067\u304d\u308b\u3082\u306e\u3067\u3059\u3002\u3042\u3089\u304b\u3058\u3081\u300cdefault\u300d\u300cdocker\u300d\u300ckube-public\u300d\u306a\u3069\u306e\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001WEB\u30b5\u30fc\u30d0\u7fa4\u3001DB\u30b5\u30fc\u30d0\u7fa4\u3001\u306a\u3069\u306e\u3088\u3046\u306a\u5206\u3051\u65b9\u304c\u60f3\u5b9a\u3067\u304d\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8(Context)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubernetes \u306e\u74b0\u5883\u3092\u5206\u3051\u308b\u305f\u3081\u306e\u5b9a\u7fa9\u3067\u3059\u3002 \u30af\u30e9\u30b9\u30bf\u30fc\u3001\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u3082\u306e\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d3\u30b9(Service)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30dd\u30c3\u30c9\u306b\u5bfe\u3057\u3066\u30af\u30e9\u30b9\u30bf\u5916\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u306f\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u306b\u306f\u30af\u30e9\u30b9\u30bf\u306e\u4ee3\u8868\u3068\u306a\u308bIP\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/ul>\n<p>\u4e3a\u4e86\u63a7\u5236\u4e0a\u8ff0\u8981\u7d20\u7684\u51fa\u73b0<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30dd\u30c3\u30c9\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u306f\u69d8\u3005\u306a\u7a2e\u985e\u304c\u3042\u308a\u3001\u7279\u6027\u306b\u3088\u3063\u3066\u4f7f\u3044\u5206\u3051\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8(Deployment)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u6700\u3082\u826f\u304f\u4f7f\u308f\u308c\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u3059\u3002\u826f\u304f\u3042\u308bWEB\u30b5\u30fc\u30d0\u306a\u3069\u306e\u7528\u9014\u3067\u306f\u3053\u3061\u3089\u3092\u4f7f\u3044\u307e\u3059\u3002\u30dd\u30c3\u30c9\u6570\u3092\u30b9\u30b1\u30fc\u30eb\u3057\u305f\u308a\u3001\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3092\u3057\u305f\u308a\u3001\u6c42\u3081\u3089\u308c\u308b\u57fa\u672c\u7684\u306a\u52d5\u4f5c\u3092\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Service<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">ConfigMap<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u3067\u4f7f\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Secret<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u3067\u4f7f\u7528\u3055\u308c\u308b\u79d8\u533f\u60c5\u5831\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Volume<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30f3\u30c6\u30ca\u306b\u5272\u308a\u5f53\u3066\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Job<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b8\u30e7\u30d6\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">CronJob<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3055\u308c\u308b\u30b8\u30e7\u30d6\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/ul>\n<p>\u5176\u4ed6\u672f\u8bed<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30de\u30cb\u30d5\u30a7\u30b9\u30c8<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Kubernetes \u306e\u69cb\u6210\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u5f62\u5f0f(yaml\u30d5\u30a1\u30a4\u30eb)\u306e\u3053\u3068\u3067\u3059\u3002<\/ul>\n<h1>\u8981\u5728 Mac \u4e0a\u4f7f\u7528 Kubernetes<\/h1>\n<p>\u5728 Mac \u4e0a\u4f7f\u7528 Kubernetes \u6709\u4ee5\u4e0b\u7684\u65b9\u6cd5\u3002\u6bcf\u4e2a\u65b9\u6cd5\u90fd\u6709\u4f18\u70b9\u548c\u7f3a\u70b9\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Docker for Mac \u306e Kubernetes \u3092\u4f7f\u3046<\/ul>\n<\/li>\n<\/ul>\n<p>\u65e2\u306b Docker for Mac \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u6700\u901f\u306e\u65b9\u6cd5\u3067\u3059\u3002<br \/>\nDocker for Mac \u81ea\u4f53\u304c\u91cd\u3044\u3068\u3044\u3046\u8a71\u304c\u3042\u308a\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u61f8\u5ff5\u3055\u308c\u307e\u3059\u3002<br \/>\n\u307e\u305f\u3001Kubernetes \u306e\u69cb\u6210\u306b\u9650\u308a\u304c\u3042\u308b\u3089\u3057\u3044\u3067\u3059\u3002<\/p>\n<p>Minikube \u3092\u4f7f\u3046<\/p>\n<p>\u81ea\u52d5\u3067 Vagrant \u306e\u4eee\u60f3\u74b0\u5883\u3092\u305f\u3066\u3001Kubernetes \u3092\u5b9f\u884c\u3057\u3066\u304f\u308c\u307e\u3059\u3002<br \/>\n\u3088\u308a\u5b8c\u5168\u306b\u8fd1\u3044 Kubernetes \u74b0\u5883\u3092\u518d\u73fe\u3057\u3066\u304f\u308c\u308b\u3089\u3057\u3044\u3067\u3059\u3002<\/p>\n<h1>Docker for Mac \u7248\u5b9e\u8df5\u6307\u5bfc<\/h1>\n<h3>\u603b\u7ed3<\/h3>\n<p>\u5982\u679c\u60a8\u5df2\u7ecf\u5b89\u88c5\u4e86 Docker for Mac\uff0c\u5219\u4f7f\u7528 Docker for Mac \u7684 Kubernetes \u662f\u66f4\u5feb\u901f\u7684\u9009\u62e9\u3002<\/p>\n<p>Kubernetes \u63d0\u4f9b\u4e86\u4e00\u4e2a\u53ef\u4ee5\u5728\u56fe\u5f62\u754c\u9762\u4e0a\u67e5\u770b\u5bb9\u5668\u72b6\u6001\u7684\u4eea\u8868\u76d8\u529f\u80fd\u3002<br \/>\n\u8ba9\u6211\u4eec\u5728\u89c2\u5bdf\u72b6\u6001\u7684\u540c\u65f6\u7406\u89e3\u66f4\u6df1\u5165\u4e00\u4e9b\u3002<\/p>\n<h3>\u524d\u63d0 t\u00ed)<\/h3>\n<ul class=\"post-ul\">OSX \u304c Docker for Mac 18.06 \u4ee5\u4e0a\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u3053\u3068<\/ul>\n<h3>\u5b89\u88c5<\/h3>\n<p>\u8bf7\u6309\u7167\u4ee5\u4e0b\u53c2\u8003\u6587\u6863\u5b89\u88c5Docker for Mac\uff1a<br \/>\nhttps:\/\/docs.docker.com\/docker-for-mac\/install\/<\/p>\n<h3>\u542f\u7528Kubernetes<\/h3>\n<p>\u6253\u5f00Docker\u83dc\u5355\uff0c\u70b9\u51fb\u201c\u504f\u597d\u8bbe\u7f6e\u201d\u3002<br \/>\n\u4ece\u663e\u793a\u7684\u8bbe\u7f6e\u83dc\u5355\u4e2d\u9009\u62e9\u201cKubernetes\u201d\uff0c\u5373\u53ef\u8fdb\u5165\u5982\u4e0b\u754c\u9762\u3002<\/p>\n<p>\u70b9\u51fb\u542f\u7528Kubernetes\u3001\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5c06Docker\u5806\u53e0\u90e8\u7f72\u5230Kubernetes\u3001\u663e\u793a\u7cfb\u7edf\u5bb9\u5668\uff08\u9ad8\u7ea7\uff09\u8fd9\u4e09\u4e2a\u9009\u9879\uff0c\u7136\u540e\u70b9\u51fb&#8221;\u5e94\u7528\u5e76\u91cd\u542f&#8221;\u3002\u5728\u83dc\u5355\u680f\u4e2d\u4f1a\u51fa\u73b0&#8221;Kubernetes\u6b63\u5728\u8fd0\u884c&#8221;\u7684\u9879\u76ee\uff0c\u7a0d\u7b49\u7247\u523b\u786e\u8ba4\u53d8\u4e3a\u7eff\u8272\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u5728\u7ec8\u7aef\u4e2d\u5c06\u4e0a\u4e0b\u6587\u5207\u6362\u5230&#8221;docker-for-desktop&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl config use-context docker-for-desktop\r\nSwitched to context <span class=\"s2\">\"docker-for-desktop\"<\/span><span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u6765\u89c2\u5bdf\u4e00\u4e0b\u4e0a\u4e0b\u6587\u7684\u72b6\u6001\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u786e\u8ba4\u5b83\u5df2\u7ecf\u6210\u4e3a\u6307\u5b9a\u7684\u4e0a\u4e0b\u6587\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl config get-contexts\r\nCURRENT   NAME                 CLUSTER          AUTHINFO         NAMESPACE\r\n          docker-desktop       docker-desktop   docker-desktop\r\n<span class=\"k\">*<\/span>         docker-for-desktop   docker-desktop   docker-desktop \r\n<\/code><\/pre>\n<p>\u60a8\u53ef\u4ee5\u901a\u8fc7\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u786e\u8ba4\u7fa4\u96c6\u3001\u4e0a\u4e0b\u6587\u7b49\u5f53\u524d\u7684\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl config view\r\napiVersion: v1\r\nclusters:\r\n- cluster:\r\n    certificate-authority-data: DATA+OMITTED\r\n    server: https:\/\/kubernetes.docker.internal:6443\r\n  name: docker-desktop\r\ncontexts:\r\n- context:\r\n    cluster: docker-desktop\r\n    user: docker-desktop\r\n  name: docker-desktop\r\n- context:\r\n    cluster: docker-desktop\r\n    user: docker-desktop\r\n  name: docker-for-desktop\r\ncurrent-context: docker-for-desktop\r\nkind: Config\r\npreferences: <span class=\"o\">{}<\/span>\r\n<span class=\"nb\">users<\/span>:\r\n- name: docker-desktop\r\n  user:\r\n    client-certificate-data: REDACTED\r\n    client-key-data: REDACTED\r\n<\/code><\/pre>\n<p>\u5982\u679c\u60a8\u6709\u5174\u8da3\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u6765\u786e\u8ba4Docker\u955c\u50cf\u7684\u751f\u6210\u72b6\u6001\uff0c\u5bb9\u5668\u662f\u5426\u5df2\u542f\u52a8\u4ee5\u53caKubernetes\u7684Pods\u662f\u5426\u5df2\u521b\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>docker images\r\n<span class=\"nv\">$ <\/span>docker ps <span class=\"nt\">-a<\/span>\r\n<span class=\"nv\">$ <\/span>kubectl get pods <span class=\"nt\">--all-namespaces<\/span>\r\n<\/code><\/pre>\n<h3>\u542f\u7528\u4eea\u8868\u76d8\u3002<\/h3>\n<p>\u5982\u679c\u542f\u7528\u4eea\u8868\u677f\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u56fe\u5f62\u7528\u6237\u754c\u9762\u67e5\u770b\u50cf\u4e0a\u9762\u7684\u547d\u4ee4\u4e2d\u786e\u8ba4\u7684 Kubernetes \u72b6\u6001\u3002<br \/>\n\u6709\u5173\u4eea\u8868\u677f\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u94fe\u63a5\uff1a<br \/>\nhttps:\/\/github.com\/kubernetes\/dashboard<\/p>\n<p>\u9996\u5148\uff0c\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5c06\u4eea\u8868\u677f\u542f\u7528\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v2.0.0-rc6\/aio\/deploy\/recommended.yaml\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u542f\u52a8\u4eea\u8868\u76d8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl proxy\r\nStarting to serve on 127.0.0.1:8001\r\n<\/code><\/pre>\n<p>\u7ad9\u8d77\u6765\u540e\uff0c\u5c1d\u8bd5\u4ece\u4ee5\u4e0b\u94fe\u63a5\u8bbf\u95ee\u4eea\u8868\u677f\u3002<br \/>\nhttp:\/\/localhost:8001\/api\/v1\/namespaces\/kubernetes-dashboard\/services\/https:kubernetes-dashboard:\/proxy\/<\/p>\n<p>\u7136\u540e\u4f1a\u663e\u793a\u8ba4\u8bc1\u754c\u9762\u3002<\/p>\n<p>\u9700\u8981\u4ee4\u724c\uff0c\u6240\u4ee5\u6211\u4eec\u5728\u7ec8\u7aef\u4e2d\u641c\u7d22\u4ee4\u724c\u3002<br \/>\n\u9996\u5148\u67e5\u627e\u4ee5&#8221;default-token&#8221;\u4e3a\u5f00\u5934\u7684\u5bc6\u94a5\uff0c\u7136\u540e\u8fdb\u4e00\u6b65\u786e\u8ba4\u5176\u8be6\u7ec6\u4fe1\u606f\u3002\u7136\u540e\u4ee4\u724c\u5c06\u88ab\u663e\u793a\u51fa\u6765\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> kube-system get secret | <span class=\"nb\">grep <\/span>default-token\r\ndefault-token-h5snm                              kubernetes.io\/service-account-token   3      3d22h\r\n\r\n<span class=\"nv\">$ <\/span>kubectl <span class=\"nt\">-n<\/span> kube-system describe secret default-token-h5snm\r\nName:         default-token-h5snm\r\nNamespace:    kube-system\r\nLabels:       &lt;none&gt;\r\nAnnotations:  kubernetes.io\/service-account.name: default\r\n              kubernetes.io\/service-account.uid: 9e7e6f74-a435-4f90-83a1-cbca37953aa5\r\n\r\nType:  kubernetes.io\/service-account-token\r\n\r\nData\r\n<span class=\"o\">====<\/span>\r\nca.crt:     1025 bytes\r\nnamespace:  11 bytes\r\ntoken:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlc...\r\n<\/code><\/pre>\n<p>\u5728\u5148\u524d\u7684\u8ba4\u8bc1\u754c\u9762\u4e2d\u8f93\u5165\u4ee4\u724c\uff0c\u5e76\u767b\u5f55\u3002<br \/>\n\u5982\u679c\u663e\u793a\u5982\u4e0b\u754c\u9762\uff0c\u5219\u8868\u793a\u6210\u529f\u3002<\/p>\n<h3>\u6267\u884c&#8221;Hello World&#8221;<\/h3>\n<p>\u901a\u5e38\uff0c\u69cb\u5efaKubernetes\u96c6\u7fa4\u9700\u8981\u7f16\u5199\u6e05\u5355\u6587\u4ef6\uff0c\u4f46\u7531\u4e8e\u6211\u4eec\u60f3\u8981\u5148\u5feb\u901f\u5c1d\u8bd5\u4e00\u4e0b\uff0c\u6211\u4eec\u5c06\u6267\u884cHello World\u547d\u4ee4\u6765\u89c2\u5bdf\u60c5\u51b5\u3002\u8bf7\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl run hello-world <span class=\"nt\">--image<\/span><span class=\"o\">=<\/span>hello-world <span class=\"nt\">-it<\/span> <span class=\"nt\">--restart<\/span><span class=\"o\">=<\/span>Never\r\n<\/code><\/pre>\n<p>\u8d77\u6765\u540e\uff0c\u6211\u4f1a\u4ece\u521a\u624d\u7684\u4eea\u8868\u677f\u4e0a\u770b\u4e00\u4e0b\u3002<br \/>\n\u73b0\u5728\u6709\u4e00\u4e2a\u540d\u4e3ahello-world\u7684Pod\uff0c\u5b83\u5e26\u6709&#8221;default&#8221;\u547d\u540d\u7a7a\u95f4\uff0c\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff0c\u6240\u4ee5\u6211\u4eec\u4f7f\u7528&#8221;docker-desktop&#8221;\u3002<br \/>\n\u70b9\u51fb\u53ef\u4ee5\u67e5\u770b\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<p>\u5982\u679c\u4ece\u7ec8\u7aef\u8fdb\u884c\u786e\u8ba4\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u67e5\u770b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get pod\r\nNAME          READY   STATUS      RESTARTS   AGE\r\nhello-world   0\/1     Completed   0          15m\r\n\r\n<span class=\"nv\">$ <\/span>kubectl describe pod\r\nName:         hello-world\r\nNamespace:    default\r\nPriority:     0\r\nNode:         docker-desktop\/192.168.65.3\r\nStart Time:   Mon, 30 Mar 2020 18:11:16 +0900\r\nLabels:       <span class=\"nv\">run<\/span><span class=\"o\">=<\/span>hello-world\r\nAnnotations:  &lt;none&gt;\r\nStatus:       Succeeded\r\nIP:           10.1.0.12\r\n...\r\n<\/code><\/pre>\n<p>\u5c31\u7b97\u53ea\u662f\u968f\u4fbf\u770b\u4e86\u4e00\u773c\u64ad\u653e\u5217\u8868\u548c\u4eea\u8868\u76d8\uff0c\u6211\u8fd8\u662f\u4f1a\u628a\u8fd9\u4e2a\u64ad\u653e\u5217\u8868\u5220\u9664\u6389\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl delete pod hello-world\r\n<\/code><\/pre>\n<h3>\u5199\u51fa\u5ba3\u8a00\u4e66<\/h3>\n<p>\u63a5\u4e0b\u6765\uff0c\u8ba9\u6211\u4eec\u6765\u63cf\u8ff0\u4e00\u4e0b\u6e05\u5355\uff08Manifest\uff09\u3002<br \/>\n\u6211\u4eec\u5c06\u4f7f\u7528\u624b\u628a\u624b\u6559\u5b66\u7684\u5b58\u50a8\u5e93\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\nhttps:\/\/github.com\/larable\/grpc-go-handson-for-mac<\/p>\n<p>\u4ee5\u4ee5\u4e0b\u65b9\u5f0f\u514b\u9686\u5b58\u50a8\u5e93\u3002<\/p>\n<pre class=\"post-pre\"><code>git clone git@github.com:larable\/grpc-go-handson-for-mac.git\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u662f\u300a\u5ba3\u8a00\u300b\u7684\u57fa\u672c\u8981\u7d20\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span> <span class=\"c1\"># API\u306e\u30d0\u30fc\u30b8\u30e7\u30f3<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Pod<\/span> <span class=\"c1\"># API\u306e\u7a2e\u5225<\/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\">test<\/span> <span class=\"c1\"># \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u540d<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span> <span class=\"c1\"># \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4ed5\u69d8<\/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\">ubuntu<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ubuntu:18.04<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u7406\u89e3\u4e86\u8fd9\u4e00\u70b9\u4e4b\u540e\uff0c\u6211\u4eec\u5e0c\u671b\u7740\u624b\u7f16\u5199\u90e8\u7f72\u6e05\u5355\uff0c\u4f46\u662f\u8fd9\u6b21\u6211\u4eec\u5c06\u4f7f\u7528\u5148\u524d\u63d0\u5230\u7684\u4ed3\u5e93\u4e2d\u4ee5\u4e0b\u7684\u6e05\u5355\uff1ak8s\/dev-bgg-deployment.yaml\u3002<\/p>\n<p>\u8fd9\u4efd\u5ba3\u8a00\u4e5f\u662f\u57fa\u4e8e\u5148\u524d\u7684\u57fa\u672c\u7ed3\u6784\u8fdb\u884c\u63cf\u8ff0\u7684\u3002\u5bf9\u4e8e\u65b0\u52a0\u5165\u7684\u9879\u76ee\uff0c\u9644\u6709\u6ce8\u91ca\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\">Deployment<\/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\">bgg-deployment<\/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\">1<\/span> <span class=\"c1\"># \u30ec\u30d7\u30ea\u30ab\u6570<\/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\">backend<\/span>\r\n  <span class=\"na\">template<\/span><span class=\"pi\">:<\/span> <span class=\"c1\"># \u30dd\u30c3\u30c9\u3092\u751f\u6210\u3059\u308b\u969b\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/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\">backend<\/span> <span class=\"c1\"># \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u30dd\u30c3\u30c9\u3068\u5bfe\u5fdc\u3065\u3051\u308b<\/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\">boilerplate-grpc-go<\/span>\r\n          <span class=\"na\">imagePullPolicy<\/span><span class=\"pi\">:<\/span> <span class=\"s\">IfNotPresent<\/span> <span class=\"c1\"># \u30ed\u30fc\u30ab\u30eb\u306b\u306a\u3051\u308c\u3070 Docker Hub \u304b\u3089 pull \u3059\u308b<\/span>\r\n          <span class=\"na\">securityContext<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">capabilities<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">add<\/span><span class=\"pi\">:<\/span>\r\n                <span class=\"pi\">-<\/span> <span class=\"s\">SYS_PTRACE<\/span>\r\n          <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">bgg-container<\/span>\r\n          <span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GRPC_PORT<\/span>\r\n              <span class=\"na\">value<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">50051\"<\/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\">50051<\/span>\r\n            <span class=\"pi\">-<\/span> <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">40000<\/span>\r\n          <span class=\"na\">readinessProbe<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">exec<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s2\">\"<\/span><span class=\"s\">\/bin\/grpc_health_probe\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">-addr=:50051\"<\/span><span class=\"pi\">]<\/span>\r\n            <span class=\"na\">initialDelaySeconds<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n            <span class=\"na\">timeoutSeconds<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n          <span class=\"na\">livenessProbe<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">exec<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">command<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s2\">\"<\/span><span class=\"s\">\/bin\/grpc_health_probe\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">-addr=:50051\"<\/span><span class=\"pi\">]<\/span>\r\n            <span class=\"na\">initialDelaySeconds<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n            <span class=\"na\">timeoutSeconds<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n          <span class=\"na\">resources<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">limits<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">cpu<\/span><span class=\"pi\">:<\/span> <span class=\"s\">100m<\/span>\r\n              <span class=\"na\">memory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">32Mi<\/span>\r\n            <span class=\"na\">requests<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">cpu<\/span><span class=\"pi\">:<\/span> <span class=\"s\">100m<\/span>\r\n              <span class=\"na\">memory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">32Mi<\/span>\r\n<\/code><\/pre>\n<h3>\u901a\u8fc7\u90e8\u7f72\u6765\u542f\u52a8Pod<\/h3>\n<p>\u5728\u4e0a\u8ff0\u6587\u4ef6\u4e2d\u5c1d\u8bd5\u751f\u6210\u5bf9\u8c61\u3002<br \/>\n\u5728\u6b64\u4e4b\u524d\uff0c\u9700\u8981\u786e\u4fdd\u672c\u5730\u5df2\u7ecf\u521b\u5efa\u4e86 Docker \u955c\u50cf\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002\u8bf7\u5148\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"c\"># \u304a\u307e\u3058\u306a\u3044<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">KUBECONTEXT<\/span><span class=\"o\">=<\/span>minikube\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">export <\/span><span class=\"nv\">IMAGE<\/span><span class=\"o\">=<\/span>boilerplate-grpc-go\r\n<span class=\"nv\">$ <\/span>sh build.sh\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u8bd5\u7740\u542f\u52a8\u4e00\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> k8s\/dev-bgg-deployment.yaml\r\ndeployment.apps\/bgg-deployment created\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u68c0\u67e5\u90e8\u7f72\u548cPod\u7684\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get deploy\r\nNAME             READY   UP-TO-DATE   AVAILABLE   AGE\r\nbgg-deployment   1\/1     1            1           74s\r\n\r\n<span class=\"nv\">$ <\/span>kubectl get pods\r\nNAME                              READY   STATUS    RESTARTS   AGE\r\nbgg-deployment-85449c8b86-w4ltj   1\/1     Running   0          79s\r\n<\/code><\/pre>\n<p>\u6211\u786e\u8ba4\u4e86\u4f60\u5df2\u7ecf\u7ad9\u8d77\u6765\u4e86\u3002<br \/>\n\u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u5982\u679c\u4f60\u60f3\u5220\u9664\u5bf9\u8c61\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl delete <span class=\"nt\">-f<\/span> k8s\/dev-bgg-deployment.yaml\r\n<\/code><\/pre>\n<h3>\u65b0\u589e\u670d\u52a1<\/h3>\n<p>Pod\u5df2\u7ecf\u542f\u52a8\uff0c\u4f46\u662f\u76ee\u524d\u65e0\u6cd5\u4ece\u5916\u90e8\u8bbf\u95ee\u3002<br \/>\n\u8981\u8bbf\u95ee\uff0c\u9700\u8981\u6dfb\u52a0\u4e00\u4e2a\u670d\u52a1\u3002<br \/>\n\u670d\u52a1\u53ef\u4ee5\u8fdb\u884cIP\u5730\u5740\u5b9a\u4e49\u3001DNS\u5b9a\u4e49\u3001\u8d1f\u8f7d\u5747\u8861\u7b49\u64cd\u4f5c\u3002<\/p>\n<p>\u670d\u52a1\u4e5f\u4f1a\u5728\u6e05\u5355\u4e2d\u8fdb\u884c\u63cf\u8ff0\u3002<br \/>\n\u90a3\u4e48\uff0c\u8ba9\u6211\u4eec\u7528\u6837\u672c\u5b58\u50a8\u5e93\u4e0b\u9762\u7684\u6587\u4ef6\u6765\u5c1d\u8bd5\u4e00\u4e0b\u3002<br \/>\nk8s\/dev-bgg-service.yaml<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>\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\">bgg-headless-svc<\/span> <span class=\"c1\"># \u5185\u90e8DNS\u3078\u767b\u9332\u3059\u308b\u540d\u524d<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">clusterIP<\/span><span class=\"pi\">:<\/span> <span class=\"s\">None<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">headless<\/span>\r\n      <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">50051<\/span>\r\n      <span class=\"na\">protocol<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TCP<\/span>\r\n      <span class=\"na\">targetPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">50051<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">backend<\/span> <span class=\"c1\"># \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u30e9\u30d9\u30eb\u3092\u6307\u5b9a\u3059\u308b<\/span>\r\n<\/code><\/pre>\n<p>\u90a3\u6211\u4eec\u6765\u751f\u6210\u670d\u52a1\u5427\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl apply <span class=\"nt\">-f<\/span> k8s\/dev-bgg-service.yaml\r\n<\/code><\/pre>\n<p>\u5f53\u67e5\u770b\u5df2\u542f\u52a8\u7684\u670d\u52a1\u65f6\uff0c\u53ef\u4ee5\u786e\u8ba4\u5b83\u4ee5\u6307\u5b9a\u7684\u7aef\u53e3\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get services\r\nNAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>     AGE\r\nbgg-headless-svc   ClusterIP   None         &lt;none&gt;        50051\/TCP   8m28s\r\nkubernetes         ClusterIP   10.96.0.1    &lt;none&gt;        443\/TCP     8\r\n<\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u5728\u6b64\u72b6\u6001\u4e0b\u67e5\u770b\u4eea\u8868\u677f\u3002<br \/>\n\u60a8\u53ef\u4ee5\u786e\u8ba4\u90e8\u7f72\u3001Pod\u548c\u526f\u672c\u96c6\u5df2\u88ab\u751f\u6210\u3002<\/p>\n<p>\u6211\u4f1a\u5148\u5220\u9664\u5230\u73b0\u5728\u4e3a\u6b62\u521b\u5efa\u7684\u4e1c\u897f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl delete <span class=\"nt\">-f<\/span> k8s\/dev-bgg-service.yaml\r\nservice <span class=\"s2\">\"bgg-headless-svc\"<\/span> deleted\r\n\r\n<span class=\"nv\">$ <\/span>kubectl delete <span class=\"nt\">-f<\/span> k8s\/dev-bgg-deployment.yaml\r\ndeployment.apps <span class=\"s2\">\"bgg-deployment\"<\/span> deleted\r\n<\/code><\/pre>\n<h3>\u5f15\u5165 skaffold<\/h3>\n<p>\u6211\u5df2\u7ecf\u7406\u89e3\u4e86Kubernetes\u7684\u57fa\u672c\u64cd\u4f5c\u3002\u4f46\u662f\u5728\u672c\u5730\u5f00\u53d1\u4e2d\uff0c\u5982\u679c\u7ecf\u5e38\u9700\u8981\u66f4\u65b0\u73af\u5883\uff0c\u4ece\u521b\u5efaDocker\u955c\u50cf\u5230\u542f\u52a8Kubernetes\u7684\u6b65\u9aa4\u6709\u4e9b\u7e41\u7410\u3002\u800c\u4e14\uff0c\u5f53\u60f3\u8981\u542f\u52a8\u591a\u4e2a\u670d\u52a1\u65f6\uff0c\u60c5\u51b5\u4f1a\u66f4\u52a0\u56f0\u96be\u3002\u8fd9\u5c31\u662fSkaffold\u7684\u7528\u6b66\u4e4b\u5730\u3002<br \/>\nSkaffold\u53ef\u4ee5\u5c06Docker\u6784\u5efa\u5230kubectl\u5e94\u7528\u7684\u6574\u4e2a\u8fc7\u7a0b\u8fdb\u884c\u6d41\u7a0b\u5316\uff0c\u4f7f\u5176\u53d8\u5f97\u7b80\u5355\u6613\u884c\u3002\u6b64\u5916\uff0c\u5b83\u8fd8\u5177\u6709\u76d1\u89c6\u6587\u4ef6\u5e76\u5728\u66f4\u6539\u65f6\u81ea\u52a8\u66f4\u65b0\u7684\u529f\u80fd\u3002<\/p>\n<p>\u9996\u5148\uff0c\u9700\u8981\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>brew <span class=\"nb\">install <\/span>skaffold\r\n<\/code><\/pre>\n<p>skaffold \u7684\u8bbe\u7f6e\u5199\u5728 skaffold.yaml \u6587\u4ef6\u4e2d\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u53c2\u8003\u793a\u4f8b\u5b58\u50a8\u5e93\u4e2d\u7684 skaffold.yaml \u8fdb\u884c\u5c1d\u8bd5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">skaffold\/v2alpha4<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Config<\/span>\r\n<span class=\"na\">build<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">boilerplate-grpc-go<\/span>\r\n    <span class=\"na\">custom<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">buildCommand<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/build.sh<\/span>\r\n      <span class=\"na\">dependencies<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">main.go<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">service<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">go.mod<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">go.sum<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">build.sh<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">Dockerfile<\/span>\r\n  <span class=\"na\">local<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">useDockerCLI<\/span><span class=\"pi\">:<\/span> <span class=\"no\">true<\/span>\r\n    <span class=\"na\">useBuildkit<\/span><span class=\"pi\">:<\/span> <span class=\"no\">true<\/span>\r\n    <span class=\"na\">concurrency<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n<span class=\"na\">profiles<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">local<\/span>\r\n    <span class=\"na\">activation<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">kubeContext<\/span><span class=\"pi\">:<\/span> <span class=\"s\">minikube<\/span>\r\n    <span class=\"na\">build<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">local<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">push<\/span><span class=\"pi\">:<\/span> <span class=\"no\">false<\/span>\r\n    <span class=\"na\">deploy<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">kubectl<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">manifests<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">k8s\/dev-*.yaml<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">stg<\/span>\r\n    <span class=\"na\">activation<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">kubeContext<\/span><span class=\"pi\">:<\/span> <span class=\"s\">arn:aws:eks:us-west-2:113269943850:cluster\/eks-sandbox<\/span>\r\n    <span class=\"na\">build<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">artifacts<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"pi\">-<\/span> <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">113269943850.dkr.ecr.us-west-2.amazonaws.com\/boilerplate\/grpc-go<\/span>\r\n    <span class=\"na\">deploy<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">kubectl<\/span><span class=\"pi\">:<\/span>\r\n        <span class=\"na\">manifests<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"pi\">-<\/span> <span class=\"s\">k8s\/stg-*.yaml<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u5c06\u5c1d\u8bd5\u542f\u52a8\u3002<br \/>\n\u521d\u6b21\u542f\u52a8\u5c06\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl config use-context minikube\r\n<span class=\"nv\">$ <\/span>skaffold dev\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u8fd9\u4e2a\uff0c\u6211\u4eec\u786e\u8ba4\u542f\u52a8\u6210\u529f\u4e86\u3002<br \/>\n\u5728 skaffold dev \u547d\u4ee4\u4e2d\uff0c\u5b83\u4f1a\u76d1\u542c\u5e94\u7528\u7a0b\u5e8f\u7684\u4fee\u6539\u5e76\u6267\u884c\u6784\u5efa\u548c\u90e8\u7f72\u64cd\u4f5c\uff0c\u4f46\u5982\u679c\u53ea\u60f3\u6267\u884c\u4e00\u6b21\uff0c\u53ef\u4ee5\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>skaffold run\r\n<\/code><\/pre>\n<p>\u5df2\u7ecf\u5b8c\u6210\u4e86\u3002<\/p>\n<h1>Minikube\u7248\u672c\u7684\u5b9e\u64cd\u6559\u7a0b<\/h1>\n<p>\u5982\u679c\u6211\u6709\u80fd\u529b\u7684\u8bdd\uff0c\u6211\u4f1a\u628a\u5b83\u5199\u4e0b\u6765\u3002<\/p>\n<h1>\u6545\u969c\u6392\u9664<\/h1>\n<h3>docker \u547d\u4ee4\u548c kubectl \u547d\u4ee4\u6ca1\u6709\u8fd4\u56de\u54cd\u5e94\u3002<\/h3>\n<p>\u5982\u679c\u65e0\u6cd5\u6536\u5230Docker\u547d\u4ee4\u6216kubectl\u547d\u4ee4\u7684\u54cd\u5e94\uff0c\u6216\u8005\u51fa\u73b0\u8d85\u65f6\u7684\u63d0\u793a\uff0c\u5c31\u91cd\u65b0\u542f\u52a8Docker Desktop\u3002<br \/>\n\u5728\u83dc\u5355\u680f\u4e2d\u9009\u62e9Docker\u5e76\u91cd\u65b0\u542f\u52a8\uff0c\u82e5\u8fde\u8fd9\u4e2a\u90fd\u65e0\u6cd5\u64cd\u4f5c\uff0c\u5c31\u901a\u8fc7\u6d3b\u52a8\u76d1\u89c6\u5668\u7b49\u65b9\u5f0f\u8fdb\u884c\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<h3>\u5f53kubectl apply\u547d\u4ee4\u65e0\u6cd5\u751f\u6210\u5bf9\u8c61\u65f6\uff0c\u4ee5\u4e0b\u662f\u8c03\u67e5\u65b9\u6cd5\u3002<\/h3>\n<p>\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u6765\u67e5\u770b\u5bf9\u8c61\u7684\u8be6\u7ec6\u4fe1\u606f\u548c\u65e5\u5fd7\uff0c\u4ee5\u627e\u51fa\u539f\u56e0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"c\"># \u8a73\u7d30\u3092\u78ba\u8a8d<\/span>\r\n<span class=\"nv\">$ <\/span>kubectl describe <span class=\"o\">[<\/span>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u540d] <span class=\"o\">[<\/span>\u540d\u524d]\r\n<span class=\"nv\">$ <\/span><span class=\"c\"># \u30ed\u30b0\u3092\u78ba\u8a8d<\/span>\r\n<span class=\"nv\">$ <\/span>kubectl logs <span class=\"o\">[<\/span>\u540d\u524d]\r\n<\/code><\/pre>\n<h3>\u51fa\u73b0\u627e\u4e0d\u5230Docker\u955c\u50cf\u7684\u9519\u8bef\u3002<\/h3>\n<p>\u5982\u679c\u60a8\u5728\u4f7f\u7528 kubectl apply \u65f6\u5e0c\u671b\u4f7f\u7528\u672c\u5730\u7684 Docker \u955c\u50cf\uff0c\u4f46\u9047\u5230\u4e86\u627e\u4e0d\u5230\u7684\u9519\u8bef\uff0c\u8bf7\u53c2\u8003\u4e0b\u5217\u89e3\u51b3\u65b9\u6cd5\u3002<\/p>\n<p>image pull policy \u3092 IfNotPresent (\u30ed\u30fc\u30ab\u30eb\u306b\u306a\u3051\u308c\u3070pull) \u306b\u3059\u308b<br \/>\ndocker \u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u3092 latest \u306b\u3057\u306a\u3044<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u800c\u8a00\u4e4b \u53c2\u8003\u7684\u4eb2\u624b\u5b9e\u8df5 \u4ee5\u4e0b\u662f\u4e24\u4e2a\u7f51\u9875\u7684\u94fe\u63a5\uff1a 1. https:\/\/www.nic.ad.jp\/ja\/ma [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36160","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>Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c - 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\/kubernetes\u7684\u57fa\u7840\u77e5\u8bc6-\u301cdocker-for-mac\u5b9e\u8df5\u6307\u5357\u301c\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c\" \/>\n<meta property=\"og:description\" content=\"\u7b80\u800c\u8a00\u4e4b \u53c2\u8003\u7684\u4eb2\u624b\u5b9e\u8df5 \u4ee5\u4e0b\u662f\u4e24\u4e2a\u7f51\u9875\u7684\u94fe\u63a5\uff1a 1. https:\/\/www.nic.ad.jp\/ja\/ma [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes\u7684\u57fa\u7840\u77e5\u8bc6-\u301cdocker-for-mac\u5b9e\u8df5\u6307\u5357\u301c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-01T15:00:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T19:56:53+00:00\" \/>\n<meta name=\"author\" content=\"\u79d1, \u9896\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u9896\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \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\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/\",\"name\":\"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-01T15:00:18+00:00\",\"dateModified\":\"2024-05-03T19:56:53+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c\"}]},{\"@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\/8ca01ba7f7362ad4edb7da206a12f29e\",\"name\":\"\u79d1, \u9896\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u9896\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c - 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\/kubernetes\u7684\u57fa\u7840\u77e5\u8bc6-\u301cdocker-for-mac\u5b9e\u8df5\u6307\u5357\u301c\/","og_locale":"zh_CN","og_type":"article","og_title":"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c","og_description":"\u7b80\u800c\u8a00\u4e4b \u53c2\u8003\u7684\u4eb2\u624b\u5b9e\u8df5 \u4ee5\u4e0b\u662f\u4e24\u4e2a\u7f51\u9875\u7684\u94fe\u63a5\uff1a 1. https:\/\/www.nic.ad.jp\/ja\/ma [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes\u7684\u57fa\u7840\u77e5\u8bc6-\u301cdocker-for-mac\u5b9e\u8df5\u6307\u5357\u301c\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-01T15:00:18+00:00","article_modified_time":"2024-05-03T19:56:53+00:00","author":"\u79d1, \u9896","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u9896","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/","name":"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-01T15:00:18+00:00","dateModified":"2024-05-03T19:56:53+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes\u7684\u57fa\u7840\u77e5\u8bc6 \u301cDocker for Mac\u5b9e\u8df5\u6307\u5357\u301c"}]},{"@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\/8ca01ba7f7362ad4edb7da206a12f29e","name":"\u79d1, \u9896","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","caption":"\u79d1, \u9896"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes%e7%9a%84%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86-%e3%80%9cdocker-for-mac%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97%e3%80%9c\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36160","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36160"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36160\/revisions"}],"predecessor-version":[{"id":95972,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36160\/revisions\/95972"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}