文章目录

  • 一、概述
  • 二、PDB 应用场景
    • 1)自愿中断和非自愿中断场景
      • 1、非自愿性中断场景
      • 2、自愿性中断场景
    • 2)PDB 关键参数和注意事项
  • 三、示例演示
    • 1)使用 minAvailable 的PDB 示例
    • 2)使用 maxUnavailable 的 PDB 示例

一、概述

Pod Disruption Budget (pod 中断 预算) 简称PDB,含义其实是终止pod前通过 labelSelector 机制获取正常运行的pod数目的限制,目的是对自愿中断的保护措施主动驱逐PodKubernetes version >= 1.7 才支持 PodDisruptionBudget

官方文档:https://kubernetes.io/zh-cn/docs/tasks/run-application/configure-pdb/

完整版 k8s 内置资源结构图:

二、PDB 应用场景

  • 节点维护或升级时 ( kubectl drain )
  • 对应用的自动缩容操作(autoscaling down)

【温馨提示】如果 Node 状态处于 not ready,PDB 是不会生效,因为 PDB 只能针对自愿中断生效。

1)自愿中断和非自愿中断场景

Pod 不会消失,直到有人(人类或控制器)将其销毁,或者当出现不可避免的硬件或系统软件错误。

1、非自愿性中断场景

常见的非自愿性中断场景,例如:

  • 后端节点物理机的硬件故障
  • 集群管理员错误地删除虚拟机(实例)
  • 云提供商或管理程序故障使虚拟机消失
  • 内核恐慌(kernel panic)
  • 节点由于集群网络分区而从集群中消失
  • 由于节点资源不足而将容器逐出

2、自愿性中断场景

常见的自愿性中断场景,例如:

包括由应用程序所有者发起的操作和由集群管理员发起的操作。

  • 删除管理该 pod 的 Deployment 或其它控制器
  • 更新了 Deployment 的 pod 模板导致 pod 重启。
  • 直接删除 pod
  • 排空(drain)节点进行修复或升级。
  • 从集群中排空节点以缩小集群(了解集群自动调节)。
  • 从节点中移除一个 pod,以允许其他 pod 使用该节点。

2)PDB 关键参数和注意事项

  • .spec.selector——用于指定其所作用的 Pod 集合(pod label),该字段为必需字段
  • .spec.minAvailable——表示驱逐后仍须保证可用的 Pod 数量。即使因此影响到 Pod 驱逐 (即该条件在和 Pod 驱逐发生冲突时优先保证)。 minAvailable 值可以是pod数量或者百分比
  • .spec.maxUnavailable——表示发生自愿中断的过程中,要保证最大不可用的pod数量或者百分比

如果上面配置只能用来应用内置的 DeploymentRSRCStatefulSetStatefulSet的Pods,推荐优先使用 .spec.maxUnavailable。如果你使用了例如 Operator 的其他控制器,那么设置时就要注意以下两点:

  • 只能配置 .spec.minAvailable,不能使用 maxUnavailable;
  • .spec.minAvailable 只能为整型值,不能是百分比。

【注意事项】

  • 同一个 PDB Object 中不能同时定义 .spec.minAvailable.spec.maxUnavailable
  • 如果即没有设置 .spec.minAvailable 也没有设置 .spec.maxUnavailable 的话,那么会默认设置 .spec.minAvailable1
  • 前面提到,应用滚动更新时Pod的deleteunavailable虽然也属于自愿中断,但是实际上滚动更新有自己的策略控制(marSurgemaxUnavailable),因此PDB不会干预这个过程。
  • PDB 只能保证自愿中断时的副本数,比如 evict pod过程中刚好满足 .spec.minAvailable.spec.maxUnavailable,这时某个本来正常的Pod突然因为Node Down(非自愿中断)挂了,那么这个时候实际Pods数就比PDB中要求的少了,因此PDB不是万能的。

三、示例演示

1)使用 minAvailable 的PDB 示例

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:name: zk-pdb
spec:minAvailable: 2selector:matchLabels:app: zookeeper

2)使用 maxUnavailable 的 PDB 示例

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:name: zk-pdb
spec:maxUnavailable: 1selector:matchLabels:app: zookeeper

