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

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当当中


已经调度到另外集群当中

http://www.lryc.cn/news/497417.html

相关文章:

  • 【热门主题】000075 探索嵌入式硬件设计的奥秘
  • Android okhttp请求
  • 嵌入式蓝桥杯学习4 lcd移植
  • 电子应用设计方案-38:智能语音系统方案设计
  • 渗透测试:网络安全的深度探索
  • 基于SpringBoot的“小区物业管理系统”的设计与实现(源码+数据库+文档+PPT)
  • 调试android 指纹遇到的坑
  • 剑指offer(专项突破)---字符串
  • 【springboot】 多数据源实现
  • 多模态COGMEN详解
  • django 实战(python 3.x/django 3/sqlite)
  • 图数据库 | 12、图数据库架构设计——高性能计算架构
  • Unity 利用Button 组件辅助Scroll View 滚动
  • Ubuntu 安装Ansible ansible.cfg配置文件生成
  • 使用PaddlePaddle实现线性回归模型
  • MongoDB集群的介绍与搭建
  • PhpStorm配置Laravel
  • Solving the Makefile Missing Separator Stop Error in VSCode
  • MySQL大小写敏感、MySQL设置字段大小写敏感
  • 项目搭建:guice,jdbc,maven
  • 第四届新生程序设计竞赛正式赛(C语言)
  • 【分布式知识】Redis6.x新特性了解
  • 程序员需要具备哪些知识?
  • 实验四:MyBatis 的关联映射
  • 【Leetcode】189.轮转数组
  • 【JavaSE】常见面试问题
  • 【超详图文】多少样本量用 t分布 OR 正态分布
  • leetcode hot100【Leetcode 416.分割等和子集】java实现
  • 《算法导论》英文版前言To the teacher第4段研习录:有答案不让用
  • Laravel关联模型查询