kubernetes-scheduler调度器

简介:

调度器:

预选策略:
    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
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 资源调度 Kubernetes
Kubernetes Scheduler Framework 扩展: 1. Coscheduling
# 前言 ## 为什么Kubernetes需要Coscheduling功能? Kubernetes目前已经广泛的应用于在线服务编排,为了提升集群的的利用率和运行效率,我们希望将Kubernetes作为一个统一的管理平台来管理在线服务和离线作业。但是默认的调度器是以Pod为调度单元进行依次调度,不会考虑Pod之间的相互关系。但是很多数据计算类的作业具有All-or-Nothing特点,要求所有的
3607 0
|
资源调度 Kubernetes 应用服务中间件
Kubernetes Scheduler Framework 扩展: 2. Binpack
# 前言 ## 为什么需要Binpack功能? Kubernetes默认开启的资源调度策略是`LeastRequestedPriority`,消耗的资源最少的节点得分最高,优先被调度。这样的资源选择情况有可能导致较多的资源碎片,如下图所示,两个节点各剩余1GPU的资源,导致申请2GPU的作业无法调度,导致整体资源使用率下降。 如果使用的资源调度策略是Binpack,优先将节点
2279 0
|
Kubernetes 监控 算法
Kubernetes 调度器优化
Kubernetes 调度器优化
1714 0
|
Kubernetes 算法 调度
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
|
Kubernetes 监控 调度
K8S中Scheduler原理分析
【6月更文挑战第20天】K8S Scheduler是集群的关键组件,它监听API Server,为新Pod选择合适的Node。
|
Kubernetes API 调度
在k8S中,Scheduler作用及实现原理是什么?
在k8S中,Scheduler作用及实现原理是什么?
|
Kubernetes 监控 调度
Kubernetes Scheduler 原理分析
【2月更文挑战第28天】
|
Kubernetes API 调度
Kubernetes —调度器配置
Kubernetes —调度器配置
511 1
|
缓存 分布式计算 资源调度
kubernetes 【调度和驱逐】【2】kube-scheduler调度器
kubernetes 【调度和驱逐】【2】kube-scheduler调度器
kubernetes 【调度和驱逐】【2】kube-scheduler调度器
|
Kubernetes 调度 容器
kubernetes调度器性能调优
kubernetes调度器性能调优

热门文章

最新文章