kubernetes-scheduler调度器

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

调度器:

预选策略:
    CheckNodeCondition:
    GeneralPredicates
        HostName: 检查pod对象是否定义了pod.spec.hostname;
        PodFitsHostPorts:
        MatchNodeSelector:
        PodFitsResources: 检查pod的资源需求是否能被节点所满足;
    NoDiskConflict: 检查pod依赖的存储卷是否能满足需求;
    PodToleratesNodeTaints: 检查pod上的spec.tolerations能够容忍的污点能否完全包含节点上的污点;
    PodToleratesNodeNoExecuteTaints: 不能容忍的污点,默认不启用
    CheckNodeLabelPresence: 检查标签的存在性;
    CheckServiceAffinity: 将pod调度到他所属的service其他pod已经调度完成的节点上, 默认没有启用
    MaxEBSVolumeCount
    MAXGCEPDvolumeCount
    MAXAzureDiskVolumeCount
    
    CheckVolumeBinding: 检查pvc
    NoVolumeZoneConflict:
    CheckNodeMemoryPressure: 检查节点内存资源是否处于压力过大的状态;
    CheckNodePIDPressure: 检查节点PID进程量过多问题
    CheckNodeDiskPressure:
    
    MatchInterPodAffinity: 检查满足的亲和性或非亲和性
    

优选函数:
    LeastRequested: 根据空闲比率来评估的;
        cpu((capacity-sum(requested))*10/capacity) + memory((capacity-sum(requested))*10/capacity)
    BalancedResourceAllocation:
        与CPU和内存的占用率相近的胜出;
    
    NodePreferAvoidPods:
        根据节点的注解信息"scheduler.alpha.kubernetes.io/preferAvoidPods"
    TainToleration:
        将pod对象的spec.tolerations列表项与节点的taints列表项进行匹配度检查,匹配条目越多,得分越多
    SeletorSpreading: 与此pod当前pod对象同属的标签选择器选择的节点,匹配越多得分越低;
    InterPodAffinity: 
    NodeAffinity: 节点亲和性
    
    MostRequested: LeastRequested计算值越小越优先
    
    NodeLabel: 根据节点标签评估得分的
    
    ImageLocality: 根据满足当前Pod对象需求的已有镜像的体积大小评估得分

kubernetes高级调度方式


节点选择器: nodeselector, nodename
节点亲和调度: nodeAffinity

nodeselector: 精确匹配

nodeAffinity:
kubectl explain pods.spec.affinity.nodeAffinity

preferredDuringSchedulingIgnoredDuringExecution --软亲和性
requiredDuringSchedulingIgnoredDuringExecution --硬亲和性




污点:

每一个污点都必须被容忍, 不能容忍需要根据参数调度;
NoSchedule: 仅影响调度过程,对现存的Pod对象不产生影响;
NoExecute: 既影响调度过程,也影响现存的Pod对象,不容忍的Pod对象将被驱逐;
PreferNoSchedule: 

修改节点上的污点:

kubectl taint Node name key=value:TAINT
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
运维 资源调度 Kubernetes
Kubernetes Scheduler Framework 扩展: 1. Coscheduling
# 前言 ## 为什么Kubernetes需要Coscheduling功能? Kubernetes目前已经广泛的应用于在线服务编排,为了提升集群的的利用率和运行效率,我们希望将Kubernetes作为一个统一的管理平台来管理在线服务和离线作业。但是默认的调度器是以Pod为调度单元进行依次调度,不会考虑Pod之间的相互关系。但是很多数据计算类的作业具有All-or-Nothing特点,要求所有的
3119 0
|
资源调度 Kubernetes 应用服务中间件
Kubernetes Scheduler Framework 扩展: 2. Binpack
# 前言 ## 为什么需要Binpack功能? Kubernetes默认开启的资源调度策略是`LeastRequestedPriority`,消耗的资源最少的节点得分最高,优先被调度。这样的资源选择情况有可能导致较多的资源碎片,如下图所示,两个节点各剩余1GPU的资源,导致申请2GPU的作业无法调度,导致整体资源使用率下降。 如果使用的资源调度策略是Binpack,优先将节点
1914 0
|
3月前
|
Kubernetes 算法 调度
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
|
3月前
|
Kubernetes API 调度
在k8S中,Scheduler作用及实现原理是什么?
在k8S中,Scheduler作用及实现原理是什么?
|
5月前
|
Kubernetes 监控 调度
K8S中Scheduler原理分析
【6月更文挑战第20天】K8S Scheduler是集群的关键组件,它监听API Server,为新Pod选择合适的Node。
|
6月前
|
Kubernetes 监控 调度
|
Kubernetes 监控 算法
Kubernetes 调度器优化
Kubernetes 调度器优化
1203 0
|
Kubernetes 调度 容器
kubernetes调度器性能调优
kubernetes调度器性能调优
|
Kubernetes API 调度
Kubernetes —调度器配置
Kubernetes —调度器配置
156 1
|
Kubernetes 算法 API
【kubernetes】Scheduler 的调度流程
【kubernetes】Scheduler 的调度流程
156 0