当前位置: 首页 > news >正文

Kubernetes —调度器配置

目录

配置文件

扩展点

调度插件

多配置文件

应用于多个扩展点的插件

调度程序配置迁移


你可以通过编写配置文件,并将其路径传给 kube-scheduler 的命令行参数,定制 kube-scheduler 的行为。

调度模板(Profile)允许你配置 kube-scheduler 中的不同调度阶段。每个阶段都暴露于某个扩展点中。插件通过实现一个或多个扩展点来提供调度行为。

你可以通过运行 kube-scheduler --config <filename> 来设置调度模板, 使用 KubeSchedulerConfiguration v1 结构体。

最简单的配置如下:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig

说明:

KubeSchedulerConfiguration v1beta2 在 v1.25 中已弃用,并将在 v1.28 中移除。 KubeSchedulerConfiguration v1beta3 在 v1.26 中已弃用,并将在 v1.29 中移除。

请将 KubeSchedulerConfiguration 迁移到 v1。

配置文件

通过调度配置文件,你可以配置 kube-scheduler 在不同阶段的调度行为。 每个阶段都在一个扩展点中公开。 调度插件通过实现一个或多个扩展点,来提供调度行为。

你可以配置同一 kube-scheduler 实例使用多个配置文件。

扩展点

调度行为发生在一系列阶段中,这些阶段是通过以下扩展点公开的:

  1. queueSort:这些插件对调度队列中的悬决的 Pod 排序。 一次只能启用一个队列排序插件。
  2. preFilter:这些插件用于在过滤之前预处理或检查 Pod 或集群的信息。 它们可以将 Pod 标记为不可调度。
  3. filter:这些插件相当于调度策略中的断言(Predicates),用于过滤不能运行 Pod 的节点。 过滤器的调用顺序是可配置的。 如果没有一个节点通过所有过滤器的筛选,Pod 将会被标记为不可调度。
  4. postFilter:当无法为 Pod 找到可用节点时,按照这些插件的配置顺序调用他们。 如果任何 postFilter 插件将 Pod 标记为可调度,则不会调用其余插件。
  5. preScore:这是一个信息扩展点,可用于预打分工作。
  6. score:这些插件给通过筛选阶段的节点打分。调度器会选择得分最高的节点。
  7. reserve:这是一个信息扩展点,当资源已经预留给 Pod 时,会通知插件。 这些插件还实现了 Unreserve 接口,在 Reserve 期间或之后出现故障时调用。
  8. permit:这些插件可以阻止或延迟 Pod 绑定。
  9. preBind:这些插件在 Pod 绑定节点之前执行。
  10. bind:这个插件将 Pod 与节点绑定。bind 插件是按顺序调用的,只要有一个插件完成了绑定,其余插件都会跳过。bind 插件至少需要一个。
  11. postBind:这是一个信息扩展点,在 Pod 绑定了节点之后调用。
  12. multiPoint:这是一个仅配置字段,允许同时为所有适用的扩展点启用或禁用插件。

对每个扩展点,你可以禁用默认插件或者是启用自己的插件,例如:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- plugins:score:disabled:- name: PodTopologySpreadenabled:- name: MyCustomPluginAweight: 2- name: MyCustomPluginBweight: 1

你可以在 disabled 数组中使用 * 禁用该扩展点的所有默认插件。 如果需要,这个字段也可以用来对插件重新顺序。

调度插件

