K8S基本操作-19-K8S的 Rolling Update與 Recreate
我們觀察以下的 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2024-02-01T01:17:43Z"
generation: 1
name: frontend
namespace: default
resourceVersion: "1023"
uid: 2933b6b7-59b7-412f-b806-8b80a593f61f
spec:
minReadySeconds: 20
progressDeadlineSeconds: 600
replicas: 4
revisionHistoryLimit: 10
selector:
matchLabels:
name: webapp
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
name: webapp
spec:
containers:
- image: kodekloud/webapp-color:v1
imagePullPolicy: IfNotPresent
name: simple-webapp
ports:
- containerPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
滾動更新策略
我們注意到有一段在描述更新策略,在說明滾動更新RollingUpdate
。
這種策略每次會只對有限的 Pod 進行滾動更新,確保服務不會中斷。
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
上述描述:
maxSurge: 25%:
- 修正中的Pod,最多只能有25%。
maxUnavailable: 25%
- 不可存取的Pod,最多只能有25%。
重新創建策略
也可以修改成重新創建策略,這種策略會同時重新創建所有Pod的副本,然後刪除原本的Pod。
這種方法會消耗很多的資源,並且會中斷服務。
strategy:
type: Recreate