码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【云原生】Kubernetes PDB(Pod Disruption Budget)介绍与简单使用


    文章目录

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

    一、概述

    Pod Disruption Budget (pod 中断 预算) 简称PDB,含义其实是终止pod前通过 labelSelector 机制获取正常运行的pod数目的限制,目的是对自愿中断的保护措施,主动驱逐Pod。Kubernetes 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数量或者百分比。

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

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

    【注意事项】

    • 同一个 PDB Object 中不能同时定义 .spec.minAvailable 和 .spec.maxUnavailable。
    • 如果即没有设置 .spec.minAvailable 也没有设置 .spec.maxUnavailable 的话,那么会默认设置 .spec.minAvailable 为 1
    • 前面提到,应用滚动更新时Pod的delete和unavailable虽然也属于自愿中断,但是实际上滚动更新有自己的策略控制(marSurge 和 maxUnavailable),因此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: 2
      selector:
        matchLabels:
          app: zookeeper
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2)使用 maxUnavailable 的 PDB 示例

    apiVersion: policy/v1
    kind: PodDisruptionBudget
    metadata:
      name: zk-pdb
    spec:
      maxUnavailable: 1
      selector:
        matchLabels:
          app: zookeeper
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

  • 相关阅读:
    MacOS - Mac电脑能用Windows键盘吗?
    Java基础面试题汇总(不定期更新)
    LeetCode刷题复盘笔记——131. 分割回文串(一文搞懂回溯解决经典的分割回文串问题)
    数据存储——存储视频
    数据库系统课设——基于python+pyqt5+mysql的酒店管理系统(可直接运行)--GUI编程(2)
    mac安装python虚拟环境
    【C++ 科学计算】矩阵变量类型总结
    Mac玩转Linux,如何在虚拟机安装操作系统centos,以及如何进行虚拟机快照、克隆连接,以及网络连接的三种方式,vi/vim编辑器使用
    PyTorch的安装与一些问题处理
    基于Java+SpringMVC+vue校园失物招领系统(毕业设计参考)
  • 原文地址:https://blog.csdn.net/qq_35745940/article/details/126805215
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号