Kubernetes的默认调度和自定义调度详解
默认调度和自定义调度详解
默认调度
默认调度是 Kubernetes 中的内置机制,它使用调度器组件来管理分配容器的节点。调度器依据以下原则选择合适的节点:
- 资源需求 :调度器会为每个 Pod 根据其 CPU 和内存需求选择一个具有足够资源的节点。
- 亲和性和容忍性 :通过亲和性规则和容忍性设置,可以将 Pod 调度到满足特定标签或其他 Pod 运行位置要求的节点上。
- 资源分配 :调度器会考虑节点上已运行的其他 Pod 和 Pod 的资源需求,以合理分配资源,不超出节点资源限制。
- Pod 争用优先级 :优先级高的 Pod 更容易被调度到可用节点上。
- 本地性 :调度器更倾向于将新 Pod 调度到已经运行相关服务的节点上,以减少跨节点通信的开销。
自定义调度
除了默认调度之外,Kubernetes 还允许用户进行自定义调度,以满足特定的业务需求。用户可以通过以下方式实现自定义调度:
- 调度器扩展点 :Kubernetes 支持调度器插件的机制,用户可以使用自定义的调度器插件替换默认调度器,并实现自己的调度算法。
- 亲和性和容忍性调度规则 :通过在 Pod 的调度规范中指定亲和性和容忍性规则,用户可以要求 Pod 被调度到特定的节点上。
- 节点选择器 :通过使用节点选择器标签,用户可以将一组特定的节点应用于特定类型的工作负载。
调度原理
Kubernetes 的调度器基于优先级和可行性评分算法来决定将 Pod 调度到哪个节点。调度流程如下:
- 预选阶段(Predicates) :调度器对每个节点应用预选谓词函数,检查是否满足 Pod 的资源需求、亲和性规则等。不满足条件的节点将被标记为不可调度。
- 优选阶段(Priorities) :调度器对所有可调度的节点应用优选函数,为每个节点分配优先级。优选函数根据争用优先级和伸缩策略等标准为节点打分。
- 选定阶段(Binding) :调度器选择优先级最高的节点将 Pod 调度到该节点。如果存在多个具有相同最高优先级的节点,则将应用绑定函数来决定最终调度。
On the other hand
Kubernetes is a powerful container orchestration platform that automates the deployment and management of containerized applications. An essential aspect of Kubernetes is its scheduling capability, which determines where to place containers within the cluster. In this blog, we will explore the default scheduling mechanism in Kubernetes and also understand how custom scheduling can be leveraged to meet specific business requirements.
Default Scheduling
Default scheduling is the built-in mechanism in Kubernetes that utilizes the scheduler component to manage container placement on nodes. The default scheduler follows these principles to select suitable nodes for pods:
- Resource Requirements : The scheduler matches each pod’s CPU and memory requirements with nodes having sufficient resources.
- Affinity and Tolerations : By using affinity rules and tolerations, pods can be scheduled on nodes with specific labels or meet certain requirements defined by other pods.
- Resource Allocation : The scheduler takes into account the already running pods and their resource demands on each node, ensuring fair distribution without exceeding node resource limits.
- Pod Preemption Priority : Pods with higher priority have a better chance of being scheduled on available nodes.
- Locality : The scheduler prefers to place new pods on nodes already running related services to minimize inter-node communication overhead.
Custom Scheduling
While default scheduling covers most scenarios, Kubernetes allows users to implement custom scheduling to cater to specific business needs. Custom scheduling can be achieved through the following approaches:
- Scheduler Plugins : Kubernetes supports scheduler plugin mechanisms that enable users to replace the default scheduler with their own implementation, incorporating custom scheduling algorithms.
- Affinity and Tolerations Scheduling Rules : By specifying affinity and tolerations rules in pod scheduling specifications, users can enforce pods to be scheduled on specific nodes.
- Node Selectors : By using node selector labels, users can apply a specific set of nodes for specific types of workloads.
Scheduling Principles
The Kubernetes scheduler utilizes priority and feasibility scoring algorithms to determine which node a pod should be scheduled on. The scheduling process includes the following stages:
- Predicates Stage : The scheduler applies predicate functions to each node to evaluate if pods meet resource requirements, affinity rules, and other conditions. Nodes that fail the predicates are marked as not scheduling candidates.
- Priorities Stage : The scheduler assigns priority scores to all nodes based on various criteria such as contention, autoscaling policies, etc.
- Binding Stage : The scheduler selects the node with the highest priority score to bind the pod. In case of multiple nodes with the same highest priority, binding functions come into play for the final decision.
相关文章:
Kubernetes的默认调度和自定义调度详解
默认调度和自定义调度详解 默认调度 默认调度是 Kubernetes 中的内置机制,它使用调度器组件来管理分配容器的节点。调度器依据以下原则选择合适的节点: 资源需求 :调度器会为每个 Pod 根据其 CPU 和内存需求选择一个具有足够资源的节点。亲…...
使用Spring-Security后,浏览器不能缓存的问题
Spring-Security在默认情况下是不允许客户端进行缓存的,在使用时可以通过禁用Spring-Security中的cacheControl配置项允许缓存。 protected void configure(HttpSecurity http) throws Exception {// 允许缓存配置http.headers().cacheControl().disable(); }...
中睿天下入选河南省网信系统2023年度网络安全技术支撑单位
近日,河南省委网信办发布了“河南省网信系统2023年度网络安全技术支撑单位名单”,中睿天下凭借出色的网络安全技术能力和优势成功入选。 本次遴选由河南省委网信办会同国家计算机网络与信息安全管理中心河南分中心(以下简称安全中心河南分中心…...
代码随想录day44 45 46
这部分的题目主要介绍了完全背包的内容; 主要考虑了两种情况,求组合数还是排列数 先遍历背包,再遍历物品,得到的就是组合数,也就是有顺序 for (int j 0; j < amount; j) { // 遍历背包容量for (int i 0; i <…...
一探Linux下的七大进程状态
文章目录 一、前言二、操作系统学科下的进程状态1、运行状态2、阻塞状态3、挂起状态 三、Linux下的7种进程状态1、运行状态R2、浅度睡眠状态S3、深度睡眠状态D一场有趣的官司 4、停止状态T5、进程跟踪状态t6、死亡状态X7、僵死状态Z —— 两个特殊进程① 僵尸进程② 孤儿进程 四…...
香港站群服务器为什么适合seo优化?
香港站群为什么适合seo优化?本文主要从以下四点出发进行原因阐述。 1.香港站群服务器的优势 2.香港站群服务器与国内服务器的对比 3.多IP站群服务器的优势 4.香港站群服务器在SEO优化中的注意事项 1.香港站群服务器的优势 香港站群服务器是为了满足企业SEO优化需求而提供…...
虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问
一、虚拟机环境搭建 1、安装docker、git、docker-compose ubuntu: sudo apt-get update #更新系统 sudo apt-get -y install docker.io #安装docker sudo apt-get -y install git #安装git sudo apt-get -y install python3-pip #安装pip3 sudo pip install dock…...
qq录屏怎么弄?手把手教会你!
“有没有人知道qq怎么录屏呀,听说qq可以录屏,刚好最近需要录制屏幕,就想用qq去录,但是找了很久,都没找到,有人知道吗,谢谢了。” 在如今数字化时代,屏幕录制已成为广泛使用的工具。…...
一文读懂c++语言
一文读懂C语言 C的发展C的设计目标C的特性C的挑战 C的发展 C是一种通用的、高级的编程语言,它是C语言的扩展。C由Bjarne Stroustrup于1983年首次引入,并在之后的几十年中不断发展壮大。C被广泛应用于各种领域,包括系统开发、游戏开发、嵌入式…...
BERT数据处理,模型,预训练
代码来自李沐老师《动手学pytorch》 在数据处理时,首先执行以下代码 def load_data_wiki(batch_size, max_len):"""加载WikiText-2数据集"""num_workers d2l.get_dataloader_workers()data_dir d2l.download_extract(wikitext-2, w…...
Oracle将与Kubernetes合作推出DevOps解决方案!
导读Oracle想成为云计算领域的巨头,但它不是推出自己品牌的云DevOps软件,而是将与CoreOS在Kubernetes端展开合作。七年前,Oracle想要成为Linux领域的一家重量级公司。于是,Oracle主席拉里埃利森(Larry Ellison…...
微服务与Nacos概述-4
限流规则配置 每次服务重启后 之前配置的限流规则就会被清空因为是内存态的规则对象,所以就要用到Sentinel一个特性ReadableDataSource 获取文件、数据库或者配置中心是限流规则 依赖:spring-cloud-alibaba-sentinel-datasource 通过文件读取限流规则…...
Streamlit 讲解专栏(九):深入探索布局和容器
文章目录 1 前言2 st.sidebar - 在侧边栏增添交互元素2.1 将交互元素添加至侧边栏2.2 示例:在侧边栏添加选择框和单选按钮2.3 特殊元素的注意事项 3 st.columns - 并排布局多元素容器3.1 插入并排布局的容器3.2 嵌套限制 4 st.tabs - 以选项卡形式布局多元素容器4.1…...
使用cloud-int部署nginx
参考 azure创建虚拟机,创建虚拟机注意入站端口规则开放80端口,高级中使用自定义数据,初始化虚拟机,安装nginx 连接CLI,验证是否安装成功 访问虚拟机IP查看是否部署成功 参考文档: https://learn.microsoft.com/zh-cn…...
定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小
下面画出等效电路图 可以知道单片机内必然有一个电阻RX,为了简化分析,我们假设他是线性电阻(不带电容,电感的支路) 还有一个基础知识: 电容器的充电放电曲线: 还需要知道电容电压的变化是连续…...
消息队列相关面试题
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 面试题 项目上用过消息队列吗?用过哪些?当初选型基于什么考虑的呢? 面试官心理分析 第一࿰…...
33 | 美国总统数据分析
在这个数据分析项目中,利用Pandas等Python库对美国2020年7月22日至2020年8月20日期间的超过75万条捐赠数据进行了深入的探索和分析。通过这一分析,他们揭示了这段时间内美国选民对总统候选人的偏好和捐款情况。以下是对文章中的主要步骤和内容的进一步描述: 数据集处理: 作…...
每日一题之常见的排序算法
常见的排序算法 排序是最常用的算法,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、希尔排序和归并排序。除此之外,还有桶排序、堆排序、基数排序和计数排序。 1、冒泡排序 冒泡排序就是把小的元素往前放或大的元素往后放,比较…...
JVM 类加载和垃圾回收
JVM 1. 类加载1.1 类加载过程1.2 双亲委派模型 2. 垃圾回收机制2.1 死亡对象的判断算法2.2 垃圾回收算法 1. 类加载 1.1 类加载过程 对应一个类来说, 它的生命周期是这样的: 其中前 5 步是固定的顺序并且也是类加载的过程,其中中间的 3 步我们都属于连接…...
C++ 多线程
C 多线程 多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序 一般情况下,两种类型的多任务处理:基于进程和基于线程 基于进程的多任务处理是程序的并发执行基于线程的多任务处理是同一程序的片段的并发…...
Java Stream API 的底层逻辑
Java Stream API的底层逻辑探秘 Java Stream API自Java 8引入后,彻底改变了集合操作的方式。它通过声明式编程风格,将复杂的迭代逻辑简化为链式调用,同时隐藏了底层实现的复杂性。但Stream并非简单的语法糖,其背后融合了惰性求值…...
仅限SITS2026参会者内部流通的NLP架构迁移Checklist(含自动校验脚本),现在获取倒计时72小时
第一章:SITS2026演讲:AI原生自然语言处理 2026奇点智能技术大会(https://ml-summit.org) AI原生自然语言处理(AI-Native NLP)标志着范式迁移的完成——模型不再被“适配”到任务,而是从设计之初即以任务语义、推理闭环…...
为什么92%的AI团队还在用传统Scrum硬扛?:揭秘LLM驱动开发下的3层敏捷解耦新模型
第一章:AI原生软件研发敏捷开发方法适配 2026奇点智能技术大会(https://ml-summit.org) AI原生软件的研发范式正从根本上挑战传统敏捷开发的边界——模型迭代、数据漂移、提示工程验证与系统级可观测性耦合,使Scrum的固定Sprint节奏与用户故事拆分逻辑面…...
ESP32 GSM模块FOTA固件升级方案
1. 项目概述GSM_FirmwareUpdater 是一个面向嵌入式开发者的固件空中升级(FOTA, Firmware Over-The-Air)轻量级软件包,专为基于 ESP32 平台、具备 GSM/4G 模块(如 SIM800L、SIM7600、EC20、BG96 等)的物联网终端设备设计…...
记录复现多模态大模型论文OPERA的一周工作()旅
pagehelper整合 引入依赖 com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfofindAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数 PageHelper.startPage(pageNo, 10); // …...
LVGL实战解析:Display、Screen与Layer的协同与层级管理
1. Display:物理显示接口的实战理解 第一次接触LVGL的Display概念时,我误以为它和电脑显示器是同一个东西。实际在嵌入式开发中,Display更像是一个抽象的数据通道——它连接着LVGL的图形系统和物理显示设备。举个例子,我在STM32F7…...
LLM 算法岗 | 八股问答()· 多模态与主流模型架构瞪
7.1 初识三维模型 7.1.1 三维模型的数据载体 随着计算机图形技术的发展,我们或多或少都会见过或者听说过三维模型。笔者始终记得小时候第一次在电视上看到三维动画《变形金刚:超能勇士》的震撼感受;而现在我们已经可以在手机上玩三维游戏《王…...
FaceFusion使用技巧:教你如何实现跨设备访问换脸工具
FaceFusion使用技巧:教你如何实现跨设备访问换脸工具 1. FaceFusion简介 FaceFusion是新一代AI换脸工具,无需复杂安装即可一键运行。它支持Nvidia和AMD全系列显卡,能够实现高清换脸、去遮挡、卡通脸替换等功能。最新版本增加了三种遮罩功能…...
深入浏览器渲染引擎:解析、布局、绘制与合成四阶段
深入浏览器渲染引擎:解析、布局、绘制与合成四阶段 当我们浏览网页时,浏览器如何将代码转化为屏幕上的像素?这一过程背后隐藏着复杂的渲染引擎工作机制。现代浏览器通过解析、布局、绘制与合成四个核心阶段,高效地将HTML、CSS和J…...
002、YOLOv11改进策略全景图:方法论总览
今天调一个边缘设备上的推理异常,模型在PC端mAP跑得挺漂亮,一上板子就崩。盯着终端里飘出来的乱码和内存溢出日志,突然意识到:我们整天讨论改进YOLO,到底在改进什么?是盲目堆模块刷榜,还是真正解…...
