软件更新此时不可用(软件更新此时不可用,请稍后再试)

本文基于《Kubernetes in Action》第9章整理。在进入正文前,不得不感慨一下标签选择器的设计对解耦k8s各模块发挥的作用。k8s的service, replicaS

本文基于《Kubernetes in Action》第9章整理。

在进入正文前,不得不感慨一下标签选择器的设计对解耦k8s各模块发挥的作用。k8s的service, replicaSet, 滚动升级,调度的亲缘性和污点容忍度都离不开标签选择器。标签选择器让k8s对资源的操作更加灵活。

手动进行滚动升级

我们先用如下的配置创建一个ReplicationController

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: test:v1
          name: my-container

并创建一个service,其标签选择器是 “app: kubia”

现在我们想要更新镜像,可以执行如下步骤进行滚动升级。

  • 新建一个新的ReplicationController,如下所示
apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia-v2
spec:
  replicas: 0
  selector:
    matchLabels:
      app: kubia
      deployment: 757d16 # 增加标签,用于标记此次的升级记录
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
        deployment: 757d16 # 增加标签,用于标记此次的升级记录
    spec:
      containers:
        - image: test:v2 # 修改镜像
          name: my-container
  • 为原pod和ReplicationController增加标签:deployment: 343der。此时,kubia-v1还是管理着原先的pod,kubia-v2新建的pod不会被kubia-v1管理。但是不论kubia-v1还是kubia-v2创建的pod,都会和之前建的service关联。
  • 逐步扩容kubia-v2,并逐步缩容kubia-v1,直至所有pod都是由kubia-v2管理,则此次滚动升级结束

上述的步骤,也是之前kubectl的roling-update命令执行的大概过程。

这个过程存在以下弊端

  1. 过程繁琐。需要多次和API服务器交互
  2. 是在客户端执行,因此无法保证一致性,如果在滚动升级过程中和API服务器的交互出现问题,则pod, rc等资源会处于中间状态
  3. 不符合k8s的设计理念。应该通过设置期望的状态而不是告诉需要做哪些事情

通过Deployment滚动升级

首先创建以下配置,命名为deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: kubia
spec:
  replicas: 3
  progressDeadlineSeconds: 600 # 滚动升级失败的超时时间
  minReadySeconds: 10 # 需要容器就绪多久后才能认为可用,在可用前,滚动升级不会继续。这个可以用于控制滚动升级的速率
  strategy:
    rollingUpdate:
      maxSurge: 1 # 在期望副本数基础上,最多允许超出的pod实例数量,允许设置绝对值和百分比
      maxUnavailable: 25% # 相对于期望副本数,允许有多少pod实例处于不可用状态,允许设置绝对值和百分比
    type: RollingUpdate # 表示滚动升级。也可以配置成 Recreate,其会一次性删除所有旧版本的pod,然后创建新的pod
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: test:v1
          name: my-container

执行下面命令会创建Deployment

kubectl create -f deployment.yaml --record

–record会记录历史版本号,在回滚时会很有用

随后,这个deployment会创建一个ReplicaSet,然后新建的ReplicaSet再去创建pod,不过这个都不需要我们关注。所以,Deployment是比ReplicaSet更高级的资源,是用于协调多个ReplicaSet的。

修改pod模板才会触发滚动升级,因此修改deployment本身的配置,以及pod关联的ConfigMap等都不会触发滚动升级。当滚动升级开始的时候,会新建一个ReplicaSet,根据新的pod模板创建新的pod,并不断扩容新的ReplicaSet,缩容旧的ReplicaSet。过程类似上面介绍的手动滚动升级,区别是Deployment不会删除旧的ReplicaSet,因此可以方便的进行回滚。

滚动升级相关的命令是kubectl rollout,可以查看其都有哪些子命令

软件更新此时不可用(软件更新此时不可用,请稍后再试)

kubectl rollout命令

kubectl rollout history deployment my-deployment # 可以查看my-deployment的滚动升级历史
kubectl rollout pause deployment my-deployment # 可以暂停滚动升级
kubectl rollout resume deployment my-deployment # 可以恢复滚动升级
kubectl rollout status deployment my-deployment # 可以查看滚动升级中的状态
kubectl rollout undo deployment my-deployment --to-revision=1 # 回滚到指定版本

聊一下服务的上线

服务的上线是一个危险的动作,很多事故都是因为上线引起的。之所以危险,原因有很多,比如测试不到位,服务没有优雅退出,没有做好兼容等。所以对于服务的上线,需要足够的敬畏。