下面默认启用的插件实现了一个或多个扩展点:

  • ImageLocality:选择已经存在 Pod 运行所需容器镜像的节点。
  • 实现的扩展点:score。
  • TaintToleration:实现了污点和容忍。
  • 实现的扩展点:filter、preScore、score。
  • NodeName:检查 Pod 指定的节点名称与当前节点是否匹配。
  • 实现的扩展点:filter。
  • NodePorts:检查 Pod 请求的端口在节点上是否可用。
  • 实现的扩展点:preFilter、filter。
  • NodeAffinity:实现了节点选择器 和节点亲和性。
  • 实现的扩展点:filter、score。
  • PodTopologySpread:实现了 Pod 拓扑分布。
  • 实现的扩展点:preFilter、filter、preScore、score。
  • NodeUnschedulable:过滤 .spec.unschedulable 值为 true 的节点。
  • 实现的扩展点:filter。
  • NodeResourcesFit:检查节点是否拥有 Pod 请求的所有资源。 得分可以使用以下三种策略之一:LeastAllocated(默认)、MostAllocated 和 RequestedToCapacityRatio。
  • 实现的扩展点:preFilter、filter、score。
  • NodeResourcesBalancedAllocation:调度 Pod 时,选择资源使用更为均衡的节点。
  • 实现的扩展点:score。
  • VolumeBinding:检查节点是否有请求的卷,或是否可以绑定请求的卷。 实现的扩展点:preFilter、filter、reserve、preBind 和 score。
  • 说明:
  • 当 VolumeCapacityPriority 特性被启用时,score 扩展点也被启用。 它优先考虑可以满足所需卷大小的最小 PV。
  • VolumeRestrictions:检查挂载到节点上的卷是否满足卷提供程序的限制。
  • 实现的扩展点:filter。
  • VolumeZone:检查请求的卷是否在任何区域都满足。
  • 实现的扩展点:filter。
  • NodeVolumeLimits:检查该节点是否满足 CSI 卷限制。
  • 实现的扩展点:filter。
  • EBSLimits:检查节点是否满足 AWS EBS 卷限制。
  • 实现的扩展点:filter。
  • GCEPDLimits:检查该节点是否满足 GCP-PD 卷限制。
  • 实现的扩展点:filter。
  • AzureDiskLimits:检查该节点是否满足 Azure 卷限制。
  • 实现的扩展点:filter。
  • InterPodAffinity:实现 Pod 间亲和性与反亲和性。
  • 实现的扩展点:preFilter、filter、preScore、score。
  • PrioritySort:提供默认的基于优先级的排序。
  • 实现的扩展点:queueSort。
  • DefaultBinder:提供默认的绑定机制。
  • 实现的扩展点:bind。
  • DefaultPreemption:提供默认的抢占机制。
  • 实现的扩展点:postFilter。

你也可以通过组件配置 API 启用以下插件(默认不启用):

  • CinderLimits:检查是否可以满足节点的 OpenStack Cinder 卷限制。 实现的扩展点:filter。

多配置文件

你可以配置 kube-scheduler 运行多个配置文件。 每个配置文件都有一个关联的调度器名称,并且可以在其扩展点中配置一组不同的插件。

使用下面的配置样例,调度器将运行两个配置文件:一个使用默认插件,另一个禁用所有打分插件。

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: default-scheduler- schedulerName: no-scoring-schedulerplugins:preScore:disabled:- name: '*'score:disabled:- name: '*'

对于那些希望根据特定配置文件来进行调度的 Pod,可以在 .spec.schedulerName 字段指定相应的调度器名称。

默认情况下,将创建一个调度器名为 default-scheduler 的配置文件。 这个配置文件包括上面描述的所有默认插件。 声明多个配置文件时,每个配置文件中调度器名称必须唯一。

如果 Pod 未指定调度器名称,kube-apiserver 将会把调度器名设置为 default-scheduler。 因此,应该存在一个调度器名为 default-scheduler 的配置文件来调度这些 Pod。

说明:

Pod 的调度事件把 .spec.schedulerName 字段值作为 ReportingController。 领导者选举事件使用列表中第一个配置文件的调度器名称。

说明:

所有配置文件必须在 queueSort 扩展点使用相同的插件,并具有相同的配置参数(如果适用)。 这是因为调度器只有一个保存 pending 状态 Pod 的队列。

应用于多个扩展点的插件

从 kubescheduler.config.k8s.io/v1beta3 开始,配置文件配置中有一个附加字段 multiPoint,它允许跨多个扩展点轻松启用或禁用插件。 multiPoint 配置的目的是简化用户和管理员在使用自定义配置文件时所需的配置。

考虑一个插件,MyPlugin,它实现了 preScore、score、preFilter 和 filter 扩展点。 要为其所有可用的扩展点启用 MyPlugin,配置文件配置如下所示:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: multipoint-schedulerplugins:multiPoint:enabled:- name: MyPlugin

这相当于为所有扩展点手动启用 MyPlugin,如下所示:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: non-multipoint-schedulerplugins:preScore:enabled:- name: MyPluginscore:enabled:- name: MyPluginpreFilter:enabled:- name: MyPluginfilter:enabled:- name: MyPlugin

