karmada-descheduler
descheduler规则
`karmada-descheduler` 定期检测所有部署,通常是每2分钟一次,并确定目标调度集群中无法调度的副本数量。它通过调用 `karmada-scheduler-estimator` 来完成这个过程。如果发现无法调度的副本,它将通过减少 `spec.clusters` 的配置来将它们驱逐出去。这个操作会触发 `karmada-scheduler` 基于当前情况进行“规模调度”。
需要注意的是,只有在将副本调度策略设置为动态划分时,这个驱逐和重新调度的过程才会生效。这种策略允许根据可用资源将副本动态分配到不同的集群中。通过定期检查集群的状态和资源可用性,Karmada可以调整副本的放置位置,以确保资源利用的高效性和系统稳定性。
前提条件
确保所有k8s成员加入到karmada当中且karmada-descheduler加入到karmada-host中如图所示
测试
模拟缺乏资源而导致调度失败,创建俩个nginx副本将他们放到俩个成员集群中
```
root@karmada-cluster01:/home/karmada-teaching/descheduler# cat pp-deploy-nginx-descheduler.yaml
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: nginx-descheduler-propagation
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: nginx-descheduler
placement:
clusterAffinity:
clusterNames:
- cluster1
- cluster2
replicaScheduling:
replicaDivisionPreference: Weighted
replicaSchedulingType: Divided
weightPreference:
dynamicWeight: AvailableReplicas
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-descheduler
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: 10.250.2.118:18000/library/nginx:latest
name: nginx
```
kubectl apply -f pp-deploy-nginx-descheduler.yaml -n karmada --kubeconfig ~/kube-karmada
propagationpolicy.policy.karmada.io/nginx-descheduler-propagation configured
deployment.apps/nginx-descheduler configured

