zoukankan      html  css  js  c++  java
  • Kubernetes的Deployment对象使用

    一、什么是Deployment对象

    明明ReplicaSet已经可以控制pod的数量了,为什么还需要Deployment?

    简单的说,Deployment控制ReplicaSet的多个版本,ReplicaSet控制Pod个数

    Deploymen实际上一个两层控制器,遵循一种滚动更新的方式来实升级现有的容器,这个能力的实现,依赖的就是ReplicaSet这个对象
    当我们修改了Deployment对象后,Deployment控制器会使用修改后的模板,创建一个新的ReplicaSet对象,这时候有两个RelicaSet对象,
    Deployment通过控制ReplicaSet对象的pod数量来达到滚动升级的效果
    例如A和B,如果最终设置的pod数都是3,通过A-1,B+1这样的方式,直到A的pod数量变为0,最终 达到了滚动升级的目的。
    同时,因为存在多个ReplicaSet,让回滚成为了可能

    二、使用示例

    示例yaml文件

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    
    

    template字段,指定了创建pod的模板
    replicas指定了pod的节点数量
    还有一个 type: RollingUpdate,指定了滚动升级的策略

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
    ...
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1
    
    

    查看deployments

    kubectl get deployments demo2 -o wide
    NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                        SELECTOR
    demo2   2/3     3            2           24d   demo2        harbor.eoffcn.com/dev/demo2   workload.user.cattle.io/workloadselector=deployment-web-demo2
    

    UP-TO-DATE:当前处于最新版本的 Pod 的个数,所谓最新版本指的是 Pod 的 Spec 部分与 Deployment 里 Pod 模板里定义的完全一致
    AVAILABLE:当前已经可用的 Pod 的个数,即:既是 Running 状态,又是最新版本,并且已经处于 Ready(健康检查正确)状态的 Pod 的个数
    READY:前处于 Running 状态的 Pod 的个数/用户期望的 Pod 副本个数

    三、查看历史和回滚

    查看历史版本

    kubectl rollout history deployment ${name} 
    deployment.extensions/demo2 
    REVISION CHANGE-CAUSE
    1 <none>
    2 <none>
    3 <none>
    4 <none>
    

    查看指定版本

    kubectl rollout history deployment ${name} --revision=${version}
    

    回滚到上一版本

    kubectl rollout undo deployment  ${name}
    

    回滚到指定版本

    kubectl rollout undo deployment ${name} --to-revision=${version}
    
  • 相关阅读:
    适用于ASP.NET的留言本(翻译)
    大足石刻一日游
    Zonet 宽带路由器eMule端口映射设置
    在公式编辑器中使用键盘
    TAU G2的错误信息:TSC0134: Transition must end with stop, nextstate or join action
    Sony DV的CCD也是有问题的
    使用UltraEdit实现从UNIX文件到DOS文件的批量转换
    在PowerPoint中改变公式编辑器的颜色
    如何在Visual Studio.NET 2003下编译ANTLR 2.77
    如何修复修复损坏的TAU G2的.u2文件
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/11602950.html
Copyright © 2011-2022 走看看