在这里使用 multiPoint 的一个好处是,如果 MyPlugin 将来实现另一个扩展点,multiPoint 配置将自动为新扩展启用它。

可以使用该扩展点的 disabled 字段将特定扩展点从 MultiPoint 扩展中排除。 这适用于禁用默认插件、非默认插件或使用通配符 ('*') 来禁用所有插件。 禁用 Score 和 PreScore 的一个例子是:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: non-multipoint-schedulerplugins:multiPoint:enabled:- name: 'MyPlugin'preScore:disabled:- name: '*'score:disabled:- name: '*'

从 kubescheduler.config.k8s.io/v1beta3 开始,所有默认插件都通过 MultiPoint 在内部启用。 但是,仍然可以使用单独的扩展点来灵活地重新配置默认值(例如排序和分数权重)。 例如,考虑两个 Score 插件 DefaultScore1 和 DefaultScore2,每个插件的权重为 1。 它们可以用不同的权重重新排序,如下所示:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: multipoint-schedulerplugins:score:enabled:- name: 'DefaultScore2'weight: 5

在这个例子中,没有必要在 MultiPoint 中明确指定插件,因为它们是默认插件。 Score 中指定的唯一插件是 DefaultScore2。 这是因为通过特定扩展点设置的插件将始终优先于 MultiPoint 插件。 因此,此代码段实质上重新排序了这两个插件,而无需同时指定它们。

配置 MultiPoint 插件时优先级的一般层次结构如下:

  1. 特定的扩展点首先运行,它们的设置会覆盖其他地方的设置
  2. 通过 MultiPoint 手动配置的插件及其设置
  3. 默认插件及其默认设置

为了演示上述层次结构,以下示例基于这些插件:

插件

扩展点

DefaultQueueSort

QueueSort

CustomQueueSort

QueueSort

DefaultPlugin1

Score, Filter

DefaultPlugin2

Score

CustomPlugin1

Score, Filter

CustomPlugin2

Score, Filter

这些插件的一个有效示例配置是:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:- schedulerName: multipoint-schedulerplugins:multiPoint:enabled:- name: 'CustomQueueSort'- name: 'CustomPlugin1'weight: 3- name: 'CustomPlugin2'disabled:- name: 'DefaultQueueSort'filter:disabled:- name: 'DefaultPlugin1'score:enabled:- name: 'DefaultPlugin2'

请注意,在特定扩展点中重新声明 MultiPoint 插件不会出错。 重新声明被忽略(并记录),因为特定的扩展点优先。

除了将大部分配置保存在一个位置之外,此示例还做了一些事情:

  • 启用自定义 queueSort 插件并禁用默认插件
  • 启用 CustomPlugin1 和 CustomPlugin2,这将首先为它们的所有扩展点运行
  • 禁用 DefaultPlugin1,但仅适用于 filter
  • 重新排序 DefaultPlugin2 以在 score 中首先运行(甚至在自定义插件之前)

在 v1beta3 之前的配置版本中,没有 multiPoint,上面的代码片段等同于:

apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: KubeSchedulerConfiguration
profiles:- schedulerName: multipoint-schedulerplugins:# 禁用默认的 QueueSort 插件queueSort:enabled:- name: 'CustomQueueSort'disabled:- name: 'DefaultQueueSort'# 启用自定义的 Filter 插件filter:enabled:- name: 'CustomPlugin1'- name: 'CustomPlugin2'- name: 'DefaultPlugin2'disabled:- name: 'DefaultPlugin1'# 启用并重新排序自定义的打分插件score:enabled:- name: 'DefaultPlugin2'weight: 1- name: 'DefaultPlugin1'weight: 3

虽然这是一个复杂的例子,但它展示了 MultiPoint 配置的灵活性以及它与配置扩展点的现有方法的无缝集成。

