控制器
Deployment
1 | # nginx-deployment.yaml |
创建Deployments
- record参数设置为true,在Deployment revision时方便命令记录,以及在describe时能够看到Annotations中指令记录
1 | $ kubectl create -f nginx-deployment.yaml --record |
查看发布历史记录
- rollout 字面是上线意思,我理解为发布.
替换metadata.name,即上面文件中的nginx-deployment名称.
1 | # kubectl rollout history deployment/[metadata.name] |
查看历史版本的具体信息
1 | $ kubectl rollout history deployment/nginx-deployment --revision=1 |
查看Deployments
1 | $ kubectl get deployment [metadata.name](可选) |
查看RS(ReplicaSet)
1 | $ kubectl get rs |
更新Deployments(自动rollout)
1 | # 方式一,修改文件中的spec.template.spec.containers[0].image值 |
查看发布状态
1 | # kubectl rollout status deployment/[metadata.name] |
查看deployment详细信息
- 关注Events,记录了发布的过程.实际是创建了一个新的ReplicaSet->nginx-deployment-6ccc5f4cbb,然后逐渐下原来的ReplicaSet->nginx-deployment-966857787的Pod.
1 | # kubectl describe deployment/[metadata.name] |
版本回退
回滚之后,revision对应记录就会消失
undo是回滚到上一个版本的操作.
假设有三个版本:nginx:1.4.7, nginx:1.7.9, nginx:1.9.7, nginx:1.10.3,当前版本为nginx:1.10.3.
1、假如指定to-revision回滚到1.7.9版本,再执行undo(不指定to-revision),则恢复到1.10.3版本.
2、第一次执行undo(不指定to-revision),回滚到1.9.7版本,再次执行undo(不指定to-revision),则恢复到1.10.3版本.
3、第一次指定to-revision回滚到1.7.9,第二次指定to-revision回滚到1.9.7,第三次指定to-revision回滚到1.4.7,第四次指定undo(不指定to-revison),则是回滚到1.9.7.
假设有三个版本:nginx:1.7.9,nginx:1.9.7,nginx:1.10.3,当前版本为nginx:1.10.3.
1 | # 查看发布历史记录 |
第一次执行undo回退到前一个版本,即nginx:1.9.7.如果第二次再执行,又会回滚到原版本,即nginx:1.10.3.
1 | # kubectl rollout undo deployment/[metatdata.name] |
指定to-revision回退到指定历史
1 | # kubectl rollout undo deployment/[metadata.name] --to-revision=[number] |
Deployment扩容
指定 扩容/缩容 副本数量
1 | # kubectl scale deployment/[metadata.name] --replicas=[number] |
当集群启用horizontal pod autoscaling后,可以根据CPU利用率,在范围内扩容或缩容.(todo还不知道怎么做)
1 | $ $ kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80 |
设置Deployments发布历史记录
在nginx-deployment.yaml中设置spec.revisionHistoryLimits属性,默认是保留全部历史记录.可以不用去理会.
设置Deployments发布策略
spec.strategy
指定新的Pod替换旧的Pod的策略。 spec.strategy.type
可以是Recreate
或者是 RollingUpdate
。RollingUpdate
是默认值。
- Recreate 指在创建出新的Pod之前会杀掉已经存在的Pod.(强烈建议不使用)
- RollingUpdate 指滚动升级.逐步一个一个交替升级.可以指定
maxUnavailable
和maxSurge
来控制 rolling update 进程。- maxUnavaiables
.spec.strategy.rollingUpdate.maxUnavailable
指定在升级的过程中不可用的Pod数量.默认为1,也可以设置为百分比.如设置为30%,则原来的ReplicaSet会立刻缩容到70%. - maxSurge
.spec.strategy.rollingUpdate.maxSurge
指定在升级过程中,新老Pod的总数的最大值.如设置为30%,启动rolling update后新的ReplicatSet将会立即扩容,新老Pod的总数不能超过期望的Pod数量的130%。
- maxUnavaiables
Pause设置
.spec.paused
是可以可选配置项,boolean值。默认为false.
如果设置paused后,对Deployment中的PodTemplateSpec的修改都不会触发新的rollout。