{"id":72,"date":"2022-11-08T17:29:07","date_gmt":"2022-11-08T09:29:07","guid":{"rendered":"http:\/\/www.leyiwangyou.top\/?p=72"},"modified":"2022-11-08T17:32:30","modified_gmt":"2022-11-08T09:32:30","slug":"kubernetes%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8","status":"publish","type":"post","link":"http:\/\/www.leyiwangyou.top\/?p=72","title":{"rendered":"Kubernetes\u5feb\u901f\u5165\u95e8"},"content":{"rendered":"<h2>1. Windows\u5b89\u88c5Kubernetes<\/h2>\n<p>Docker Desktop\u542f\u7528Kubernetes<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.leyiwangyou.top\/wp-content\/uploads\/2022\/11\/img-20221108170141-300x151.jpg\" alt=\"\" \/><\/p>\n<h2>2. \u4e0b\u8f7d\u4ee3\u7801\u5e76\u6784\u5efa\u955c\u50cf<\/h2>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/nigelpoulton\/qsk-book.git\n\ncd App\n\ndocker image build -t yourDockerhubCount\/qsk-book:1.0 .\n\ndocker login\n\ndocker image push yourDockerhubCount\/qsk-book:1.0<\/code><\/pre>\n<h2>3. \u5c06\u5e94\u7528\u90e8\u7f72\u5230Kubernetes<\/h2>\n<h3>1. \u5b9a\u4e49pod.yml\u6587\u4ef6<\/h3>\n<pre><code class=\"language-yml\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: first-pod\n  labels:\n    project: qsk-book\nspec:\n  containers:\n    - name: web-ctr\n      image: yourDockerhubCount\/qsk-book:1.0\n      ports:\n        - containerPort: 8080\n<\/code><\/pre>\n<h3>2. \u6267\u884c\u521b\u5efapod\u547d\u4ee4<\/h3>\n<pre><code class=\"language-bash\">> kubectl apply -f pod.yml\npod\/first-pod created\n\n> kubectl get pods\nNAME        READY   STATUS    RESTARTS   AGE\nfirst-pod   1\/1     Running   0          7s<\/code><\/pre>\n<h3>3. \u5b9a\u4e49svc-local.yml\u6587\u4ef6<\/h3>\n<pre><code class=\"language-yml\">apiVersion: v1\nkind: Service\nmetadata:\n  name: svc-local\nspec:\n  type: NodePort\n  ports:\n  - port: 8080\n    protocol: TCP\n    targetPort: 8080\n    nodePort: 31111\n  selector:\n    project: qsk-book<\/code><\/pre>\n<h3>4. \u6267\u884c\u521b\u5efaService\u547d\u4ee4<\/h3>\n<pre><code class=\"language-bash\">> kubectl apply -f svc-local.yml\nservice\/svc-local created\n> kubectl get svc\nNAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE\nkubernetes   ClusterIP   10.96.0.1       &lt;none&gt;        443\/TCP          75m\nsvc-local    NodePort    10.96.235.210   &lt;none&gt;        8080:31111\/TCP   5s<\/code><\/pre>\n<h3>5. \u8bbf\u95eelocalhost:31111<\/h3>\n<p><img decoding=\"async\" src=\"http:\/\/www.leyiwangyou.top\/wp-content\/uploads\/2022\/11\/img-20221108170044-300x82.png\" alt=\"\" \/><\/p>\n<h2>4. \u521b\u5efaDeployment,\u589e\u52a0\u81ea\u6211\u4fee\u590d<\/h2>\n<h3>1. \u5b9a\u4e49deploy.yml\u6587\u4ef6<\/h3>\n<pre><code class=\"language-yml\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: qsk-deploy\nspec:\n  replicas: 5\n  selector:\n    matchLabels:\n      project: qsk-book\n  template:\n    metadata:\n      labels:\n        project: qsk-book\n    spec: \n      containers:\n      - name: qsk-pod\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 8080\n        image: yourDockerhubCount\/qsk-book:1.0<\/code><\/pre>\n<h3>2. \u6267\u884c\u521b\u5efaDeployment\u547d\u4ee4<\/h3>\n<pre><code class=\"language-bash\">>kubectl apply -f deploy.yml\ndeployment.apps\/qsk-deploy created\n\nkubectl get deployments\nNAME         READY   UP-TO-DATE   AVAILABLE   AGE\nqsk-deploy   5\/5     5            5           21s\n\n> kubectl get pods\nNAME                          READY   STATUS    RESTARTS   AGE\nqsk-deploy-6c5fdfc6f6-blq8s   1\/1     Running   0          36s\nqsk-deploy-6c5fdfc6f6-dr562   1\/1     Running   0          36s\nqsk-deploy-6c5fdfc6f6-fnnpd   1\/1     Running   0          36s\nqsk-deploy-6c5fdfc6f6-msnvd   1\/1     Running   0          36s\nqsk-deploy-6c5fdfc6f6-xkkk8   1\/1     Running   0          36s\n\n\u5220\u9664\u4e00\u4e2apod\n>kubectl delete pod qsk-deploy-6c5fdfc6f6-blq8s\npod &quot;qsk-deploy-6c5fdfc6f6-blq8s&quot; deleted\n\nDeployment\u4f1a\u81ea\u52a8\u542f\u52a8\u4e00\u4e2a\u65b0\u7684pod\uff0c\u4f7fpod\u6570\u91cf\u6062\u590d\u52305\n> kubectl get pods\nNAME                          READY   STATUS    RESTARTS   AGE\nqsk-deploy-6c5fdfc6f6-dr562   1\/1     Running   0          2m16s\nqsk-deploy-6c5fdfc6f6-fnnpd   1\/1     Running   0          2m16s\nqsk-deploy-6c5fdfc6f6-msnvd   1\/1     Running   0          2m16s\nqsk-deploy-6c5fdfc6f6-pdtr7   1\/1     Running   0          36s\nqsk-deploy-6c5fdfc6f6-xkkk8   1\/1     Running   0          2m16s\n<\/code><\/pre>\n<h2>5. \u5e94\u7528\u6269\u5bb9<\/h2>\n<h3>1. \u4fee\u6539deploy.yml\u6587\u4ef6<\/h3>\n<pre><code class=\"language-yml\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: qsk-deploy\nspec:\n  replicas: 10 &lt;&lt; \u5c065\u6539\u621010\n  selector:\n    matchLabels:\n      project: qsk-book\n  template:\n    metadata:\n      labels:\n        project: qsk-book\n    spec: \n      containers:\n      - name: qsk-pod\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 8080\n        image: yourDockerhubCount\/qsk-book:1.0<\/code><\/pre>\n<h3>2. \u91cd\u65b0\u6267\u884c\u90e8\u7f72\u547d\u4ee4<\/h3>\n<pre><code class=\"language-bash\">> kubectl apply -f deploy.yml\ndeployment.apps\/qsk-deploy configured\n> kubectl get deployments\nNAME         READY   UP-TO-DATE   AVAILABLE   AGE\nqsk-deploy   10\/10   10           10          9m5s\n> kubectl get pods\nNAME                          READY   STATUS    RESTARTS   AGE\nqsk-deploy-6c5fdfc6f6-8km7q   1\/1     Running   0          70s\nqsk-deploy-6c5fdfc6f6-dr562   1\/1     Running   0          9m54s\nqsk-deploy-6c5fdfc6f6-f8qct   1\/1     Running   0          70s\nqsk-deploy-6c5fdfc6f6-fnnpd   1\/1     Running   0          9m54s\nqsk-deploy-6c5fdfc6f6-j5hv4   1\/1     Running   0          70s\nqsk-deploy-6c5fdfc6f6-mf2xf   1\/1     Running   0          70s\nqsk-deploy-6c5fdfc6f6-msnvd   1\/1     Running   0          9m54s\nqsk-deploy-6c5fdfc6f6-pdtr7   1\/1     Running   0          8m14s\nqsk-deploy-6c5fdfc6f6-xkkk8   1\/1     Running   0          9m54s\nqsk-deploy-6c5fdfc6f6-z44wv   1\/1     Running   0          70s<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. Windows\u5b89\u88c5Kubernet<\/p>\n","protected":false},"author":1,"featured_media":76,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-72","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-book"],"_links":{"self":[{"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/posts\/72","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=72"}],"version-history":[{"count":4,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/posts\/72\/revisions"}],"predecessor-version":[{"id":79,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/posts\/72\/revisions\/79"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=\/wp\/v2\/media\/76"}],"wp:attachment":[{"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.leyiwangyou.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}