调度程序配置迁移

  • v1beta1 → v1beta2
  • v1beta2 → v1beta3
  • v1beta3 → v1
  • 在 v1beta2 配置版本中,你可以为 NodeResourcesFit 插件使用新的 score 扩展。 新的扩展结合了 NodeResourcesLeastAllocated、NodeResourcesMostAllocated 和 RequestedToCapacityRatio 插件的功能。 例如,如果你之前使用了 NodeResourcesMostAllocated 插件, 则可以改用 NodeResourcesFit(默认启用)并添加一个 pluginConfig 和 scoreStrategy,类似于:
  • apiVersion: kubescheduler.config.k8s.io/v1beta2 kind: KubeSchedulerConfiguration profiles: - pluginConfig: - args: scoringStrategy: resources: - name: cpu weight: 1 type: MostAllocated name: NodeResourcesFit
  • 调度器插件 NodeLabel 已弃用; 相反,要使用 NodeAffinity 插件(默认启用)来实现类似的行为。
  • 调度程序插件 ServiceAffinity 已弃用; 相反,使用 InterPodAffinity 插件(默认启用)来实现类似的行为。
  • 调度器插件 NodePreferAvoidPods 已弃用; 相反,使用 节点污点 来实现类似的行为。
  • 在 v1beta2 配置文件中启用的插件优先于该插件的默认配置。
  • 调度器的健康检查和审计的绑定地址,所配置的 host 或 port 无效将导致验证失败。

相关文章:

Kubernetes —调度器配置

目录 配置文件 扩展点 调度插件 多配置文件 应用于多个扩展点的插件 调度程序配置迁移 你可以通过编写配置文件&#xff0c;并将其路径传给 kube-scheduler 的命令行参数&#xff0c;定制 kube-scheduler 的行为。 调度模板&#xff08;Profile&#xff09;允许你配置 k…...

【微信小程序】申请蓝牙、位置和数据库等相关权限

在小程序的app.json文件中配置requiredPermissions字段&#xff0c;并在其中添加相应的权限。 以下是一个示例app.json文件的配置&#xff0c;包括了蓝牙、位置和数据库等权限的申请&#xff1a; {"pages": ["pages/index/index"],"requiredPermiss…...

ORB-SLAM2学习笔记6之D435i双目IR相机运行ROS版ORB-SLAM2并发布位姿pose的rostopic

文章目录 0 引言1 D435i相机配置2 新增发布双目位姿功能2.1 新增d435i_stereo.cc代码2.2 修改CMakeLists.txt2.3 新增配置文件D435i.yaml 3 编译运行和结果3.1 编译运行3.2 结果3.3 可能出现的问题 0 引言 ORB-SLAM2学习笔记1已成功编译安装ROS版本ORB-SLAM2到本地&#xff0c…...

【数据结构与算法——TypeScript】哈希表

【数据结构与算法——TypeScript】 哈希表(HashTable) 哈希表介绍和特性 哈希表是一种非常重要的数据结构&#xff0c;但是很多学习编程的人一直搞不懂哈希表到底是如何实现的。 在这一章节中&#xff0c;我门就一点点来实现一个自己的哈希表。通过实现来理解哈希表背后的原理…...

JavaScript 中常用简写语法技巧总结

分享一些自己常用的js简写技巧&#xff0c;长期更新&#xff0c;会着重挑选一些实用的简写技巧&#xff0c;使自己的代码更简洁优雅~ 这里只会收集一些大多数人不知道的用法&#xff0c;但是确实能提高自己的编码技巧&#xff0c;像ES6那些基础的简写语法或者是三目运算符代替i…...

漫画算法做题笔记

诸神缄默不语-个人CSDN博文目录 哦这是我三年前写的&#xff0c;我现在Java语法都快忘光了…… 反正之前的博文也发一下好了。这个因为我当年是用有道云笔记而不是直接用CSDN编辑器写的&#xff0c;所以后面有些内容写乱了&#xff0c;因为我现在猛的一看有点看不懂&#xff0…...

JDBC学习笔记

1 JDBC简介 1.1 前言 当谈论JDBC时&#xff0c;我们可以将其看作是一种用于Java程序与数据库进行通信的方式。如果你想编写一个Java程序&#xff0c;并且希望能够连接到数据 库、执行查询或更新数据&#xff0c;JDBC就是你需要的工具。 JDBC提供了一组类和接口&#xff0c;…...

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证,联合方案带来约20%性能提升

近日&#xff0c;亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试&#xff0c;亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外&#xff0c;双方进一步开展TP…...

【MySQL】基础知识(一)