为了减少服务上线带来的事故,采取的措施一般有

  1. 封线。比如节假日前后,流量高峰期时一般不允许上线
  2. 周知。周知相关服务的负责人,让他们协助在服务上线期间一起观察服务有无异常
  3. 分阶段升级。比如第一次只升级其中一个实例,第二次升级3个实例,逐步放量,缓慢上线
  4. 做好观察。在服务上线期间,需要盯监控,关注告警,观察失败日志,在出现异常的时候第一时间会滚

版权声明:本文图片和内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送联系客服 举报,一经查实,本站将立刻删除,请注明出处:https://www.4kpp.com/73747.html

(0)
漫空客漫空客
上一篇 2023年4月26日 上午12:22
下一篇 2023年4月26日 上午12:23

相关推荐

  • 淘宝客服电话号码(淘宝客服商家服务电话)

    导语:客服其实是淘宝网店的一种服务方式,一般会回答买家提供的问题,包括物品的售后相关服务。整个的网店当中,客服被定义为奋斗在一线的岗位,无论是对业绩还是运营指标的影响,都是至关重要

    2023年4月28日
    1240
  • 水龙头坏了怎么办(水龙头坏个小孔怎么修)

    家里的水龙头在长时间使用后会老化和漏水,这也意味着应该更换水龙头。一些人更换水龙头时,刚刚更换的水龙头仍然漏水,这是不正确的更换方法。如何正确更换水龙头?更换水龙头时,应注意哪些问

    2024年3月30日
    500
  • 100格箱子的材料(永恒之塔100格箱子的材料)

    我的世界我们经常需要收集物品,收集后的物品,需要有地方防止,因此我们就需要制造仓库,但是物品多了之后连仓库都后装不下了,并且当我们需要一些东西去仓库寻找的时候特别麻烦,那么这个时候

    2023年4月26日
    1760
  • 红玉圣殿掉落(wlk什么职业吃香)

    大家好,我是夜幕下的王者,本期我们来继续聊一聊魔兽世界80级怀旧服中的装备。个人感觉,对于法系DPS职业来讲,最好的饰品并非被摘除的外物,也不是无名巫妖的护符匣,而是红玉圣殿BOS

    2023年4月26日
    1430
  • 冒险岛纪念币(冒险岛纪念币钱包在哪里买)

    秋去冬来,冬天的早晨总会让人有一种“冉冉晨雾重,晖晖冬日微”的感觉,而当太阳缓缓升起,冬日暖阳慢慢爬上肩膀,融化了初雪覆盖的大地,这种惬意感绝不亚于春日朝阳。经典2D横版端游《冒险

    2023年4月26日
    2540
  • w395(W395焊条偏吹)

    黎川交警公布一批11月份逾期未检和即将到年检期限的面包车名单号牌号码所有人有效期至住所详细地址F752T8丁胜辉2022-12-31江西省抚州市黎川县德胜镇德胜村德胜路104号FT

    电商 2023年5月2日
    320
  • ipad2 ios7(ipad2 ios7.1.1越狱)

    苹果公司发布了老款iPhone和MacBook的软件更新,其中一些机型就像10年前于2013年9月推出的iPhone 5s一样过时。这与苹果公司为新款iphone推出iOS 16.

    2024年3月25日
    350
  • 套大可(淘大客淘宝信誉查询)

    首先笔者自身是在诸多质疑中从传统暴击暴加的路线中走了出来.和朋友一起转型尝试了破防的路线很多人很好奇,破防流到底厉害不厉害,是不是真的和传闻中一样伤害报表。那笔者这么给你们形容,一

    2023年4月24日
    2650
  • 淘宝网女羽绒服天猫积分的有效期是多久(淘宝天猫积分服务费)

    加入京东8年,过去的一年可能是冯轶角色转变最大的一段时间。去年8月,京东集团高级副总裁冯轶调任时尚居家事业群总裁,这不仅仅是角色的转变,也是一次重新出发。时尚居家事业群下的某些品类

    电商 2023年4月24日
    1980
  • 鬼泣5修改器不能用(鬼泣5修改器不能用怎么办)

    引言: 在游戏系列化的过程中,零式作品往往起到一些意想不到的作用(反作用)。当某个游戏系列发展到一定阶段后,其所积累下来的种种问题,有时会导致不同程度的剧情堆积,角色刻板,玩法重复

    2023年4月26日
    1310

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注