{"id":2856,"date":"2023-03-18T20:00:00","date_gmt":"2023-03-18T12:00:00","guid":{"rendered":"https:\/\/jovepater.com\/?p=2856"},"modified":"2023-04-23T20:54:26","modified_gmt":"2023-04-23T12:54:26","slug":"for-k8s-beginner-ep-12-rolling-update","status":"publish","type":"post","link":"https:\/\/jovepater.com\/article\/for-k8s-beginner-ep-12-rolling-update\/","title":{"rendered":"For K8S Beginner EP 11\uff1a[\u63a2\u7a76] \u66f4\u65b0\u6a5f\u5236 Rolling Update vs. Recreate"},"content":{"rendered":"\n
\u5148\u8aaa\u4e00\u500b\u91cd\u8981\u7684\u89c0\u5ff5\uff1a\u300c\u82e5\u6c92\u6709\u4efb\u4f55\u8a2d\u5b9a\uff0cK8S\u9810\u8a2d\u5c07\u4ee5Rolling Update\u7b56\u7565\u57f7\u884c\u66f4\u65b0\uff01\u300d<\/p>\n\n\n\n
Rolling Update\u53c8\u540d\u300c\u6efe\u52d5\u66f4\u65b0\u300d<\/strong>\uff0c\u9867\u540d\u601d\u7fa9\uff0cK8S\u63d0\u4f9b\u4e00\u7a2e\u6efe\u52d5\u7684\u65b9\u5f0f\u4f86\u66f4\u65b0Pod\uff0c\u8b93\u670d\u52d9\u5728\u4e0d\u4e2d\u65b7 (\u6216\u50c5\u6975\u5c11\u7684\u77ac\u65b7) \u7684\u65b9\u5f0f\u5b8c\u6210\u66f4\u65b0\u4f5c\u696d\u3002<\/p>\n\n\n\n \u793a\u610f\u5716\u5982\u4e0b\uff1a<\/p>\n\n\n Recreate\u53c8\u540d\u300c\u91cd\u65b0\u5efa\u7acb\u300d<\/strong>\uff0c\u5c31\u50cf\u50b3\u7d71\u7684\u66f4\u65b0\u4f5c\u696d\uff0cK8S\u5c07\u628a\u65e2\u6709\u7684Pod\u522a\u9664\uff0c\u76f4\u63a5\u4ee5\u65b0\u7684Pod\u53d6\u800c\u4ee3\u4e4b\uff0c\u5728\u9019\u6bb5\u671f\u9593\uff0c\u670d\u52d9\u5c07\u4e2d\u65b7\uff0c\u76f4\u5230\u7b2c\u4e00\u500bPod\u6210\u529f\u555f\u52d5\u81f3\u53ef\u4ee5\u63d0\u4f9b\u670d\u52d9\u70ba\u6b62\u3002<\/p>\n\n\n\n \u6b65\u9a5f1\uff1a<\/strong>YAML\u6a94\u5167\u5bb9\u5982\u4e0b\uff0c\u5728Spec\u5340\u6bb5\u653e\u5165strategy\u6a19\u7c64\uff0c\u5176\u5167\u5bb9\u6307\u5b9a\u70batype: Recreate\u3002<\/p>\n\n\n \u6b65\u9a5f2\uff1a<\/strong>\u4f7f\u7528kubectl set\u6307\u4ee4\u8abf\u6574Pod\u7684Image\u7248\u672c\uff1a<\/p>\n\n\n\n \u6b65\u9a5f3\uff1a<\/strong>\u4f7f\u7528kubectl describe\u4f86\u770b\u4e00\u4e0bEvents\uff0c\u53ef\u4ee5\u767c\u73feK8S\u4e00\u6b21\u505c\u6b62\u6240\u6709Pod\uff0c\u4e26\u91cd\u65b0\u90e8\u7f72\u65b0\u76843\u500bPod\u3002<\/p>\n\n\n \u6b65\u9a5f1\uff1a<\/strong>YAML\u6a94\u5167\u5bb9\u5982\u4e0b\uff0c\u5728Spec\u5340\u6bb5\u653e\u5165strategy\u6a19\u7c64\uff0c\u5176\u5167\u5bb9\u6307\u5b9a\u70baRollingUpdate\u3002<\/p>\n\n\n\n \u6b65\u9a5f2\uff1a<\/strong>\u4f7f\u7528kubectl set\u6307\u4ee4\u8abf\u6574Pod\u7684Image\u7248\u672c\uff1a<\/p>\n\n\n\n \u6b65\u9a5f3\uff1a<\/strong>\u4f7f\u7528kubectl describe\u4f86\u770b\u4e00\u4e0bEvents\uff0cK8S\u4e00\u6b21\u505c\u6b62\u4e00\u500bPod\uff0c\u4e26\u91cd\u65b0\u90e8\u7f72\u4e00\u500b\u65b0\u7684Pod\uff0c\u76f4\u5230\u5168\u90e8\u66f4\u65b0\u5b8c\u6210\u3002<\/p>\n\n\n ~ END ~<\/p>\n\n\n\n \u4f7f\u7528Rolling Update\u6a5f\u5236\uff0c\u8b93\u66f4\u65b0\u670d\u52d9\u4e5f\u4e0d\u6703\u6709Downtime\uff0c\u4f46\u5176\u4e2d\u6709\u5f88\u591a\u5c0f\u7d30\u7bc0\u5fc5\u9808\u8981\u6ce8\u610f\uff01<\/p>\n","protected":false},"author":2,"featured_media":2733,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[191],"tags":[116,197,198],"_links":{"self":[{"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/posts\/2856"}],"collection":[{"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/comments?post=2856"}],"version-history":[{"count":17,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/posts\/2856\/revisions"}],"predecessor-version":[{"id":2952,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/posts\/2856\/revisions\/2952"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/media\/2733"}],"wp:attachment":[{"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/media?parent=2856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/categories?post=2856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jovepater.com\/wp-json\/wp\/v2\/tags?post=2856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\u4f7f\u7528Recreate\u7b56\u7565\u90e8\u7f72<\/strong><\/h2>\n\n\n\n
\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n name: nginx-server-replicaset\n labels:\n app: frontend\n env: production\nspec:\n selector:\n matchLabels:\n app: frontend\n replicas: 3\n strategy:\n type: Recreate\n template:\n metadata:\n name: nginx-server\n labels:\n app: frontend\n spec:\n containers:\n - name: nginx-server\n image: nginx;1.23\n<\/pre><\/div>\n\n\n
$ kubectl set image deployment.apps\/nginx-server-replicaset nginx-server=nginx:1.24.0<\/code><\/pre>\n\n\n\n
\nName: nginx-server-replicaset\nNamespace: default\nCreationTimestamp: Sun, 23 Apr 2023 20:09:48 +0800\nLabels: app=frontend\n env=production\nAnnotations: deployment.kubernetes.io\/revision: 2\nSelector: app=frontend\nReplicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable\nStrategyType: Recreate\nMinReadySeconds: 0\nPod Template:\n Labels: app=frontend\n Containers:\n nginx-server:\n # Image\u7248\u672c\u66f4\u65b0\u70ba1.24.0\n Image: nginx:1.24.0\n Port: <none>\n Host Port: <none>\n Environment: <none>\n Mounts: <none>\n Volumes: <none>\nConditions:\n Type Status Reason\n ---- ------ ------\n Available True MinimumReplicasAvailable\n Progressing True NewReplicaSetAvailable\nOldReplicaSets: <none>\nNewReplicaSet: nginx-server-replicaset-55bc549986 (3\/3 replicas created)\nEvents:\n Type Reason Age From Message\n ---- ------ ---- ---- -------\n Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set nginx-server-replicaset-67b95b8b9c to 3\n # \u505c\u63893\u500bPod\n Normal ScalingReplicaSet 18s deployment-controller Scaled down replica set nginx-server-replicaset-67b95b8b9c to 0 from 3\n # \u555f\u52d53\u500bPod\n Normal ScalingReplicaSet 16s deployment-controller Scaled up replica set nginx-server-replicaset-55bc549986 to 3\n<\/pre><\/div>\n\n\n
\u4f7f\u7528RollingUpdate\u7b56\u7565\u90e8\u7f72<\/strong><\/h2>\n\n\n\n
\n
\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n name: nginx-server-replicaset\n labels:\n app: frontend\n env: production\nspec:\n selector:\n matchLabels:\n app: frontend\n replicas: 3\n strategy:\n type: RollingUpdate\n rollingUpdate:\n maxSurge: 1\n maxUnavailable: 1\n template:\n metadata:\n name: nginx-server\n labels:\n app: frontend\n spec:\n containers:\n - name: nginx-server\n image: nginx\n<\/pre><\/div>\n\n\n
$ kubectl set image deployment.apps\/nginx-server-replicaset nginx-server=nginx:1.24.0<\/code><\/pre>\n\n\n\n
\nName: nginx-server-replicaset\nNamespace: default\nCreationTimestamp: Sun, 23 Apr 2023 20:40:23 +0800\nLabels: app=frontend\n env=production\nAnnotations: deployment.kubernetes.io\/revision: 2\nSelector: app=frontend\nReplicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable\nStrategyType: RollingUpdate\nMinReadySeconds: 0\nRollingUpdateStrategy: 1 max unavailable, 1 max surge\nPod Template:\n Labels: app=frontend\n Containers:\n nginx-server:\n Image: nginx:1.24.0\n Port: <none>\n Host Port: <none>\n Environment: <none>\n Mounts: <none>\n Volumes: <none>\nConditions:\n Type Status Reason\n ---- ------ ------\n Available True MinimumReplicasAvailable\n Progressing True NewReplicaSetAvailable\nOldReplicaSets: <none>\nNewReplicaSet: nginx-server-replicaset-55bc549986 (3\/3 replicas created)\n# K8S\u4f9d\u5e8f\u4e00\u500b\u4e00\u500bPod\u66f4\u65b0\nEvents:\n Type Reason Age From Message\n ---- ------ ---- ---- -------\n Normal ScalingReplicaSet 50s deployment-controller Scaled up replica set nginx-server-replicaset-67b95b8b9c to 3\n Normal ScalingReplicaSet 14s deployment-controller Scaled up replica set nginx-server-replicaset-55bc549986 to 1\n Normal ScalingReplicaSet 14s deployment-controller Scaled down replica set nginx-server-replicaset-67b95b8b9c to 2 from 3\n Normal ScalingReplicaSet 14s deployment-controller Scaled up replica set nginx-server-replicaset-55bc549986 to 2 from 1\n Normal ScalingReplicaSet 10s deployment-controller Scaled down replica set nginx-server-replicaset-67b95b8b9c to 1 from 2\n Normal ScalingReplicaSet 10s deployment-controller Scaled up replica set nginx-server-replicaset-55bc549986 to 3 from 2\n Normal ScalingReplicaSet 7s deployment-controller Scaled down replica set nginx-server-replicaset-67b95b8b9c to 0 from 1\n<\/pre><\/div>\n\n\n
\n\n\n\n< For K8S Beginner EP 10\uff1aKubernetes Network \u7db2\u8def\u67b6\u69cb<\/a><\/td> <\/td><\/tr><\/tbody><\/table><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"