部署:声明式地更新应用
- 0 引入新的资源类型Deployment
- 更新策略:1) 停止所有旧版本,部署新版本(Recreate);(2) 启动所有新版本,再停止旧版本,称之蓝绿部署;手动滚动更新,缩小旧ReplicationController,扩大新的(RollingUpdate);自动滚动更新。
- 单个yaml文件可以同时定义多个类型的资源,只需要用—作分割线。
- 从某个pod中,访问集群IP kubectl exec kubia-v1-8qsjf – curl -s 10.109.223.87
- 已经废弃的滚动更新命令kubectl rolling-update kubia-v1 kubia-v2 --image=luksa/kubia:v2,该命令会复制旧的模板信息,启动新的Controller。为旧pod添加deployment标签,再更新旧ReplicationController的Selector。新旧Controller的标签值不一样。然后开始缩放。
- –v 6 查看kubectl发给API Server的请求。
- 废弃kubectl rolling-update的原因:不想让label被修改,这样会导致某些selector失效;缩放过程中网络可能故障,导致一些问题。
- 引入新的资源类型Deployment,避免旧的自动滚动更新带来的问题。Deployment是一个高级别的资源,高于ReplicaSets,方便对ReplicaSets进行操作。
- kubectl rollout status deployment kubia
- kubectl patch deployment kubia -p ‘{“spec”: {“minReadySeconds”: 10}}’ 修改资源。
- 更新镜像,触发滚动更新:kubectl set image deployment kubia nodejs=myorange/kubia:v2
- 回滚更新:kubectl rollout undo deployment kubia。
- 查看回滚历史:
kubectl rollout history deployment kubia
- 回滚到指定版本:kubectl rollout undo deployment kubia --to-revision=1
- 控制回滚速率:maxSurge最多允许(1+p)*n个实例存在, maxUnavilable 存活点实例/n >= (1 - p)。也可能不是概率,是个数
- 暂停回滚过程:
kubectl rollout pause deployment kubia
。恢复回滚:kubectl rollout resume deployment kubia
- 更新。kubectl apply -f kubia-deployment-v3-with-readinesscheck.yaml --validate=false readiness探针阻止坏的版本滚动更新。
Review