首页 > 其他分享 >kube-scheduler预选和优选流程

kube-scheduler预选和优选流程

时间:2023-06-10 17:24:33浏览次数:33  
标签:预选 allocatable 节点 scheduler Memory Pod kube CPU mean

k8s 1.15.0

预选

GeneralPredicates

计算请求量方式

max(sum_cpu_memory(Containers), max_cpu_memory(InitContainers))
// Pod:
//   InitContainers
//     IC1:
//       CPU: 2
//       Memory: 1G
//     IC2:
//       CPU: 2
//       Memory: 3G
//   Containers
//     C1:
//       CPU: 2
//       Memory: 1G
//     C2:
//       CPU: 1
//       Memory: 1G
//
// Result: CPU: 3, Memory: 3G

PodFitsResources:cpu和memory以及gpu等是否匹配
PodMatchNodeSelector:nodeSelector和nodeAffinity是否匹配

Volume过滤

NoDiskConflict:不同Pod使用的PV是否有冲突
MaxPDVolumeCountPredicate:节点上PV卷数量是否达到上限
VolumeBindingPredicate:PV nodeAffinity是否匹配

宿主机过滤

PodToleratesNodeTaints:Pod是否容忍节点污点
NodeMemoryPressurePredicate:节点内存是否不足

Pod过滤

PodAffinityPredicate:待调度Pod与Node上已有Pod亲和与反亲和

优选

给预选出来的节点打0-10分,得分最高者作为调度节点。

选择空闲CPU和Memory最多的宿主机
LeastRequestedPriority

score = (cpu((allocatable-sum(requested))*10/allocatable) + memory((allocatable-sum(requested))*10/allocatable))/2

选择调度后各种资源分配最均衡的节点(计算方差,避免节点上CPU大量分配而Memory大量剩余)
BalancedResourceAllocation

fraction=request/allocatable
mean := (cpuFraction + memoryFraction + volumeFraction) / float64(3)
variance := float64((((cpuFraction - mean)^2) + ((memoryFraction - mean)^2) + ((volumeFraction - mean)^2)) / float64(3))
score = (1 - variance(cpuFraction,memoryFraction,volumeFraction))*10

还有 NodeAffinityPriority、TaintTolerationPriority 和 InterPodAffinityPriority,与 PodMatchNodeSelector、PodToleratesNodeTaints 和 PodAffinityPredicate 类似。Node满足规则数目越多,得分越高。
ImageLocalityPriority:Pod使用镜像大并已存在于Node上,这些Node得分高。

参考资料

42 | Kubernetes默认调度器调度策略解析

 

标签:预选,allocatable,节点,scheduler,Memory,Pod,kube,CPU,mean
From: https://www.cnblogs.com/WJQ2017/p/17471583.html

相关文章

  • 【Kubernetes的Knative Servina、Knative Eventing 核心概念及Broker、Channel and Tr
    Knative是一个构建在Kubernetes上的平台,它提供了一些高级别的抽象,简化了构建和管理云原生应用程序的过程。其中,KnativeServing用于自动管理应用程序的版本和流量分发,让开发者只需要专注于代码编写;KnativeEventing为云原生应用程序提供了事件驱动的能力,支持事件的生产、转换和消费......
  • Kubernetes添加解析操作文档
    ​Kubernetes添加解析操作文档​1.首先在kube-system命名空间创建configmap,添加自定义host解析kubectlcreateconfigmap-nkube-systemkubedns-host##createconfigmap指明创建的类型#-n指定命名空间#kubedns-host自定义的configmap命名。(建议统一使用kubedns-hos......
  • 从KubeOperator开启k8s之旅
    文章目录什么是KbueOperator?KubeOperator的技术优势部署方式部署模式Kubernetes离线安装包安装环境准备1环境要求2下载离线包安装KubeOperator访问KubeOperator升级KubeOperator什么是KbueOperator?FIT2CLOUD飞致云在2019年11月正式对外发布了容器领域第一个项目——KubeOp......
  • ubuntu20.04安装minikube
    一、安装docker(阿里云镜像安装)1.卸载旧版本sudoapt-getremovedockerdocker-enginedocker-cedocker.io2.添加阿里云GPG秘钥curl-fsSLhttp://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd- 3.设置存储库sudoadd-apt-repository"deb[......
  • Kubernetes 集群管理:Kurator or Kubespray
    摘要:Kubespray和Kurator就是这类开源工具的典型代表。本文将对这两款工具进行比较。本文分享自华为云社区《Kubernetes集群管理:KuratororKubespray-华为云云原生团队》,作者:云容器大未来。随着云计算技术的飞速发展,Kubernetes已经成为了容器编排领域的事实标准。用户可......
  • 【Azure K8S】AKS升级 Kubernetes version 失败问题的分析与解决
    问题描述创建AzureKubernetesService服务后,需要升级AKS集群的kubernetesversion。在AKS页面的Clusterconfiguration 页面中,选择新的版本1.25.5,确认升级。等待50分钟左右,却等到了升级失败的消息:FailedtosaveKubernetesservice'xxxx-aks3'.Error:Drainofaks-age......
  • Kubernetes(k8s)服务service:service的发现和service的发布
    目录一.系统环境二.前言三.Kubernetesservice简介四.使用hostPort向外界暴露应用程序4.1创建deploy4.2使用hostPort向外界暴露pod的端口五.使用service服务向外界暴露应用程序5.1使用service服务向外界暴露pod5.1.1创建service服务5.1.2测试svc的负载均衡六.service服务的发......
  • 理解kubernetes网络模型
    本文将探讨Kubernetes中的网络模型,以及对各种网络模型进行分析。UnderlayNetworkModel什么是UnderlayNetwork底层网络UnderlayNetwork顾名思义是指网络设备基础设施,如交换机,路由器,DWDM使用网络介质将其链接成的物理网络拓扑,负责网络之间的数据包传输。underlaynetwork......
  • Kubernetes 的不同大版本之间有许多重大的区别
    Kubernetes的不同大版本之间有许多重大的区别。以下是一些主要的区别:v1.0-v1.6:这是Kubernetes最初的几个版本,这些版本相对较简单,并且缺乏一些现在已经成为核心特性的功能,例如StatefulSet和DaemonSet。v1.7-v1.12:这些版本引入了一些重要的新功能,例如StatefulSet、......
  • Kubernetes架构:构建容器化应用的可扩展管理平台
    摘要:Kubernetes是一款用于容器编排和管理的开源工具,其架构设计具有高度可扩展性和弹性。本文将介绍Kubernetes的架构,包括Master节点和Worker节点的角色和功能,以及它们之间的交互方式,帮助读者更好地理解Kubernetes的工作原理。引言:在当今的云原生应用开发环境中,容器化技术的普及......