首页 > 其他分享 >kube-scheduler的2个独立控制循环

kube-scheduler的2个独立控制循环

时间:2023-05-02 10:55:08浏览次数:44  
标签:调度 kubelet 循环 scheduler Pod kube 节点

k8s 1.15.0

调度周期:从NextPod到RunPermitPlugins
绑定周期:从RunPrebindPlugins到RunPostbindPlugins
调度的本质就是将Pod为空的NodeName写上相应的Node的值

第1个控制循环:Informer Path

通过Informer来List Watch API对象,把待调度Pod(nodeName字段是空的)添加进调度队列。只有对调度队列和 Scheduler Cache 操作时,才需要加锁。

第2个控制循环:Scheduling Path

不断地从调度队列里出队一个Pod。
Predicates:过滤出符合条件的所有节点
Priorities:找到最终调度的节点
设置Pod对象的nodeName。
Assume:不在关键调度路径里访问kube-apiserver,只会更新Scheduler Cache里的Pod和Node信息。
Bind:通过协程异步地向kube-apiserver更新Pod。如果这次异步过程失败了,等Scheduler Cache同步之后一切就会恢复正常。

pkg/scheduler/scheduler.go
scheduleOne函数

Admit:kubelet二次确认

Pod完成调度后,在某个节点上运行起来之前,该节点上的kubelet通过GeneralPredicates的预选调度算法来再次验证该Pod是否确实能够运行在该节点上。当kubelet二次确认时发现Pod不能在当前节点上创建时,该Pod会被kubelet向kube-apiserver发送删除请求。

pkg/kubelet/kubelet.go
syncLoopIteration函数

HandlePodAdditions函数

canAdmitPod函数

pkg/kubelet/lifecycle/interfaces.go
Admit函数

Scheduler Framework:可扩展性设计

基于Go plugin机制(在编译时选择把哪些插件编译进去,每一个绿色的箭头都是插件),在调度器生命周期的各个关键点上,暴露出扩展接口,实现用户自定义调度器的能力。

参考资料

41 | 十字路口上的Kubernetes默认调度器

标签:调度,kubelet,循环,scheduler,Pod,kube,节点
From: https://www.cnblogs.com/WJQ2017/p/17367439.html

相关文章

  • 初识循环语句
     while循环 首先创建一个想要循环的变量设置变量循环的值当变量的值小于设定的值时,将会一直循环,(后面添加变量名称,就可以显示循环次数)每循环一次就往上加 直至循环次数达到后将跳出循环......
  • Elasticsearch专题精讲——Installing Elasticsearch——Elastic Cloud on Kubernetes
    InstallingElasticsearch——ElasticCloudonKubernetes(ECK)https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s_supported_versions.html一、SupportedVersions:Kubernetes1.22-1.26OpenShift4.8-4.12GoogleKubernetesEngine(GKE),AzureKubernetes......
  • 云原生第二周--使用kubeasz部署多master的k8s集群
    1k8s集群介绍1.1k8s单master架构单master节点的架构,通常只用于测试环境,生产环境绝对不允许;这是因为k8s集群master的节点是单点,一旦master节点宕机,将导致整个集群不可用;其次单master节点apiServer是性能瓶颈;从上图我们就可以看到,master节点所有组件和node节点中的kubel......
  • Kubernetes从入门到精通 资源管理
    一资源管理介绍在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。kubernetes的最小管理单......
  • 七、Kubernetes安全性
    官方指导文档NFS的动态供应;Pod;pvc---自动创建pvk8s会认为每个Pod也可以是操作集群的一个用户。给这个用户会给一个ServiceAccount(服务账号)权限控制流程:用户携带令牌或者证书给k8s的api-server发送请求要求修改集群资源k8s开始认证。认证通过k8s查询用户的授权(有哪些权限)......
  • 【数据结构】链式型存储结构-循环单链表
    1 前言对于单链表,由于每个结点只存储了向后的指针,到了尾部标识就停止了向后链的操作。也就是说,按照这样的方式,只能索引后继结点不能索引前驱结点。这样一来,不从头结点出发,这样就无法访问到全部结点。为了解决这个问题,我们只需要将单链表的尾结点的指针由空指针改为指向头结点......
  • Kubernetes从入门到精通 集群安装
    kubernetes集群安装一准备集群镜像从阿里云镜像仓库拉镜像标签改名#在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看[root@master~]#kubeadmconfigimageslist#下载镜像#此镜像kubernetes的仓库中,由于网络......
  • js在循环中使用正则失效异常的坑
    1、异常案例:使用正则匹配111constregular=/111/g;//匹配111//console.log(regular.test('111'));//true匹配成功//console.log(regular.test('111,111'));//true匹配成功constlist=['111','111'......
  • Kubernetes(K8S) kubesphere 介绍
    使用Kubeadm部署Kubernetes(K8S)安装--附K8S架构图Kubernetes(K8S)kubesphere安装官网地址:https://kubesphere.com.cn/KubeSphere是个全栈的Kubernetes容器云PaaS解决方案KubeSphere是在目前主流容器调度平台Kubernetes之上构建的企业级分布式多租户容器平台,提供简单易......
  • Kubernetes从入门到精通 集群安装准备工作
    一、准备环境 master01192.168.117.100docker,kubectl,kubeadm,kubeletnode01192.168.117.101docker,kubectl,kubeadm,kubeletnode02192.168.117.102docker,kubectl,kubeadm,kubelet二、环境初始化1检查操作系统的版本#此方式下安装kuber......