专栏首页阿林前端开发攻城狮了解Kubernetes滚动升级
原创

了解Kubernetes滚动升级

  1. 清空所有的Pod;
kubectl delete pods --all
  1. 这里我们采用最开始使用nginx-deployment.yaml文件;
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        resources:
          limits:
            memory: "128Mi"
            cpu: "128m"
        ports:
        - containerPort: 80
  1. 创建deployment资源;
kubectl apply -f nginx-deployment.yaml
  1. 查看Pod执行情况;
kubectl get pods

  1. 切换镜像版本为1.9.1,这里触发滚动更新的方式有两种:一种使用kubectl edit,另外一种使用kubectl set image;
#第一种方式
kubectl edit deployment/nginx-deployment
#第二种方式
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
  1. 查看deployment更新过程;
kubectl rollout status deployment/nginx-deployment

  1. 再次查看Pod状况,会发现Pod,名称已经发生改变;

  1. 查看Pod使用的镜像版本,我们会发现nginx的镜像版本已经被替换为1.9.1;
kubectl describe pod/nginx-deployment-79fbcd54b4-j9n62

  1. 查看Pod更新过程,我们会发现Deployment资源的本质就是ReplicaSet,当我们创建Deployment系统会创建3个ReplicaSet,更新Deployment资源的时候会创建一个新ReplicaSet,减少一个旧版本的ReplicaSet,后续慢慢替换为新版本ReplicaSet;
kubectl describe deployment/nginx-deployment

  1. 查看ReplicaSet版本;
kubectl get rs

总结:Deployment实际上是一个两层控制器。首先,它通过 ReplicaSet 来控制应用的版本;然后,它再通过 ReplicaSet 的属性,来保证 Pod 的副本数量。

在Deployment定义中,可以通过spec.strategy指定Pod的更新策略,目前支持两种策略:

  1. Recrate(重建): 更新Pod的时候会杀掉所有在运行的Pod,然后重新创建Pod;
  2. RollingUpdate(滚动更新): 默认选项,以滚动更新的方式来逐个更新Pod,可以通过spec.strategy.rollingUpdate下面两个参数maxUnavailable和maxSurge来控制滚动更新;

maxUnavailable: 用于指定Deployment在更新过程中不可用状态Pod的上限,可以是百分比也可以是绝对值;

maxSurge: 用于指定在Deployment更新过程中Pod总数量超过期望副本的最大值,可以是百分比也可以是绝对值;从Kubernetes1.6版本开始,以上两个值的默认为25%;

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kubernetes DaemonSet的滚动升级

    DaemonSet好比Kubernetes集群Node的守护进程,可以保证在每个Node上(或者一部分Node上)都运行同一个Pod。 目前我们的线上环境主要用...

    domain0
  • 浅入Kubernetes(12):Deployment 的升级、回滚

    打开 https://hub.docker.com/_/nginx 可以查询 nginx 的镜像版本,我们可以先选择一个旧一点的版本。

    痴者工良
  • Kubernates之Deployment滚动升级和回滚

    从上面的结果可以看出在执行Deployment升级的时候最好带上record参数,便于查看历史版本信息

    克虏伯
  • ReplicationController与Deployment的关系

    Replication Controller为Kubernetes的一个核心内容,应用托管到Kubernetes之后,需要保证应用能够持续的运行,Replica...

    菲宇
  • kubernetes学习记录(7)——弹性伸缩与滚动升级

    弹性伸缩 弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源。 Pod的弹性伸缩就是修改Replication Controller的Pod副本数。可以通过K...

    胡了了
  • Replication controller与Deployment的区别

    老七Linux
  • 从入门到跑路之Kubernetes(七)

    Replication Controller(RC)是Kubernetes的另一个核心概念,应用托管在Kubernetes上之后,Kubernetes需要保证应...

    周萝卜
  • 如何在Service Mesh微服务架构中实现金丝雀发布?

    今天的文章继续聊聊有关Service Mesh微服务架构的话题,如果对之前的聊过的话题还不了解,可以参考文末的推荐阅读。今天要聊的话题是:如何在Service ...

    用户5927304
  • 在Kubernetes上运行SAP UI5应用(下)

    上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个U...

    Jerry Wang
  • 在Kubernetes上运行SAP UI5应用(下)

    上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个U...

    Jerry Wang
  • 一步步在Kubernetes里运行Web应用

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • Deployment vs ReplicationController in Kubernetes

    此文主要选择了两个最常用的 controller : Deployment 和 ReplicationController ,从各自功能,优缺点方面进行对比,...

    腾讯云容器服务团队
  • 「走进k8s」Kubernetes1.15.1对象ReplicationController与Replica Set详解(21)

    1.Replication Controller:用来部署、升级Pod 2.Replica Set:下一代的Replication Controller 3.D...

    IT架构圈
  • MGR 5.7滚动升级MGR 8.0

    在执行上面一条更新SQL的时候,发现了上述报错,这条数据在MGR的每个节点上都进行了查看,数据都是有的。

    AsiaYe
  • 小报温馨提示:您的弹性容器服务正在配送

    2019年匆匆而去,留下的是我们每一个人所有的努力,在新的一年里,它们将陪伴着我们继续新的征程,见证新的里程。年初是奋斗的季节,年末是收获的时刻,2019年的最...

    腾讯云原生
  • 10月,TKE 节点滚动重装升级 kubernetes 版本内测发布

    腾讯云容器服务支持节点升级,提供将一批集群的节点从较低版本升级到高版本的功能。通过节点滚动重装升级,能够帮助用户快速批量升级集群的节点。 【适用场景】:适用于升...

    腾讯云原生
  • Kubernetes Deployment滚动更新场景分析

    基于Kubernetes v1.7.4 关于Kubernetes Deployment滚动更新 Kubernetes官网文档说明:https://kube...

    Walton
  • 「走进k8s」Kubernetes1.15.1的Deployment 的使用(22)

    多种升级方案:Recreate:删除所有已存在的pod,重新创建新的; RollingUpdate:滚动升级,逐步替换的策略,同时滚动升级时,支持更多的附加参数...

    IT架构圈
  • Kubernetes核心概念总结

      Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd。

    用户1263954

扫码关注云+社区

领取腾讯云代金券