MySQL基础知识&#xff08;一&#xff09; 文章目录 MySQL基础知识&#xff08;一&#xff09;00 MySQL安装01 数据库介绍1.1 什么是数据库1.2数据库分类 02 SQL分类03 数据库操作3.1显示数据库3.2创建数据库3.3选中数据库3.4删除数据库 04 常用数据类型4.1数值类型4.2字符串类…...

Ansible专栏目录

我的博客&#xff1a;www.itwk.cc 希望能够给大家带来帮助&#xff01; 1、什么是Ansible&#xff1f;Ansible 简介及核心概念详解 https://blog.csdn.net/qq_34185638/article/details/131079320 2、Ansible Inventory 主机清单的作用、使用方法及示例详解 https://blog.cs…...

【locust】使用locust + boomer实现对接口的压测

目录 背景 环境安装 脚本编写 master slave节点&#xff08;golang/boomer&#xff09; 问题 资料获取方法 背景 很早之前&#xff0c;考虑单机执行能力&#xff0c;使用locust做过公司短信网关的压测工作&#xff0c;后来发现了一个golang版本的locust&#xff0c;性能…...

亿欧智库:2023中国宠物行业新趋势洞察报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 户外赛道本质上迎合了全球共性需求的增长&#xff0c;从养宠意愿的转化到养宠生活的需求&#xff0c;多层次的需求推动行业发展新趋势 从需求端进行分析&#xff0c;可以将养宠意愿的转化分为三个层…...

时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证

近年来&#xff0c;开源及其价值获得社会各界的广泛认可&#xff0c;无论是国家政策导向还是企业数字化转型&#xff0c;都在加速拥抱开源。对于如操作系统、数据库等基础软件来说&#xff0c;开源更是成为驱动技术创新的有力途径。 在此背景下&#xff0c;近日&#xff0c;涛…...

Spring-1-深入理解Spring XML中的依赖注入(DI):简化Java应用程序开发

学习目标 前两篇文章我们介绍了什么是Spring,以及Spring的一些核心概念&#xff0c;并且快速快发一个Spring项目&#xff0c;以及详细讲解IOC&#xff0c;今天详细介绍一些DI(依赖注入) 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 一、…...

负载均衡–HAProxy安装及搭建tidb数据库负载服务

作为一名开发人员&#xff0c;随着经验的增加和技术的沉淀&#xff0c;需要提高自己架构方面的知识&#xff0c;同时对于一个企业来说&#xff0c;搭建一套高可用、高性能的技术架构&#xff0c;对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建ti…...

Django各种缓存的配置

Django提供了多种缓存后端&#xff0c;如内存缓存、文件缓存、数据库缓存、Memcached和Redis等。根据项目需求选择合适的缓存后端。 settings配置 在Django项目的settings.py文件中&#xff0c;找到或新增CACHES配置项。根据所选的缓存后端&#xff0c;配置相应的参数。以下是…...

实现跨域的几种方式

原理 前后端的分离导致了跨域的产生 跨域的三要素&#xff1a;协议 域名 端口 三者有一个不同即产生跨域 例如&#xff1a; http://www.csdn.com https://www.csdn.com 由于协议不同&#xff0c;端口不同而产生跨域 注&#xff1a;http的默认端口80&#xff0c;https的默…...

OpenCV: 对“google::protobuf::internal::Release_CompareAndSwap”的未定义

解决办法&#xff1a; 需要在文件 protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h 中的以下补丁 inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value, …...

无涯教程-Perl - References(引用)

Perl引用是一个标量数据类型&#xff0c;该数据类型保存另一个值的位置&#xff0c;该值可以是标量&#xff0c;数组或哈希。 创建引用 变量&#xff0c;子程序或值创建引用很容易&#xff0c;方法是在其前面加上反斜杠&#xff0c;如下所示: $scalarref \$foo; $arrayref …...

马斯克收购AI.com域名巩固xAI公司地位;如何评估大型语言模型的性能

&#x1f989; AI新闻 &#x1f680; AI拍照小程序妙鸭相机上线商业工作站并邀请摄影师进行内测 摘要&#xff1a;AI拍照小程序妙鸭相机将上线面向商业端的工作站&#xff0c;并邀请摄影师进行模板设计的内测。妙鸭相机希望为行业提供更多生态产品&#xff0c;扩大行业规模&a…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...