Kubernetes PDB 的介绍就先到这里了,其实PDB的使用场景不是很多,有疑问的小伙伴欢迎给我留言哦,后续会持续更新【云原生和大数据】相关的文章,请小伙伴耐心等待哦~

【云原生】Kubernetes PDB(Pod Disruption Budget)介绍与简单使用相关推荐

  1. 云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例

    前言: kubeapps是Bitnami公司的一个项目,其目的是为Kubernetes的使用者们提供已经打包好的应用仪表盘,它拥有网页界面可以更方便的部署和管理k8s 原生应用. 包含绝大多数的云原生 ...

  2. 云原生kubernetes七 :Pod进阶篇:污点-容忍度-亲和性-Affinity-调度

    1.pod资源清单详细介绍 #版本号 apiVersion: v1 #资源类型 kind: Pod #元数据 metadata:#Pod名字name: string#pod所属命名空间namespac ...

  3. 【云原生--Kubernetes】Pod重启策略

    文章目录 一. 重启策略 二. Always 三. Never 四. OnFailure 4.1 非0状态 4.2 为0状态 五. Pod状态 引言:在k8s集群中,当某个pod资源需要重启时,我们只 ...

  4. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)

    目录 一.k8s 安全管理:认证.授权.准入控制概述 1.1 认证 认证基本介绍 授权基本介绍 准入控制基本介绍 为什么需要准入控制器呢? k8s 客户端访问 apiserver 的几种认证方式 ku ...

  5. 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard

    目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...

  6. 云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版

    前言: 前面写了一些关于calico的文章,但感觉好像是浅尝辄止,分散在了几篇文章内,并且很多地方还是没有说的太清楚云原生|kubernetes|kubernetes的网络插件calico和flann ...

  7. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(下)

    目录 一.常见角色(role)授权的案例 1.1 允许读取核心 API 组的 Pod 资源 1.2 允许读写 apps API 组中的 deployment 资源 1.3 允许读取 Pod 以及读写 ...

  8. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  9. 容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍

    容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍 1 介绍 2 怎样获取 DNS 名字? 3 支持的 DNS 模式 3.1 Service 3.1.1 A 记录 3. ...

最新文章

  1. 重新安装nginx注意事项
  2. SDUT_2080最长公共子序列问题
  3. python多线程执行其他模块的文件_python并发编程--进程线程--其他模块-从菜鸟到老鸟(三)...
  4. SpringFramework5.0 @Indexed注解 简单解析
  5. python的文件读取方式_python中文件读取方式
  6. 中科恒伦助力长江电力移动办公平台账号加固
  7. JS总结 本地对象2 BOM DOM
  8. 50多款51单片机程序源码原理图编程源代码
  9. 点进来,你看到的就是全网最全c++11新特性(持续整理更新中)
  10. 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
  11. Codeforces-697C Lorenzo Von Matterhorn
  12. 坚持住啊,还在代码屎山中爬行的同事们
  13. pythonBBS问答社区程序源码加文档加说明
  14. python登陆百度网盘并读取自己的所有文件,输出到文本文件中
  15. 常见电容引脚正负极识别大全
  16. Unity 2d 回血道具的实现
  17. 用计算机软件绘制思维导图和手绘思维导图,原来手绘思维导图的好处这么多,你还在用软件画导图吗?...
  18. Activity详情——Android8.0中Activity的启动流程
  19. 今日参与会议后的感悟
  20. 筷云解读企业上云:为什么上云?选什么上云?

热门文章

  1. Docker与k8s
  2. 用户数据为什么那么大_为什么那么多用户声讨高德地图?
  3. 为撒电大计算机专业学籍出来的慢,2019年电大学历提升的学籍在什么情况发生时会取消...
  4. 索尼xz Android 内存,下周开更 索尼Xperia XZ1升级安卓9.0
  5. ffmpeg去logo转
  6. CSS基本语法_html-css
  7. C++算法篇:DFS超详细解析(2)--- tarjan算法求无向图割边
  8. thinkpad硬件测试软件,Lenovo Diagnostics Windows(联想硬件诊断工具)
  9. HDOJ--2022
  10. 成都有什么好的互联网公司推荐?