PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护、升级或其他操作时,系统中的Pod不会被意外中断或终止。PDB提供了一种机制,通过限制在给定时间内可以中断的Pod数量,以确保系统的可用性和可靠性。

PDB有两个主要的属性:

  1. minAvailable:指定在任何给定时间内必须保持可用的最小Pod数。这可以是一个绝对值,也可以是一个占集群中总Pod数的百分比。
  2. maxUnavailable:指定在任何给定时间内可以中断的最大Pod数。这同样可以是一个绝对值或一个百分比。

通过合理配置这两个属性,你可以确保在执行诸如节点维护、升级或缩容等操作时,有足够的Pod保持可用,从而避免服务中断。

以下是一个PodDisruptionBudget的示例YAML文件:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: example-pdb
spec:
minAvailable: 2 # 至少保持2个Pod可用
selector:
matchLabels:
app: example # 选择带有app=example标签的Pod

在这个示例中,minAvailable被设置为2,意味着在任何时候至少有两个带有app=example标签的Pod必须保持可用。如果尝试中断超过这个数量的Pod,PDB将阻止这些中断操作。

PDB是Kubernetes中提高系统可用性和可靠性的重要工具,特别是在进行集群维护或升级时。通过合理配置和使用PDB,你可以减少因Pod中断而导致的服务中断风险。

Pod中断预算 PodDisruptionBudget(PDB)的更多相关文章

  1. kubernetes之pod中断

    系列目录 目标读者: 想要构建高可用应用的应用所有者,因此需要知道pod会发生哪些类型的中断 想要执行自动化(比如升级和自动扩容)的集群管理员. 自愿和非自愿的中断 pod不会自动消息,除非有人(可能 ...

  2. 分享一个shell脚本的坑:grep匹配+wc取值 在脚本执行后的结果与手动执行结果不一致

    打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中. 先找出其中一台远程机器,查看main进程运行情况 [root@two002 tmp]# ps -ef|grep ...

  3. Kubernetes Scheduler浅析

    概述 Kubernetes 调度器(Scheduler)是Kubernetes的核心组件:用户或者控制器创建Pod之后,调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被 ...

  4. Kubernetes的十大使用技巧

    1. bash针对kubectl命令的自动补充这可能是在使用Kubernetes过程中最容易做的事,但它也是其中一个最有用的.要添加自动补充功能,如果使用bash,只需执行以下命令: echo &qu ...

  5. StatefulSet: Kubernetes 中对有状态应用的运行和伸缩

    在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet.除了依照社区民意改了名字之外,这一 API 对象并没有太大变化 ...

  6. 详细介绍:Kubernetes1.4版本的新功能

    Kubernetes1.4主要新特性 创建kubernetes集群只需要两条命令 增强了对有状态应用的支持 增加了集群联盟API 支持容器安全控制 增强包括调度在内的Kubernetes基础架构 通过 ...

  7. 如何选出适合自己的管理Helm Chart的最佳方式?

    本文转载自Rancher Labs 无论你喜欢与否,你都不得不承认Helm是管理Kubernetes应用程序独一无二的工具,你甚至可以通过不同的方式使用它. 在Helm的使用过程中,我们注意到有几个问 ...

  8. kubernetes之PDB

    系列目录 上一节我们讲到了由于一些人为的或者不可避免的原因,pod可能会中断,而使用Pod Disruption Budget可以最大限度地保证在pod中断发生时集群仍然保持能够接受的状态. 一句话, ...

  9. Kubernetes自动横向伸缩集群节点以及介绍PDB资源

    在kubernetes中,有HPA在需要的时候创建更多的pod实例.但万一所有的节点都满了,放不下更多pod了,怎么办?显然这个问题并不局限于Autoscaler创建新pod实例的场景.即便是手动创建 ...

  10. 图解kubernetes调度器抢占流程与算法设计

    抢占调度是分布式调度中一种常见的设计,其核心目标是当不能为高优先级的任务分配资源的时候,会通过抢占低优先级的任务来进行高优先级的调度,本文主要学习k8s的抢占调度以及里面的一些有趣的算法 1. 抢占调 ...

随机推荐

  1. C/C++ 命名空间引用知识

    标准命名空间 命名空间的使用 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; // 命名空 ...

  2. ASP.NET Core必备知识之Autofac

    使用Autofac替换掉微软的DI 本文的项目为ASP.NET Core3.1,传统三层架构 在这就不过多介绍Autofac,直接上代码 Autofac官网:https://autofac.org/ ...

  3. centos6.5安装MongoDB4.4.23

    前言 1.目前MongoDB最新稳定版本是:6.0.8 2.MongoDB 5+和6+版本已不支持centos6.2+系统,参考https://docs.mongoing.com/install-mo ...

  4. Odoo—货运管理—主表获取明细表数据计算结果

    在开发货运管理模块的时候,用到了两张表:主表[waybill]和明细表[waybill.detail],主表存放运单主体信息,明细表存放运单货物信息,如下图所示. 上图中红色方框标记的是明细表中行内的 ...

  5. windows 激活工具

    https://files-cdn.cnblogs.com/files/del88/heukms.zip

  6. 《ASP.NET Core 与 RESTful API 开发实战》-- (第7章)-- 读书笔记(上)

    第 7 章 高级主题 7.1 缓存 缓存是一种通过存储资源的备份,在请求时返回资源备份的技术.ASP.NET Core 支持多种形式的缓存,既支持基于 HTTP 的缓存,也支持内存缓存和分布式缓存,还 ...

  7. Hadoop-大数据组件版本号查看

    1.操作系统 cat  /etc/redhat-release ; 2.JDK java -version 3.SCALA scala --version 4.MySQL mysql --versio ...

  8. RabbitMQ 使用细节 → 优先级队列与ACK超时

    开心一刻 今天坐在太阳下刷着手机 老妈走过来问我:这么好的天气,怎么没出去玩 我:我要是有钱,你都看不见我的影子 老妈:你就不知道带个碗,别要边玩? 我:...... 优先级队列 说到队列,相信大家一 ...

  9. SP277 CTGAME - City Game 题解

    题目传送门 前置知识 单调栈 解法 令 \(f_{i,j}(1 \le i \le n,1 \le j \le m)\) 表示从 \((1,j)\) 到 \((i,j)\) 中以 \((i,j)\) ...

  10. Spring的接口集合注入功能

    Spring的接口集合注入功能 对于Spring中已经注入的bean, 可以使用Autowired, 通过Map<String, BeanInterface>或List<BeanIn ...