【Kubernetes】Pod学习(十四)Deployment的升级策略

本文是学习《Kubernetes权威指南》的笔记,重点探讨了Deployment的两种更新策略:RollingUpdate(默认策略)和Recreate。RollingUpdate策略在更新过程中保持服务可用性,通过逐渐替换Pod来升级;而Recreate策略会先删除所有旧Pod再创建新Pod,可能导致服务短暂中断。文章还讨论了运行时标签选择器的操作及其影响。
摘要由CSDN通过智能技术生成

此文为学习《Kubernetes权威指南》的相关笔记

学习笔记:

对于大规模集群而言,如何在进行服务升级的同时保持可用性一直是一个难点。

作为Pod副本管理控制器,Deployment可以配置Pod发布和更新方式,保证在Pod升级过程中不存在Pod不可用的问题。

如果Pod是在Deployment上创建的,只需要在运行时修改Deployment的Pod定义或者镜像名称,并应用到Deployment镜像上,控制器就能够完成Deployment的自动更新操作,Deployment可指定的Pod更新策略有两种:

  • Recreate:设置spec.strategy.type=Recreate,该策略下将杀掉正在运行的Pod,然后创建新的。
  • RollingUpdate:设置spec.strategy.type=RollingUpdate,滚动更新,即逐渐减少旧Pod的同时逐渐增加新Pod。

其中默认的RollingUpdate滚动更新策略的“边删除边更新”保证了在更新期间的服务可用性,在使用这个策略时,有两个可定义参数:

  • spec.strategy.RollingUpdate.maxUnavailable:更新过程中Pod数量可以低于Pod期望副本的数量或百分比(默认25%)
  • spec.strategy.RollingUpdate.maxSurge:更新过程中Pod数量可以超过Pod期望副本的数量或百分比(默认25%)

接下来分别尝试使用两种更新策略

一、使用RollingUpdate更新策略

1、定义并创建nginx-deployment

在配置 nginx-deployment文件中,指定nginx容器版本为1.7.9,副本数为3

在不指定spec.strategy.type时,默认更新策略即为RollingUpdate

apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
spec:
 replicas: 3
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   name: nginx
   labels:
    app: nginx
  spec:
    containers:
    - name: nginx
      image: nginx:1.7.9
      imagePullPolicy: IfNotPresent
      ports:
      - containerPort: 80     

创建Deployment并查看部署情况

nginx-deployment配置生成了一个RS和下属的3个Pod副本

# kubectl create -f update-deployment-test.yaml
deployment.apps/nginx-deployment created

# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-7cccdd79bf   3         3    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值