kubernetes的Deployment控制器

上一篇博客写了k8s replicaset与deployment 区别。主要写一下 deployment 一些功能

还是以一个文件部署应用开始,所有的应用部署都以 nginx 为例,部署到

  • 部署文件
    nginx-deploy.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels: 
    run: nginx01
  name: nginx01
spec:
  replicas: 3
  selector:
    matchLabels:
      run: nginxhh
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: nginxhh
    spec:
      containers:
      - image: tomcat:8
        name: nginxhh
status: {}
  • 回滚
# 部署
[root@guanzc-130 kubernetes]# kubectl apply -f nginx-deploy.yml
# 修改部署
[root@guanzc-130 kubernetes]# kubectl edit deploy nginx01
# 查看部署版本
[root@guanzc-130 kubernetes]# kubectl rollout history deployment nginx01     
deployment.apps/nginx01 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none> # 部署了三次
# 部署状态查看
[root@guanzc-130 kubernetes]# kubectl rollout status deploy nginx01
deployment "nginx01" successfully rolled out
 #回滚到版本1
[root@guanzc-130 kubernetes]# kubectl rollout undo depoly nginx01 --to-revision=1
[root@guanzc-130 kubernetes]# kubectl rollout history  deploy nginx01
deployment.apps/nginx01 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
4         <none>
[root@guanzc-130 kubernetes]# kubectl get pod # 查看状态

版本由1变为4 回滚成功

  • 更新属性配置
    spec参数设置
  • revisionHistoryLimit: 记录多少条更新历史
...
spec:
  replicas: 3
  revisionHistoryLimit: 3 # 记录 3条更新
  selector:
    matchLabels:
      run: nginxhh
  template:
...
  • paused:一次升级过程中可能要经过几次小的变更,每次变更都会产生一个新的版本号,如果不想在中间过程产生版本号,全部更新完成后,只生成一个版本号,开启 paused 配置
#暂停记录
kubectl rollout pause deployment nignx01
# 镜像升级、修改资源配置、修改副本数等操作,版本会发生改变
kubectl scal --replicas=5 deploy nginx01  # 扩容
kubectl edit deploy nginx01 #修改镜像
# 查看版本记录
kubectl rollout history deploy nginx01
# 版本状态
kubectl rollout status deploy nginx01 
# 以上操作发现版本并未发生变化,关闭暂停后,以上操作会执行,并生成一个新的版本
kubectl rollout resume deployment nginx01
  • 回滚策略

deploument 支持回滚策略有两种:

  • Recreate:新建升级,之前应用全部停掉,重新创建升级,升级期间服务不可用,适合停机升级
  • RollingUpdate: 滚动升级,升级期间服务可用

Recreate 配置

spec:
  replicas: 3
  revisionHistoryLimit: 3
  strategy:
    type: Recreate  # 创建新的升级
  selector:
    matchLabels:
      run: nginxhh
  template:

RollingUpdate 滚动升级,设置不同策略,保证不停机升级

spec:
  replicas: 3
  revisionHistoryLimit: 3
  strategy:
    type: RollingUpdate
    maxSurge: 10  #最大增量
    maxUnavailable: 2 # 最大不可用
  selector:
    matchLabels:
      run: nginxhh
  template:

总结

deployment 进行版本记录、更新、恢复、回滚功能

你可能感兴趣的:(kubernetes)