原创 吴就业 198 0 2024-03-14
本文为博主原创文章,未经博主允许不得转载。
本文链接:https://wujiuye.com/article/a04a27905a0a4e04a9c9d98073c29d84
作者:吴就业
链接:https://wujiuye.com/article/a04a27905a0a4e04a9c9d98073c29d84
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。
由于Kubernetes的默认调度器不满足我们的需求,我们需要实现目标负载调度,基于scheduler-plugins调度器二次开发。
通过官方文档我们了解到,Kubernetes支持我们保留默认调度器,同时安装自定义的调度器,支持同时运行多个调度器。可为Pod指定使用哪个调度器来调度,当不指定时,使用默认调度器。
从scheduler-plugins的文档介绍我们了解到,scheduler-plugins的负载感知调度插件要求我们禁用NodeResourcesLeastAllocation和NodeResourcesBalancedAllocation这两个默认的评分插件(Scoring扩展点的默认插件)。所以有了这个疑问:k8s自定义调度器禁用了某个评分插件,对默认调度器是否有影响,默认调度器是否也会禁用这个评分插件?
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
leaderElection:
leaderElect:
profiles:
- schedulerName: scheduler-plugins
plugins:
multiPoint:
enabled:
- name: TargetLoadPacking
disabled:
- name: NodeResourcesLeastAllocated
- name: NodeResourcesBalancedAllocation
pluginConfig:
- name: TargetLoadPacking
......
先说结论:不会影响到默认调度器,只会影响到scheduler-plugins调度器本身。默认调度器不会因为自定义调度器的配置而改变。
插件的调用顺序是:
默认扩展点的默认插件始终会最先被调用,然后按照自定义调度器(KubeSchedulerConfiguration)为扩展点配置激活(enabled)的插件,按顺序逐个调用激活(enabled)的插件。
如果有需要,我们可以通过先禁用(disabled)默认插件,然后在激活(enabled)列表中的某个位置加入默认插件,这样就可以改变默认插件被调用的顺序。
声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。
本篇是作者在云原生PaaS平台项目中实战可观测能力做的技术调研,将关键技术知识点讲透,涉及:如何获取Pod的标准输出(stdout)日志、如何使用Grafana Agent收集日志(附配置案例讲解)、如何将日志上传Grafana Loki。
不禁感叹,k8s这个底座设计的太牛了,我们不仅可以通过CRD + 控制器做扩展,还可以自定义APIService去做扩展。k8s,牛啊!
kubectlx是一款基于go-prompt库开发的k8s命令行工具,目的是简化kubectl工具的一些常用命令的使用, 并提供命令输入提示、自动补全。
Serverless帮助我们实现了自动扩缩容,但要实现真正的按需付费,就要使用弹性的物理节点,例如AWS的Fargate,使用EKS将Pod调度到Fargate上。这也注定了不会有固定的Node去运行Pod,因此在Node上以DaemonSet部署日记收集容器的方案就走不通了。
订阅
订阅新文章发布通知吧,不错过精彩内容!
输入邮箱,提交后我们会给您发送一封邮件,您需点击邮件中的链接完成订阅设置。