基于kubernetes调度框架的自定义调度器实现
简介 依赖问题 核心实现 ScorePlugin接口实现 打分逻辑 参数解析 本地调试 scheduler名称 plugin组合 选举行为 集群部署 参考 Next 简介 调度框架为kubernetes的调度器二次开发提供了丰富的扩展接口,基本上只需要实现特点扩展点的逻辑,并配合默认扩展点插件,进行组合,即可实现各种丰富的调度策略。关于调度器和调度框架,可以参考本博客前几篇介绍。 本文
简介 依赖问题 核心实现 ScorePlugin接口实现 打分逻辑 参数解析 本地调试 scheduler名称 plugin组合 选举行为 集群部署 参考 Next 简介 调度框架为kubernetes的调度器二次开发提供了丰富的扩展接口,基本上只需要实现特点扩展点的逻辑,并配合默认扩展点插件,进行组合,即可实现各种丰富的调度策略。关于调度器和调度框架,可以参考本博客前几篇介绍。 本文
问题 解决 参考 问题 k8s集群通过ingress-nginx暴露前端门户。 在默认情况下ingress controller使用了80和443这一组惯用端口,因此当ingress中配置了nginx.ingress.kubernetes.io/ssl-redirect时,访问http://url时会自动重定向至https://url,无需关心端口问题。 当部署ingress controll
问题 排查 结论 问题 我司平台上支持用户创建k8s中job类型的负载,今天接到一个bug:设置了job的失败后重试次数,但是在集群里实际的重试次数并不是在平台上设置的次数。 关于k8s中job类型负载的重试次数,主要由yaml中的.spec.backoffLimit决定。如果由job控制器创建出来的pod没有正常退出,控制器会多次创建新的pod重试,直到重试次数达到了backoffLimit
Filter扩展点 概述 NodeUnschedulable NodeName TaintToleration NodeAffinity NodePorts NodeResourcesFit VolumeRestrictions NodeVolumeLimits VolumeBinding VolumeZone PodTopologySpread InterPodAffinity Filt
准备工作 mac本地构建 容器构建 参考 准备工作 获取代码 切换分支release-1.21, commitID:1a401979386 概览代码的情况,可以看到当前版本的kubernetes代码共有440万+行代码,其中go代码占了356万+行 ❯ cloc . 23659 text files. 18378 unique files. 6789 files
queueSort扩展点 概述 PrioritySort 装载过程 preFilter扩展点 NodeResourcesFit NodePorts PodTopologySpread InterPodAffinity VolumeBinding NodeAffinity queueSort扩展点 概述 该扩展点需要完成的工作为:对两个pod的调度优先级进行比较 该扩展点有且只有一个插件