(相关资料图)

当需要升级Deployment中的Pod镜像或者配置时,可以使用滚动更新策略,避免出现服务中断或者数据丢失。滚动更新策略可以让新的Pod在替代旧的Pod之前先完成启动,这样就能保证服务的持续可用性。Kubernetes中Deployment对象提供了两种滚动更新策略:RollingUpdate和Recreate。

RollingUpdate策略

RollingUpdate策略是默认的滚动更新策略,它会逐步替换旧的Pod。在滚动更新期间,Deployment会根据设置的replicas数量逐步替换旧的Pod,这样新的Pod就能够逐渐提供服务,而旧的Pod也可以逐步被停止。RollingUpdate策略的优点是升级过程中不会中断服务,但需要保证新的Pod可以正常运行,并且与旧的Pod能够共存。

RollingUpdate策略中的参数主要包括:

maxUnavailable: 表示在进行滚动更新时,Deployment最多可以有多少个Pod不可用。默认值为25%,即在进行滚动更新时,Deployment至少要保持25%的Pod可用。maxSurge: 表示在进行滚动更新时,Deployment可以同时创建多少个Pod。默认值为25%,即在进行滚动更新时,Deployment可以创建的新Pod数目不超过当前Pod数量的25%。

下面是一个RollingUpdate策略的示例:

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deploymentspec:  replicas: 3  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:1.14.2        ports:        - containerPort: 80      imagePullSecrets:      - name: regcred      terminationGracePeriodSeconds: 30      rollingUpdate:        maxUnavailable: 1        maxSurge: 1

在这个示例中,Deployment使用了RollingUpdate策略。maxUnavailable设置为1,表示在滚动更新期间最多只能有1个Pod不可用;maxSurge设置为1,表示在滚动更新期间最多可以同时创建1个新的Pod。

推荐阅读

更多 >

最近更新

更多 >