zoukankan      html  css  js  c++  java
  • Kubectl Rollout 回滚及Autoscale自动扩容

    Kubectl Rollout 回滚及Autoscale自动扩容

    Kubernetes 中采用ReplicaSet(简称RS)来管理Pod。如果当前集群中的Pod实例数少于目标值,RS 会拉起新的Pod,反之,则根据策略删除多余的Pod。Deployment正是利用了这样的特性,通过控制两个RS里面的Pod,从而实现升级。
    滚动升级是一种平滑过渡式的升级,在升级过程中,服务仍然可用。

    1. 创建deployment
    kubectl create deploy nginx-test --image=nginx:1.14


    2. scale 副本数量
    kubectl scale deployment nginx-test --replicas 3

    如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展:
    kubectl autoscale deployment nginx-test --min=3 --max=5 --cpu-percent=80

    3. 更新 deployment
    更新镜像
    kubectl set image deployment/nginx-test nginx=nginx:1.15

    回滚到上一个版本:
    kubectl rollout undo deployment/nginx-test


    也可以使用 --revision参数指定某个历史版本:
    kubectl rollout undo deployment/nginx-test --to-revision=2

    4. 历史记录
    kubectl rollout history deployment/nginx-test

    创建 Deployment 的时候使用了--record参数可以记录命令,我们可以很方便的查看每次 revision 的变化。查看单个revision 的详细信息:
    kubectl rollout history deployment nginx-test --revision=3


    5. 验证发布
    kubectl rollout status deploy/nginx-test


    6. 回滚发布
    kubectl rollout undo deployments/nginx-test

    想回滚到指定版本呢?答案是k8s完美支持,并且还可以通过资源文件进行配置保留的历史版次量

    kubectl rollout undo deployment/nginx-test --to-revision=<版次>

    原理
    k8s分批次有序地进行着滚动更新,直到把所有旧的副本全部更新到新版本。实际上,k8s是通过两个参数来精确地控制着每次滚动的pod数量:

    maxSurge 滚动更新过程中运行操作期望副本数的最大pod数,但不能为0;也可以为百分数(eg:10%)。默认为25%。

    maxUnavailable 滚动更新过程中不可用的最大pod数,但不能为0;也可以为百分数(eg:10%)。默认为25%。

    重要参数 maxSurge与maxUnavailable
    maxSurge: 1 表示滚动升级时会先启动1个pod
    maxUnavailable: 1 表示滚动升级时允许的最大Unavailable的pod个数
    由于replicas为3,则整个升级,pod个数在2-4个之间

    剖析部署概况
    DESIRED 最终期望处于READY状态的副本数
    CURRENT 当前的副本总数
    UP-TO-DATE 当前完成更新的副本数
    AVAILABLE 当前可用的副本数
    滚动过程是通过控制两个副本集来完成的
     
    使用 autoscaler 自动设置在kubernetes集群中运行的pod数量(水平自动伸缩)。

    指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

    $ autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

    示例
    使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。

    kubectl autoscale deployment/nginx-test --min=2 --max=10

    使其Pod的数量介于1和5之间,CPU使用率维持在80%。

    kubectl autoscale deploy/nginx-test --max=5 --cpu-percent=80
    



  • 相关阅读:
    16.检查是否为BST
    15.输出单层结点
    14.高度最小的BST
    *13.有向路径检查
    12.二叉树平衡检查
    11.双栈排序
    10.回文链表
    9.链式A+B
    8.链表分割
    7.访问单个节点的删除
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/11062803.html
Copyright © 2011-2022 走看看