K8s Deployment
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s Deployment相关的知识,希望对你有一定的参考价值。
参考技术A Deployment是ReplicaSet的升级版,支持在恒定速度的之下从一个状态转移到另一个状态(滚动升级)。ReplicaSet 和Replication Controller 也支持rollout update,但是存在问题
存在的问题是rollout过程归client端控制而不是server。如果在rollout过程中kubectl和server失去联系,整个rollout会出现问题。
Deployment的rollout过程归server控制,不存在上述的问题。
Deployment的实现依赖ReplicaSet(仍会创建ReplicaSet),Deployment是ReplicaSet的封装。
以上配置:
输出表格有如下几列:
--record会记录deployment的历史revision。
相关的修改命令会记录在pod的kubernetes.io/change-cause annotation中。
Deployment自己创建的ReplicaSet以及pod的label会带有一段hash,即pod-template-hash。它的作用为确保归此deployment管理的ReplicaSet和pod不会和其他的发生冲突。
滚动升级当且仅当在pod template修改之后才会触发。
修改镜像版本
或者是编辑deployment描述文件
pod被update之后,deployment会创建新的replicaSet,并且逐步scale到配置的replica数。同时老的replicaSet会逐步scale到0。
如果在rollout过程中pod发生了更新,不会等到老的replicaSet scale到 desired state(达到指定的replica数量),会立刻开始scale到0的过程。
新的pod状态变为ready或available(至少需要等待MinReadySeconds)。
输入类似如下界面:
可以通过如下方式指定CHANGE-CAUSE:
在滚动升级的过程中,新老版本的pod同时在运行。如果在升级过程尚未完成之时调大replica数值,比如说增加5。由于百分比扩展特性的存在,这新增的5个replica不会都分配给新的ReplicaSet,而是按照比例同时分配给新老ReplicaSet,新的ReplicaSet占比多,老的ReplicaSet占比少。以新增5个replica为例,新的ReplicaSet会增加3,老的ReplicaSet会增加2。
pod至少多久之后才会被认为可用。
只有在时间超过minReadySeconds,并且readness probe检测状态正常的时候,pod才会被k8s认为是可用的,滚动升级才会进行。
增加deployment部署时间超时限制。
Deployment超时的时候k8s不会自动处理,只会返回状态值 Reason=ProgressDeadlineExceeded
Rollout时候暂停,k8s不会检查部署超时限制(progressDeadlineSeconds),因此不用担心rollout恢复操作的时候超时。
RollingUpdate参数解释(英文描述还是比较精确的,因此从官网摘抄下来):
个人对应的理解为:
3.5 样本分布K-S检验 ——python实战
文章目录
import tensorflow as tf
print("TensorFlow version:", tf
以上是关于K8s Deployment的主要内容,如果未能解决你的问题,请参考以下文章