此时都在cluster01上 现在将cluster集群停止调度
root@karmada-cluster01:/home/karmada-teaching/descheduler# kubectl --kubeconfig ~/.kube/21config cordon k8s-cluster1-node2
node/k8s-cluster1-node2 cordoned
root@karmada-cluster01:/home/karmada-teaching/descheduler# kubectl --kubeconfig ~/.kube/21config cordon k8s-cluster1-node1
node/k8s-cluster1-node1 cordoned
root@karmada-cluster01:/home/karmada-teaching/descheduler# kubectl --kubeconfig ~/.kube/21config cordon k8s-cluster01
node/k8s-cluster01 cordoned
删除nginx pod
root@karmada-cluster01:/home/karmada-teaching/descheduler# kubectl --kubeconfig ~/.kube/21config delete pod -l app=nginx -n karmada
pod "nginx-descheduler-7864466765-fgqsc" deleted
pod "nginx-descheduler-7864466765-lhvnr" deleted
pod "nginx-descheduler-7864466765-mbh4n" deleted
```
此时集群1的po状态
```
root@k8s-cluster1-master:/home/k8s# kubectl get po -n karmada -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-descheduler-7864466765-b4h4l 0/1 Pending 0 18s <none> <none> <none> <none>
nginx-descheduler-7864466765-cvx4k 0/1 Pending 0 18s <none> <none> <none> <none>
nginx-descheduler-7864466765-xr22g 0/1 Pending 0 18s <none> <none> <none> <none>
```
大概等5-7分钟就会从cluster1到cluster2当当中

已经调度到另外集群当中
相关文章:
karmada-descheduler
descheduler规则 karmada-descheduler 定期检测所有部署,通常是每2分钟一次,并确定目标调度集群中无法调度的副本数量。它通过调用 karmada-scheduler-estimator 来完成这个过程。如果发现无法调度的副本,它将通过减少 spec.clusters 的配…...
【热门主题】000075 探索嵌入式硬件设计的奥秘
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…...
Android okhttp请求
下面是一个用 OkHttp 封装的 GET 请求方法,适用于 Android 项目。该方法包括基本的网络请求、错误处理,并支持通过回调返回结果。 封装 GET 请求的工具类 添加依赖 在你的 build.gradle 文件中,确保添加了 OkHttp 的依赖: imple…...
嵌入式蓝桥杯学习4 lcd移植
cubemx配置 复制前面配置过的文件 打开cubemx,将PB8,PB9配置为GPIO-Output。 点击GENERATE CODE. 文件移植 1.打开比赛提供的文件包,点击Inc文件夹 2.点击Inc文件夹。复制fonts.h和lcd.h,粘贴到我们自己的工程文件夹的bsp中(…...
电子应用设计方案-38:智能语音系统方案设计
智能语音系统方案设计 一、引言 智能语音系统作为一种便捷、自然的人机交互方式,正逐渐在各个领域得到广泛应用。本方案旨在设计一个高效、准确、功能丰富的智能语音系统。 二、系统概述 1. 系统目标 - 实现高准确率的语音识别和自然流畅的语音合成。 - 支持多种语…...
渗透测试:网络安全的深度探索
一、引言 在当今数字化时代,网络安全问题日益凸显。企业和组织面临着来自各种恶意攻击者的威胁,他们试图窃取敏感信息、破坏系统或进行其他恶意活动。渗透测试作为一种主动的安全评估方法,能够帮助企业发现潜在的安全漏洞,提高网…...
基于SpringBoot的“小区物业管理系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“小区物业管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 个人信息界面图 费用信息管理…...
调试android 指纹遇到的坑
Android8以后版本 一、指纹服务不能自动 指纹服务fingerprintd(biometrics fingerprintservice),可以手动起来,但是在init.rc中无法启动。 解决办法: 1.抓取开机时kernel log ,确认我们的启动指纹服务的init.rc 文件有被init.c…...
剑指offer(专项突破)---字符串
总目录:剑指offer(专项突破)---目录-CSDN博客 1.字符串的基本知识 C语言中: 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中,包括结束符\0,要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…...
【springboot】 多数据源实现
文章目录 1. 引言:多数据源的必要性和应用场景**为什么需要多数据源?****应用场景** 2. Spring Boot中的数据源配置2.1 默认数据源配置简介2.2 如何在Spring Boot中配置多个数据源 3. 整合MyBatis与多数据源**配置MyBatis使用多数据源****Mapper接口的数…...
多模态COGMEN详解
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
django 实战(python 3.x/django 3/sqlite)
要在 Python 3.x 环境中使用 Django 3.2 和 SQLite 创建一个新的 Django 项目,你可以按照以下步骤进行操作。这些步骤假设你已经安装了 Python 3.x 和 pip。 1. 设置虚拟环境 首先,建议为你的 Django 项目创建一个虚拟环境,以便隔离项目的依…...
图数据库 | 12、图数据库架构设计——高性能计算架构
在传统类型的数据库架构设计中,通常不会单独介绍计算架构,一切都围绕存储引擎展开,毕竟存储架构是基础,尤其是在传统的基于磁盘存储的数据库架构设计中。 类似地,在图数据库架构设计中,项目就围绕存储的方…...
Unity 利用Button 组件辅助Scroll View 滚动
实现 创建枚举类ScrollDir 以区分滚动方向。每组两个按钮负责同方向上左右/上下滚动。 Update 中实时获取Scroll View 滚动条当前位置。 if (dir.Equals(ScrollDir.vertical)) {posCurrent scroll.verticalNormalizedPosition; } else if (dir.Equals(ScrollDir.horizontal)…...
Ubuntu 安装Ansible ansible.cfg配置文件生成
安装后的ansible.cfg后的默认内容如下: rootlocalhost:/etc/ansible# cat ansible.cfg # Since Ansible 2.12 (core): # To generate an example config file (a "disabled" one with all default settings, commented out): # $ ansible-…...
使用PaddlePaddle实现线性回归模型
目录 编辑 引言 PaddlePaddle简介 线性回归模型的构建 1. 准备数据 2. 定义模型 3. 准备数据加载器 4. 定义损失函数和优化器 5. 训练模型 6. 评估模型 7. 预测 结论 引言 线性回归是统计学和机器学习中一个经典的算法,用于预测一个因变量࿰…...
MongoDB集群的介绍与搭建
MongoDB集群的介绍与搭建 一.MongoDB集群的介绍 注意:Mongodb是一个比较流行的NoSQL数据库,它的存储方式是文档式存储,并不是Key-Value形式; 1.1集群的优势和特性 MongoDB集群的优势主要体现在以下几个方面: (1)高…...
PhpStorm配置Laravel
本文是2024最新的通过phpstorm创建laravel项目 1.下载phpstorm 2.检查本电脑的环境phpcomposer 显示图标就是安装成功了,不会安装的百度自行安装 3.安装完后,自行创建一个空目录不要有中文,然后运行cmd 输入以下命令,即可创建…...
Solving the Makefile Missing Separator Stop Error in VSCode
1. 打开 Makefile 并转换缩进 步骤 1: 在 VSCode 中打开 Makefile 打开 VSCode。使用文件浏览器或 Ctrl O(在 Mac 上是 Cmd O)打开你的 Makefile。 步骤 2: 打开命令面板 按 Ctrl Shift P(在 Mac 上是 Cmd Shift P)&…...
MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
scalar标量设计为axis接口说明
1.设计一:scalar标量核心代码 #include "array_FIFO.h"//void array_FIFO (dout_t d_o[4], din_t d_i[4], didx_t idx[4]) { //void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) { void array_FIFO (dout_t d_o[4], din_t d_i, didx_t idx[4]…...
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
文章目录环境症状问题原因解决方案环境 系统平台:UOS(海光) 版本:9.0 症状 瀚高数据库版本:企业版 V9.1.1 症状: pg_restore还原备份文件时,提示下面错误 pg_restore: 来自 TOC 记录 259; …...
Appium环境搭建实战手册:解决JDK、Android SDK与Node.js兼容性问题
1. 为什么Appium环境搭建总让人卡在第一步?——不是工具不行,是路径没走对“Appium环境搭好了吗?”这句话我过去三年在测试团队晨会里至少听过27次。不是新人问的,是干了五年自动化测试的老同事皱着眉甩出来的。他刚重装系统&…...
Tomcat Windows路径导致HTTP响应头信息泄露漏洞解析
1. 这个漏洞不是“能读文件”那么简单,而是Tomcat在特定配置下主动把敏感信息塞进HTTP响应头里CVE-2024-21733这个编号刚出来时,我第一反应是又一个常规的路径遍历或文件读取漏洞。但实际复现后才发现,它根本不是靠构造恶意URL去“偷”东西&a…...
ceph的块存储如何骗过服务器,让服务器把它当做真实的硬盘
ceph的块存储,就是一块远程网络硬盘。操作系统为啥会读写这块假硬盘呢? 一台服务器要使用CEPH提供的块存储,也是需要ceph的驱动软件来和ceph通讯吧 是的,你的理解完全正确。一台服务器想要使用 Ceph 提供的块存储,必须…...
向日葵远程控制16.5发布,“免密远控”功能登场便捷又安全
人在公司,急需处理家里电脑上的重要文件,却完全想不起访问密码或者系统的帐号密码;出差在外,想远程操作办公室电脑,却不得不打电话让同事帮忙看一眼密码设置甚至干脆让同事点个接受......密码虽然是一种非常主流的安全…...
KAN网络实战:5分钟看懂如何用它‘可视化’发现物理定律(以安德森定域化为例)
KAN网络:用可视化方法发现物理定律的AI协作者 在科学研究的前沿,物理学家们常常需要从海量数据中识别出隐藏的规律和模式。传统的人工智能方法虽然能够提供预测结果,却往往难以解释其内部机制,这让科学家们难以信任和验证这些&quo…...
四旋翼DIY实战:用STM32和ICM20602实现Mahony姿态解算(附完整代码)
四旋翼DIY实战:用STM32和ICM20602实现Mahony姿态解算 1. 项目背景与硬件选型 四旋翼飞行器的核心在于稳定控制,而姿态解算是实现这一目标的基础。ICM20602作为一款六轴IMU传感器,集成了三轴加速度计和三轴陀螺仪,配合STM32系列微控…...
一键部署开源 AI 项目教程:OpenClaw 下载安装启动卸载全流程
AIStarter 是什么?一文彻底讲清楚很多朋友第一次看到 AIStarter 和 PanelAI 都比较懵:这到底是个什么工具?简单来说,AIStarter 是一款专为本地 AI 部署打造的一键安装管理平台,它能帮助开发者快速下载、安装、启动各种…...
网络安全实战工具链:从信息收集到漏洞修复的工程化闭环
1. 这不是“黑客速成班”,而是安全工程师真实工作流的切片很多人看到“挖漏洞”三个字,第一反应是黑进某个网站、弹出个红色命令行、屏幕上飞速滚动着看不懂的字符——然后“啪”一声,系统瘫痪。现实里我干了八年渗透测试和红队支撑ÿ…...
