Deployment, 水平扩展/收缩.

    • 依赖 ReplicaSet
    1. apiVersion: apps/v1
    2. kind: ReplicaSet
    3. metadat:
    4. name: nginx-set
    5. labels:
    6. app: nginx
    7. spec:
    8. replicas: 3
    9. selector:
    10. matchLabels:
    11. app: nginx
    12. template:
    13. metadata:
    14. labels:
    15. app: nginx
    16. spec:
    17. containers:
    18. - name: nginx
    19. image: nginx:1.7.9

    image.png

    image.png

    使用命令扩容:

    $ kubectl scale deployment nginx-deployment --replicas=4
    

    创建 deployment:

    $ kubectl create -f dep.yaml --record
    
    • desired: 期望的 pod 数
    • current: 处于 running 状态的 pod 数
    • up-to-date: 处于最新版本的 pod 数
    • avaliable: 同时处于 running, 最新版本, ready 状态的 pod 数

    实时查看 deployment 对象状态:

    $ kubectl rollout status deployment/nginx-deployment
    

    要使用滚动更新, 那么需要使用 Pod 的健康检查机制, 而不是简单依赖容器的 running 状态.

    • RollingUpdateStrategy 配置起停比例

    image.png

    • maxSurge 指定的是除 desired 数量外’在—次滚动更新中Deployment控制器还可以创建多少新Pod;
    • 而 maxUnavailable 指的是在一次滚动更新中Deployment控制器可以删除多少旧 Pod
      • 可以使用百分比形式: maxUnavailable=50%, 50%*desired

    image.png

    • 一个 ReplicaSet 代表一个版本

    回滚到上一个版本:

    $ kubectl rollout undo deployment/nginx-deployment
    

    回到更早之前的版本:

    image.png

    $ kubectl rollout undo deployment/nginx-deployment --to-revision=2
    

    如果把 spec.revisionHistoryLimit 设置为0, 那么就不能进行回滚操作了

    • 限制了 deployment 所控制的 replicaSet 的数量