zoukankan      html  css  js  c++  java
  • 备战CKA每日一题——第7天 | deployment的升级、回滚、滚动更新策略、roll、set image命令解释、initContainer考题

    本活动在微信公众号【我的小碗汤】上举行,有送书活动!这里参与答题不能参与到送书活动哦!

    昨日考题

    通过命令行,创建1个deployment,副本数为3,镜像为nginx:latest。然后滚动升 级到nginx:1.9.1,再回滚到原来的版本
    要求:Deployment的名称为cka-1125,贴出用到的相关命令。
    最好附带创建的Deployment完整yaml,以及和升级回滚有关的命令。

    昨日答案

    先创建deployment,可以用命令创建:

    kubectl run cka-1125  --image=nginx --replicas=3
    

    也可以用以下yaml:cka-1125.yaml创建

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: cka-1125
      name: cka-1125
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: cka-1125
      template:
        metadata:
          labels:
            app: cka-1125
        spec:
          containers:
          - image: nginx
            name: cka-1125
    

    创建:

    kubectl apply -f cka-1125.yaml
    

    升级:

    kubectl set image deploy/cka-1125 cka-1125=nginx:1.9.1 --record
    deployment.extensions/cka-1125 image updated
    

    回滚:

    # 回滚到上一个版本
    kubectl rollout undo deploy/cka-1125
    # 回滚到指定版本
    kubectl rollout undo deploy/cka-1125 --to-revision=2
    

    昨日解析

    官方中set image命令:
    https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#set

    set image命令

    set image命令格式如下:

    kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N [--record]
    

    --record指定,在annotation中记录当前的kubectl命令。 如果设置为false,则不记录命令。 如果设置为true,则记录命令。 默认为false。

    [root@liabio test]# kubectl set image deploy/cka-1125 cka-1125=nginx:1.9.1 --record
    deployment.extensions/cka-1125 image updated
    [root@liabio test]# 
    [root@liabio test]# kubectl rollout history deploy/cka-1125 
    deployment.extensions/cka-1125 
    REVISION  CHANGE-CAUSE
    3         <none>
    4         kubectl set image deploy/cka-1125 cka-1125=nginx:1.9.1 --record=true
    

    像上面这样,CHANGE-CAUSE中会有升级命令。

    set image命令可以对:pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), replicaset (rs),statefulset(sts)进行操作。

    roll命令

    roll命令官方文档:
    https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#rollout

    可以管理deployments、daemonsets、statefulsets资源的回滚:

    查询升级历史:

    [root@liabio test]# kubectl rollout history deploy/cka-1125 
    deployment.extensions/cka-1125 
    REVISION  CHANGE-CAUSE
    1         <none>
    2         <none>
    

    查看指定版本的详细信息:

    kubectl rollout history deploy/cka-1125 --revision=3 -o=yaml
    

    回滚到上一个版本:

    [root@liabio test]# kubectl rollout undo deploy/cka-1125 
    deployment.extensions/cka-1125 rolled back
    

    或者回滚到指定版本:

    [root@liabio test]# kubectl rollout undo deploy/cka-1125 --to-revision=3
    deployment.extensions/cka-1125 rolled back
    

    其他roll子命令

    restart:资源将重新启动;
    status:展示回滚状态;
    resume:恢复被暂停的资源。控制器不会控制被暂停的资源。通过恢复资源,可以让控制器再次控制。 resume仅对deployment支持。
    pause:控制器不会控制被暂停的资源。 使用kubectl rollout resume来恢复暂停的资源。 当前,只有deployment支持被暂停。

    滚动更新策略

    滚动更新官网文档:
    https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    minReadySeconds: 5
    strategy:
      type: RollingUpdate
      rollingUpdate:
        maxSurge: 1
        maxUnavailable: 1
    

    minReadySeconds
    Kubernetes在等待设置的时间后才进行升级
    如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了
    如果没有设置该值,在某些极端情况下可能会造成服务服务正常运行

    maxSurge

    控制滚动更新过程中副本总数超过DESIRED的上限。maxSurge可以是具体的整数,也可以是百分比,向上取整。maxSurge默认值为25%。

    例如DESIRED为10,那么副本总数的最大值为roundUp(10 + 10*25%)=13,所以CURRENT为13。

    maxUnavaible
    控制滚动更新过程中,不可用副本占DESIRED的最大比例。maxUnavailable可以是具体的整数,也可以是百分之百,向下取整。默认值为25%。

    例如DESIRED为10,那么可用的副本数至少要为 10-roundDown(10*25%)=8所以AVAILABLE为8。

    maxSurge越大,初始创建的新副本数量就越多;maxUnavailable越大,初始销毁的旧副本数目就越多。

    今日考题

    提供一个pod的yaml,要求添加Init Container,Init Container的作用是创建一个空文件,pod的Containers判断文件是否存在,不存在则退出
    注意:附带Pod完整yaml

    作者简介

    作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写linux、golang、docker、kubernetes等知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:我的小碗汤, 作者:小碗汤)

    作者简洁

    作者:小碗汤,一位热爱、认真写作的小伙,目前维护原创公众号:『我的小碗汤』,专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源(注明:来源于公众号:我的小碗汤,作者:小碗汤)

  • 相关阅读:
    HYSBZ 2818 gcd
    hdu1695 GCD
    HYSBZ 2301
    poj 2096
    正则表达式匹配HTML标签或标记
    [转载]Sed 命令详解 正则表达式元字符
    [转载]Shell删除各种注释的脚本
    [转载]sed实现直接修改文件内容
    [转载]强大的grep用法详解:grep与正则表达式
    [转载]【Shell脚本】逐行处理文本文件
  • 原文地址:https://www.cnblogs.com/liabio/p/11946289.html
Copyright © 2011-2022 走看看