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的主要内容,如果未能解决你的问题,请参考以下文章

创建资源对象实例

kubernetes部署服务

k83 svc

Kubernetes三大核心概念

Kubernetes三大核心概念

maven入门基础:nexus的权限管理(十六)