内容简介:在Kubernetes version >= 1.7 才支持
在 Kubernetes
中,为了保证业务不中断或业务SLA不降级,需要将应用进行集群化部署。通过 PodDisruptionBudget
控制器可以设置应用POD集群处于运行状态最低个数,也可以设置应用POD集群处于运行状态的最低百分比,这样可以保证在主动销毁应用POD的时候,不会一次性销毁太多的应用POD,从而保证业务不中断或业务SLA不降级。
PodDisruptionBudget 简介
Pod Disruption Budget
(pod 中断 预算) 简称 PDB
,含义其实是终止pod前通过 labelSelector
机制获取正常运行的 pod
数目的限制,目的是对 自愿中断
的保护措施。
Kubernetes version >= 1.7 才支持 PodDisruptionBudget
PDB 应用场景
- 节点维护或升级时 ( kubectl drain )
注意:如果 Node 状态处于 not ready
,PDB 是不会生效,因为 PDB 只能针对 自愿中断
生效,什么叫 自愿中断
下文介绍。
自愿中断和非自愿中断 [1]
Pod 不会消失,直到有人(人类或控制器)将其销毁,或者当出现不可避免的硬件或系统软件错误。
我们把这些不可避免的情况称为应用的 非自愿性中断
。例如:
- 后端节点物理机的硬件故障
- 集群管理员错误地删除虚拟机(实例)
- 云提供商或管理程序故障使虚拟机消失
- 内核恐慌(kernel panic)
- 节点由于集群网络分区而从集群中消失
- 由于节点 资源不足 而将容器逐出
除资源不足的情况外,大多数用户应该都熟悉以下这些情况;它们不是特定于 Kubernetes 的。
我们称这些情况为 自愿中断
。包括由应用程序所有者发起的操作和由集群管理员发起的操作。典型的应用程序所有者操作包括:
- 删除管理该 pod 的 Deployment 或其他控制器
- 更新了 Deployment 的 pod 模板导致 pod 重启
- 直接删除 pod(意外删除)
集群管理员操作包括:
- 排空(drain)节点 进行修复或升级。
- 从集群中排空节点以缩小集群(了解 集群自动调节 )。
- 从节点中移除一个 pod,以允许其他 pod 使用该节点。
这些操作可能由集群管理员直接执行,也可能由集群管理员或集群托管提供商自动执行。
PDB 关键参数与注意事项
-
.spec.minAvailable
:表示发生自愿中断
的过程中,要保证至少可用的Pods数或者比例 -
.spec.maxUnavailable
:表示发生自愿中断
的过程中,要保证最大不可用的Pods数或者比例
上面配置只能用来对应 Deployment
, RS
, RC
, StatefulSet
的Pods,推荐优先使用 .spec.maxUnavailable
。
注意
:
-
同一个 PDB Object 中不能同时定义
.spec.minAvailable
和.spec.maxUnavailable
。 -
前面提到,应用滚动更新时Pod的
delete
和unavailable
虽然也属于自愿中断
,但是实际上滚动更新有自己的策略控制(marSurge
和maxUnavailable
),因此PDB不会干预这个过程。 -
PDB 只能保证
自愿中断
时的副本数,比如evict pod
过程中刚好满足.spec.minAvailable
或.spec.maxUnavailable
,这时某个本来正常的Pod突然因为Node Down
(非自愿中断)挂了,那么这个时候实际Pods数就比PDB中要求的少了,因此PDB不是万能的!
使用上,如果设置 .spec.minAvailable
为 100%
或者 .spec.maxUnavailable
为 0%
,意味着会完全阻止 evict pods
的过程( Deployment
和 StatefulSet
的 滚动更新除外
)。
PDB 例子
-
下面的例子使用了
minAvailable
参数:apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: nginx-pdb namespace: default spec: minAvailable: 2 selector: matchLabels: app: nginx
-
下面的例子使用了
maxUnavailable
参数:apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: nginx-pdb namespace: default spec: maxUnavailable: 30% selector: matchLabels: app: nginx
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
极简算法史:从数学到机器的故事
[法] 吕克•德•布拉班迪尔 / 任轶 / 人民邮电出版社 / 2019-1 / 39.00元
数学、逻辑学、计算机科学三大领域实属一家,彼此成就,彼此影响。从古希腊哲学到“无所不能”的计算机,数字、计算、推理这些貌似简单的概念在三千年里融汇、碰撞。如何将逻辑赋予数学意义?如何从简单运算走向复杂智慧?这背后充满了人类智慧的闪光:从柏拉图、莱布尼茨、罗素、香农到图灵都试图从数学公式中证明推理的合理性,缔造完美的思维体系。他们是凭天赋制胜,还是鲁莽地大胆一搏?本书描绘了一场人类探索数学、算法与逻......一起来看看 《极简算法史:从数学到机器的故事》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
URL 编码/解码
URL 编码/解码