{"id":35650,"date":"2023-06-26T17:07:50","date_gmt":"2022-12-24T16:33:54","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/"},"modified":"2024-04-30T10:50:02","modified_gmt":"2024-04-30T02:50:02","slug":"%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/","title":{"rendered":"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>Codespaces\u662f\u7531GitHub\u63d0\u4f9b\u7684\u4e91\u5f00\u53d1\u73af\u5883 [1] \u3002\u60a8\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528Ubuntu 20.04\u865a\u62df\u673a\u548c\u5728web\u4e0a\u8fd0\u884c\u7684VSCode \u3002\u65e0\u9700\u4fe1\u7528\u5361\u6ce8\u518c\uff0c\u4f7f\u7528\u6bcf\u6708\u7684\u514d\u8d39\u914d\u989d\u540e\uff0c\u5b83\u4f1a\u81ea\u52a8\u505c\u6b62\uff0c\u975e\u5e38\u5b89\u5168[2]\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/2-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u56e0\u4e3a\u5728Codespaces\u4e2d\u53ef\u4ee5\u4f7f\u7528\u865a\u62df\u673a\uff0c\u6240\u4ee5\u53ef\u4ee5\u8fdb\u884c\u51e0\u4e4e\u6240\u6709\u7f16\u7a0b\u8bed\u8a00\u7684\u5f00\u53d1\u3002\u5229\u7528\u8fd9\u79cd\u7075\u6d3b\u6027\u548c\u4fbf\u6377\u6027\uff0c\u6211\u60f3\u5199\u4e00\u7bc7\u5173\u4e8eKubernetes\u5165\u95e8\u7684\u6587\u7ae0\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u521b\u5efaGitHub\u8d26\u53f7<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u542f\u52a8Codespaces<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4f7f\u7528Minikube\u642d\u5efa\u73af\u5883<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>Kubernetes\u521d\u5b66\u8005\u5165\u95e8<\/ol>\n<h1>1. \u521b\u5efa\u4e00\u4e2aGithub\u8d26\u53f7<\/h1>\n<p>\u8bf7\u5728Join GitHub\u4e0a\u521b\u5efa\u4e00\u4e2aGitHub\u8d26\u53f7\u3002<\/p>\n<h1>2. \u542f\u52a8Codespaces<\/h1>\n<p>\u6839\u636e\u516c\u5f0f\u5feb\u901f\u5165\u95e8\u6307\u5357\u8fdb\u884c\u53c2\u8003\u548c\u5b9e\u8df5\u3002<\/p>\n<p>Codespaces\u306f\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u305fGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u304b\u3089\u8d77\u52d5\u3057\u307e\u3059\u3002\u516c\u5f0f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u3068\u3001[User this template]\u30dc\u30bf\u30f3\u304c\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u30af\u30ea\u30c3\u30af\u3057\u3055\u3089\u306b[Open in a codespace]\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/11-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-06-27 213905.png\" \/><\/div>\n<p>\u53ea\u9700\u8981\u8fd9\u4e00\u4e2a\u5c31\u80fd\u542f\u52a8\u4e00\u4e2a\u53ef\u7528\u7684\u7ec8\u7aef\u5f00\u53d1\u73af\u5883\u3002VSCode\u7684\u4f7f\u7528\u4f53\u9a8c\u4e0e\u5e94\u7528\u7a0b\u5e8f\u7248\u672c\u6ca1\u6709\u5dee\u522b\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/13-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u30bf\u30fc\u30df\u30ca\u30eb\u3067pwd\u30b3\u30de\u30f3\u30c9\u3084ls\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306fnodeJS\u3067\u69cb\u7bc9\u3055\u308c\u305f\u30c7\u30e2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001pachage.json\u306a\u3069\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/15-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u8bf7\u5c1d\u8bd5\u542f\u52a8\u6f14\u793a\u5e94\u7528\u7a0b\u5e8f\u3002\u8bf7\u6267\u884cnpm run dev\u547d\u4ee4\u3002\u7136\u540e\uff0c\u4f1a\u5f39\u51fa&#8221;\u5728\u6d4f\u89c8\u5668\u4e2d\u6253\u5f00&#8221;\u7684\u5f39\u7a97\uff0c\u8bf7\u70b9\u51fb\u5b83\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/17-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u3059\u308b\u3068\u3001\u5225\u30bf\u30d6\u3067\u7c21\u5358\u306b\u30c7\u30e2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/19-0.png\" alt=\"image.png\" \/><\/div>\n<p>VSCode\u306b\u623b\u308a\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u30bf\u30d6\u306e\u96a3\u306e\u30dd\u30fc\u30c8\u30bf\u30d6\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u3059\u308b\u3068\u8d77\u52d5\u4e2d\u306e\u30dd\u30fc\u30c8\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u521d\u671f\u8a2d\u5b9a\u3067\u306fPrivate\u3068\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u540c\u3058Github\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u30d6\u30e9\u30a6\u30b6\u306e\u307f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3067Public\u3068\u3059\u308b\u3068\u4e00\u6642\u7684\u306b\u516c\u958b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/21-0.png\" alt=\"image.png\" \/><\/div>\n<h1>3. \u4f7f\u7528Minikube\u6765\u5efa\u7acb\u73af\u5883<\/h1>\n<p>\u672c\u6b21\u4f7f\u7528Minikube\u6765\u5b66\u4e60Kubernetes\u521d\u7ea7\u77e5\u8bc6\u3002<\/p>\n<div>Minikube\u662f\u4e00\u79cd\u53ef\u4ee5\u5728\u672c\u5730\u8fd0\u884c\u7684Kubernetes\uff0c\u91cd\u70b9\u662f\u4fbf\u4e8e\u5b66\u4e60\u548c\u5f00\u53d1Kubernetes\u3002\u53ea\u9700\u8981Docker\u6216\u865a\u62df\u673a\u6267\u884c\u73af\u5883\u5373\u53ef\u3002<\/div>\n<p>\u6839\u636e\u5b98\u65b9\u6587\u6863\u8fdb\u884c\u73af\u5883\u642d\u5efa\u3002<\/p>\n<p>\u4e0b\u8f7d\u5e76\u5b89\u88c5Debian\u8f6f\u4ef6\u5305\u3002\u4f60\u4e5f\u53ef\u4ee5\u590d\u5236\u7c98\u8d34\u5230\u6d4f\u89c8\u5668\u7248\u7684VSCode\u4e0a\u3002<\/p>\n<pre class=\"post-pre\"><code>curl <span class=\"nt\">-LO<\/span> https:\/\/storage.googleapis.com\/minikube\/releases\/latest\/minikube_latest_amd64.deb\r\n<span class=\"nb\">sudo <\/span>dpkg <span class=\"nt\">-i<\/span> minikube_latest_amd64.deb\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u786e\u8ba4\u662f\u5426\u5b89\u88c5\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/haikus-for-codespaces <span class=\"o\">(<\/span>main<span class=\"o\">)<\/span> <span class=\"nv\">$ <\/span>minikube version\r\nminikube version: v1.30.1\r\ncommit: 08896fd1dc362c097c925146c4a0d0dac715ace0\r\n<\/code><\/pre>\n<p>\u4f7f\u7528minikube start\u547d\u4ee4\u542f\u52a8minikube\u3002\u7531\u4e8e\u6b64Codesapce\u6a21\u677f\u5df2\u7ecf\u5b89\u88c5\u4e86Docker\uff0c\u56e0\u6b64\u5c06\u5f00\u59cb\u62c9\u53d6Docker\u955c\u50cf\u7b49\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/haikus-for-codespaces (main) $ minikube start\r\n?  minikube v1.30.1 on Ubuntu 20.04 (docker\/amd64)\r\n\u2728  Automatically selected the docker driver. Other choices: ssh, none\r\n?  Using Docker driver with root privileges\r\n?  Starting control plane node minikube in cluster minikube\r\n?  Pulling base image ...\r\n?  Downloading Kubernetes v1.26.3 preload ...\r\n    &gt; preloaded-images-k8s-v18-v1...:  397.02 MiB \/ 397.02 MiB  100.00% 22.47 M\r\n    &gt; gcr.io\/k8s-minikube\/kicbase...:  373.53 MiB \/ 373.53 MiB  100.00% 7.81 Mi\r\n?  Creating docker container (CPUs=2, Memory=2200MB) ...\r\n?  Preparing Kubernetes v1.26.3 on Docker 23.0.2 ...\r\n    \u25aa Generating certificates and keys ...\r\n    \u25aa Booting up control plane ...\r\n    \u25aa Configuring RBAC rules ...\r\n?  Configuring bridge CNI (Container Networking Interface) ...\r\n    \u25aa Using image gcr.io\/k8s-minikube\/storage-provisioner:v5\r\n?  Verifying Kubernetes components...\r\n?  Enabled addons: storage-provisioner, default-storageclass\r\n?  Done! kubectl is now configured to use \"minikube\" cluster and \"default\" namespace by default\r\n<\/code><\/pre>\n<p>\u5f53\u542f\u52a8\u5b8c\u6210\u540e\uff0c\u8bf7\u6267\u884c &#8220;kubectl get nodes&#8221; \u547d\u4ee4\u3002\u7136\u540e\u60a8\u5c06\u786e\u8ba4\u96c6\u7fa4\u5df2\u5728\u5355\u8282\u70b9\u4e0a\u6784\u5efa\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/haikus-for-codespaces (main) $ kubectl get nodes\r\nNAME       STATUS   ROLES           AGE    VERSION\r\nminikube   Ready    control-plane   117s   v1.26.3\r\n<\/code><\/pre>\n<div>kubectl\u547d\u4ee4\u4e0eDocker\u4e2d\u7684docker\u547d\u4ee4\u76f8\u540c\uff0c\u7528\u4e8e\u64cd\u4f5cKubernetes\u3002\u8be5\u547d\u4ee4\u53ef\u7528\u4e8e\u542f\u52a8\u3001\u5220\u9664\u548c\u67e5\u770bPod\u7684\u65e5\u5fd7\uff0c\u4ee5\u53ca\u6267\u884c\u96c6\u7fa4\u64cd\u4f5c\u7b49\u51e0\u4e4e\u6240\u6709\u64cd\u4f5c\u3002<\/div>\n<h1>4. Kubernetes \u521d\u5b66\u8005\u5165\u95e8<\/h1>\n<p>\u305d\u308c\u3067\u306f\u3001Kubernetes\u3067\u6700\u3082\u4f7f\u308f\u308c\u308bPod, Deployment, Service\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<div>\n<p>Kubernetes Pod \u306f\u30011 \u3064\u4ee5\u4e0a\u306e Linux\u00ae \u30b3\u30f3\u30c6\u30ca\u306e\u96c6\u5408\u4f53\u3067\u3001Kubernetes \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6700\u5c0f\u5358\u4f4d\u3067\u3059\u3002[4]\u3000\u4e00\u822c\u7684\u306b\u306f1Pod\u30011\u30b3\u30f3\u30c6\u30ca\u3068\u306a\u308b\u30b1\u30fc\u30b9\u304c\u591a\u3044\u305f\u3081\u3001\u521d\u3081\u306e\u3046\u3061\u306fPod\uff1d\u30b3\u30f3\u30c6\u30ca\u3068\u7406\u89e3\u3057\u3066\u3088\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n<h2>\u642d\u5efaNginx\u3002<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u4f5c\u4e1a\u7684\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code>mkdir \/workspaces\/k8s-workshop\r\n<\/code><\/pre>\n<p>\u5728VSCode\u4e2d\u6253\u5f00\u5df2\u521b\u5efa\u7684\u5de5\u4f5c\u76ee\u5f55\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/42-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u521b\u5efatest_pod.yaml\u6587\u4ef6\u3002\u4ee5\u540e\uff0c\u4f7f\u7528VSCode\u7684\u8d44\u6e90\u7ba1\u7406\u5668\u548c\u7f16\u8f91\u5668\u6765\u8fdb\u884c\u6587\u4ef6\u7f16\u8f91\u4f1a\u5f88\u65b9\u4fbf\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/44-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u4ee5\u4e0b\u5185\u5bb9\u7684\u63cf\u8ff0\u3002\u8d77\u521d\u53ef\u80fd\u4f1a\u611f\u5230\u5197\u957f\uff0c\u4f46\u8fd9\u662f\u4f7f\u7528Kubernetes\u67b6\u6784\u6240\u5fc5\u9700\u7684\u63cf\u8ff0\u3002\u5728Kubernetes\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528YAML\u6587\u4ef6\uff08\u6e05\u5355\uff09\u6765\u5b9a\u4e49\u8d44\u6e90\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=\"c1\"># \u30ea\u30bd\u30fc\u30b9\u306e\u7a2e\u985e<\/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\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">test-pod<\/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\">test-app<\/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=\"c1\"># Pod\u5185\u3067\u8d77\u52d5\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u306e\u60c5\u5831<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">web<\/span>\r\n      <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx:1.25.1<\/span> <span class=\"c1\"># docker\u3067\u306e\u30a4\u30e1\u30fc\u30b8\u6307\u5b9a\u3068\u540c\u69d8<\/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\">web<\/span>\r\n          <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n          <span class=\"na\">protocol<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TCP<\/span>\r\n<\/code><\/pre>\n<p>\u73b0\u5728\uff0c\u5c06Pod\u7684\u6e05\u5355\u5e94\u7528\u5230\u96c6\u7fa4\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop <span class=\"nv\">$ <\/span>kubectl apply  <span class=\"nt\">-f<\/span> test_pod.yaml \r\npod\/test-pod created\r\n<\/code><\/pre>\n<p>\u68c0\u67e5\u662f\u5426\u5df2\u521b\u5efaPod\u3002\u5982\u679ctest-pod\u5df2\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\uff0c\u5219\u8868\u793a\u6b63\u5e38\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop $ kubectl get pod \r\nNAME       READY   STATUS    RESTARTS   AGE\r\ntest-pod   1\/1     Running   0          58s\r\n<\/code><\/pre>\n<p>\u867d\u7136\u5bb9\u5668\u5df2\u7ecf\u521b\u5efa\u6210\u529f\uff0c\u4f46\u662f\u5728\u8fd9\u79cd\u72b6\u6001\u4e0b\u65e0\u6cd5\u4ece\u96c6\u7fa4\u5916\u90e8\u8bbf\u95ee\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Service \u8d44\u6e90\u6765\u4f7f\u5f97 Pod \u53ef\u4ee5\u4ece\u96c6\u7fa4\u5916\u90e8\u8bbf\u95ee\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>\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-service<\/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\">test-app<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">NodePort<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n    <span class=\"na\">targetPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n    <span class=\"na\">nodePort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">30080<\/span>\r\n    <span class=\"na\">protocol<\/span><span class=\"pi\">:<\/span> <span class=\"s\">TCP<\/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\">test-app<\/span>\r\n<\/code><\/pre>\n<div>targetPort: \u6839\u636e\u5bb9\u5668\u542f\u52a8\u7684\u5e94\u7528\u7a0b\u5e8f\u7aef\u53e3\u8fdb\u884c\u6307\u5b9a\u3002\u901a\u5e38\u4f7f\u752880\/tcp\u7b49\u5e38\u7528\u7aef\u53e3\u3002port: \u5728Pod\u4e4b\u95f4\u8fdb\u884c\u901a\u4fe1\u65f6\u4f7f\u7528\u7684\u7aef\u53e3\uff0c\u53ef\u4ee5\u81ea\u7531\u6307\u5b9a\u3002\u901a\u5e38\u4f7f\u75288000+\u5e38\u89c1\u7aef\u53e3\u7684\u60ef\u4f8b\u8f83\u591a\u3002\u8bbe\u7f6etype: nodePort\u5e76\u6307\u5b9anodePort:\uff0c\u5728Kubernetes\u8282\u70b9\u4e3b\u673a\u4e0a\u542f\u52a830080\/tcp\u7aef\u53e3\uff0c\u5e76\u5c06\u6d41\u91cf\u8f6c\u53d1\u5230\u5bb9\u5668\u5185\u90e8\u3002<\/div>\n<p>\u63d0\u4ea4\u7533\u8bf7\u4e66\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop <span class=\"nv\">$ <\/span>kubectl apply  <span class=\"nt\">-f<\/span> test_service.yaml \r\nservice\/test-service created\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u672c\u6b21\u4f7f\u7528minikube\uff0c\u56e0\u6b64\u6211\u4eec\u5c06\u83b7\u53d6minikube\u8282\u70b9\u7684\u4fe1\u606f\u3002\u901a\u8fc7\u8fd0\u884cminikube service &#8211;all\u547d\u4ee4\uff0c\u53ef\u4ee5\u786e\u8ba4\u8282\u70b9\u7684IP\u5730\u5740\u4e3a192.168.49.2\u3002\u8bbf\u95eehttp:\/\/192.168.49.2:30080\u5373\u53ef\u8bbf\u95ee\u670d\u52a1\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop $ minikube service --all\r\n|-----------|------------|-------------|--------------|\r\n| NAMESPACE |    NAME    | TARGET PORT |     URL      |\r\n|-----------|------------|-------------|--------------|\r\n| default   | kubernetes |             | No node port |\r\n|-----------|------------|-------------|--------------|\r\n?  service default\/kubernetes has no node port\r\n|-----------|--------------|-------------|---------------------------|\r\n| NAMESPACE |     NAME     | TARGET PORT |            URL            |\r\n|-----------|--------------|-------------|---------------------------|\r\n| default   | test-service |        8080 | http:\/\/192.168.49.2:30080 |\r\n|-----------|--------------|-------------|---------------------------|\r\n?  Opening service default\/test-service in default browser...\r\n?  http:\/\/192.168.49.2:30080\r\n<\/code><\/pre>\n<p>\u5f53\u4f7f\u7528curl\u547d\u4ee4\u8fdb\u884c\u786e\u8ba4\u65f6\uff0c\u53ef\u4ee5\u786e\u5b9aNginx\u5df2\u6309\u9884\u671f\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop $ curl http:\/\/192.168.49.2:30080\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;Welcome to nginx!&lt;\/title&gt;\r\n&lt;style&gt;\r\nhtml { color-scheme: light dark; }\r\nbody { width: 35em; margin: 0 auto;\r\nfont-family: Tahoma, Verdana, Arial, sans-serif; }\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;h1&gt;Welcome to nginx!&lt;\/h1&gt;\r\n&lt;p&gt;If you see this page, the nginx web server is successfully installed and\r\nworking. Further configuration is required.&lt;\/p&gt;\r\n\r\n&lt;p&gt;For online documentation and support please refer to\r\n&lt;a href=\"http:\/\/nginx.org\/\"&gt;nginx.org&lt;\/a&gt;.&lt;br\/&gt;\r\nCommercial support is available at\r\n&lt;a href=\"http:\/\/nginx.com\/\"&gt;nginx.com&lt;\/a&gt;.&lt;\/p&gt;\r\n\r\n&lt;p&gt;&lt;em&gt;Thank you for using nginx.&lt;\/em&gt;&lt;\/p&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/code><\/pre>\n<p>\u6211\u60f3\u5728\u6d4f\u89c8\u5668\u4e2d\u786e\u8ba4\u4e00\u4e0b\uff0c\u4f46\u65e0\u6cd5\u76f4\u63a5\u8fde\u63a5\u5230Codespaces\u73af\u5883\u7684IP\uff08192.168.49.2\uff09\uff0c\u6240\u4ee5\u6211\u5c06\u4f7f\u7528kubectl\u547d\u4ee4\u8fdb\u884c\u7aef\u53e3\u8f6c\u53d1\u3002<\/p>\n<pre class=\"post-pre\"><code>@abek15 \u279c \/workspaces\/k8s-workshop $ kubectl port-forward service\/test-service 8080:8080\r\nForwarding from 127.0.0.1:8080 -&gt; 80\r\nForwarding from [::1]:8080 -&gt; 80\r\n<\/code><\/pre>\n<p>\u70b9\u51fb&#8221;\u5728\u6d4f\u89c8\u5668\u4e2d\u6253\u5f00&#8221;\u5f39\u7a97\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/63-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u7136\u540e\u60a8\u53ef\u4ee5\u5728\u53e6\u4e00\u4e2a\u6807\u7b7e\u9875\u4e2d\u786e\u8ba4Nginx\u3002<\/p>\n<h1>\u6700\u540e<\/h1>\n<p>\u6211\u4f7f\u7528Codespaces\u6784\u5efa\u4e86\u4e00\u4e2aKubernetes\u73af\u5883\uff0c\u5e76\u542f\u52a8\u4e86\u6700\u5c0f\u7684\u8d44\u6e90\u5355\u5143Pod\u3002\u6211\u5e0c\u671b\u901a\u8fc7\u4ec5\u4f7f\u7528Github\u8d26\u53f7\u5c31\u80fd\u591f\u8fdb\u884c\u64cd\u4f5c\uff0c\u964d\u4f4eKubernetes\u5165\u95e8\u95e8\u69db\u3002<\/p>\n<p>\u57fa\u4e8e\u6b64\u6b21\u6587\u7ae0\u7684\u4fbf\u6377\u4f53\u9a8c\uff0c\u6211\u4eec\u7701\u7565\u4e86\u8be6\u7ec6\u7684\u89e3\u91ca\u3002\u5efa\u8bae\u60a8\u67e5\u627ekubectl\u3001namespace\u3001deployment\u3001label\u7b49\u611f\u5174\u8da3\u7684\u5173\u952e\u8bcd\uff0c\u5e76\u5728\u60a8\u521b\u5efa\u7684\u73af\u5883\u4e2d\u8fdb\u884c\u5c1d\u8bd5\u3002<\/p>\n<p>\u4e3b\u984c\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Codesapces\u3092\u5229\u7528\u3059\u308b\u3068\u3001OS\u3084\u6a29\u9650\u306b\u3088\u3089\u305a\u3001\u4e00\u5f8b\u306a\u74b0\u5883\u3092\u5229\u7528\u3067\u304d\u308b\u305f\u3081\u3001\u5b66\u7fd2\u3084\u30cf\u30f3\u30ba\u30aa\u30f3\u306b\u6700\u9069\u3060\u3068\u611f\u3058\u307e\u3057\u305f\u3002<\/p>\n<h1>\u8bf7\u770b\u6b64\u5904<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">[1] Github, &#8220;Codespaces&#8221;, https:\/\/github.co.jp\/features\/codespaces<\/ul>\n<\/li>\n<\/ul>\n<p>[2] Github, &#8220;GitHub Codespaces \u306e\u8acb\u6c42\u306b\u3064\u3044\u3066&#8221;, https:\/\/docs.github.com\/ja\/billing\/managing-billing-for-github-codespaces\/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts<\/p>\n<p>[3] The Kubernetes Authors, &#8220;minikube start&#8221;, https:\/\/minikube.sigs.k8s.io\/docs\/start\/<\/p>\n<p>[4] Red Hat, &#8220;Inc., What is a Kubernetes pod?&#8221;, https:\/\/www.redhat.com\/en\/topics\/containers\/what-is-kubernetes-pod<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 Codespaces\u662f\u7531GitHub\u63d0\u4f9b\u7684\u4e91\u5f00\u53d1\u73af\u5883 [1] \u3002\u60a8\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528Ubuntu 20.04\u865a [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35650","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>\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes - 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\/\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528github\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528codespaces\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 Codespaces\u662f\u7531GitHub\u63d0\u4f9b\u7684\u4e91\u5f00\u53d1\u73af\u5883 [1] \u3002\u60a8\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528Ubuntu 20.04\u865a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528github\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528codespaces\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-24T16:33:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T02:50:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/2-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/\",\"name\":\"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-12-24T16:33:54+00:00\",\"dateModified\":\"2024-04-30T02:50:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes - 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\/\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528github\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528codespaces\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes","og_description":"\u9996\u5148 Codespaces\u662f\u7531GitHub\u63d0\u4f9b\u7684\u4e91\u5f00\u53d1\u73af\u5883 [1] \u3002\u60a8\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528Ubuntu 20.04\u865a [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528github\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528codespaces\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-12-24T16:33:54+00:00","article_modified_time":"2024-04-30T02:50:02+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d243837434c4406c2ddf5\/2-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/","name":"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-12-24T16:33:54+00:00","dateModified":"2024-04-30T02:50:02+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a\u4ec5\u4f7f\u7528GitHub\u5e10\u6237\uff01\u5b66\u4e60\u5982\u4f55\u4f7f\u7528Codespaces\u5165\u95e8Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bb%85%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e9%80%89%e9%a1%b9%ef%bc%9a%e4%bb%85%e4%bd%bf%e7%94%a8github%e5%b8%90%e6%88%b7%ef%bc%81%e5%ad%a6%e4%b9%a0%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8codespaces\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=35650"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35650\/revisions"}],"predecessor-version":[{"id":91458,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35650\/revisions\/91458"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=35650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=35650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=35650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}