首页 > 其他分享 >Kubernetes Scheduler原理分析

Kubernetes Scheduler原理分析

时间:2023-06-23 22:02:06浏览次数:37  
标签:Node 容器 Kubernetes Server kubelet API Scheduler 原理 Pod

Kubernetes Scheduler在整个系统中起到“承上启下”的重要作用,“承上”是指它负责接收Controller Manager创建的新Pod,为其安 排一个落脚的“家”——目标Node;“启下”是指安置工作完成后,目标Node上的kubelet服务进程接管后继工作,负责Pod生命周期中的“下半生”。

1.Scheduler的作用

(1)监听API Server,获取还没有绑定(bind)到Node上的Pod。

(2)根据预选、优先、抢占策略,将Pod调度到合适的Node上。

(3)调用API Server,将调度信息写入到etcd。

2.Scheduler的原则

(1)公平。确保每个Pod都要被调度,即使因为资源不够而无法调用。

(2)资源合理分配。根据多种策略选择合适的Node,并且使资源利用率尽量高。

(3)可自定义。内部支持多种调度策略,用户可以选择亲和性、优先级、污点等控制调度结果,另外也支持自定义Scheduler的方式进行扩展。

Kubernetes Scheduler当前提供的默认调度流程分为以下两步。

(1)预选调度过程。即遍历所有目标Node,筛选出符合要求的候选节点。为此,Kubernetes内置了多种预选策略(xxx Predicates)供用户选择。

(2)确定最优节点。在第一步的基础上,采用优选策略(xxx Priority)计算出每个候选节点的积分,积分最高者胜出。

3.节点管理

在Kubernetes集群中,在每个Node上都会启动一个kubelet服务的进程。该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。每个kubelet进程都会在API Server上注册节点自身的信息,定期向Master汇报节点资源的使用情况,并通过cAdvisor监控容器和节点资源。

节点通过设置kubelet的启动参数“--register-node”,来决定是否向API Server注册自己。如果该参数的值为true,那么kubelet将尝试通过API Server注册自己。

4.Pod管理

kubelet通过以下几种方式获取自身Node上所要运行的Pod清单。

(1)文件。kubelet启动参数“--config”指定的配置文件目录下的文件(默认目录为“/etc/kubernetes/ manifests/”)。通过--file-check- frequency设置检查该文件目录的时间间隔,默认为20秒。

(2)HTTP端点(URL)。通过“--manifest-url”参数设置。通过--http-check-frequency设置检查该HTTP端点数据的时间间隔,默认为20秒。

(3)API Server。kubelet通过API Server监听etcd目录,同步Pod列表。

所有以非API Server方式创建的Pod都称为Static Pod。kubelet将Static Pod的状态汇报给API Server,API Server为该Static Pod创建一个Mirror Pod与其相匹配。Mirror Pod的状态将真实反映Static Pod的状态。当Static Pod被删除时,与之相对应的Mirror Pod也会被删除。

5.容器健康检查

Pod通过以下两类探针来检查容器的健康状态。

(1)一类是LivenessProbe探针。用于判断容器是否健康并反馈给kubelet。如果LivenessProbe探针探测到容器不健康,则kubelet将删除该容器,并根据容器的重启策略进行相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针返回的值永远是Success。

(2)另一类是ReadinessProbe探针。用于判断容器是否启动完成,且准备接收请求。如果ReadinessProbe探针检测到容器启动失败,则Pod的状态将被修改,Endpoint Controller将从Service的Endpoint中删除包含该容器所在Pod的IP地址的Endpoint条目。

6.Cadvisor资源监控

Cadvisor的特点如下。

(1)Cadvisor是一个开源的分析容器资源使用率和性能特性的代理工具,它是因容器而生的,因此自然支持Docker容器。

(2)在Kubernetes项目中,Cadvisor被集成到Kubernetes代码中,kubelet则通过Cadvisor获取其所在节点及容器的数据。

(3)Cadvisor自动查找所有在其所在Node上的容器,自动采集CPU、内存、文件系统和网络使用的统计信息。

(4)在大部分Kubernetes集群中,Cadvisor通过它所在Node的4194端口暴露一个简单的UI。

标签:Node,容器,Kubernetes,Server,kubelet,API,Scheduler,原理,Pod
From: https://blog.51cto.com/key3feng/6539162

相关文章

  • 基于深度学习的文本分类6大算法-原理、结构、论文、源码打包分享
    导读:文本分类是NLP领域一项基础工作,在工业界拥有大量且丰富的应用场景。传统的文本分类需要依赖很多词法、句法相关的human-extractedfeature,自2012年深度学习技术快速发展之后,尤其是循环神经网络RNN、卷积神经网络CNN在NLP领域逐渐获得广泛应用,使得传统的文本分类任务变得更加容......
  • 斯坦福2020年免费新课-CS221人工智能原理与技术-视频、ppt、参考书籍分享
        分享一套斯坦福大学在2020年初,2019年底放出一门免费精品课程-人工智能原理与技术课程,对于对于春节想要系统学习人工智能知识朋友绝对不容错过。课程介绍    这门课主要讲什么?网络搜索、语音识别、人脸识别、机器翻译、自动驾驶和自动调度有什么共同之处呢?这些都是复杂......
  • Docker原理和Dockerfile的原理介绍
    Docker原理Docker是一种容器化平台,可以在其中运行应用程序。Docker将应用程序和其依赖项打包在一个容器中,提供了一种轻量级的解决方案,可以轻松地在任何平台上运行应用程序。Docker的核心技术是Linux容器(LXC)。容器是一种虚拟化技术,允许应用程序在有限的资源下运行,同时提供了强大的隔......
  • hashMap和hashTable的区别以及HashMap的底层原理?
    hashMap和hashTable的区别?1、继承的父类不同HashTable继承Dictionary类,而hashMap继承了AbstractMap类,但是二者都实现了map接口。2、线程安全性不同 Hashtable线程安全,因为它每个方法中都加入了Synchronize。HashMap是线程不安全的。1HashMap底层是一个Entry数组,当发生hash......
  • 21年ML入门-从第一原理学习机器学习理论
    本书介绍    春季学期教的课上对其进一步完善。本书的目标是为最广泛使用的学习架构呈现学习理论的新旧成果。本书面向以理论为导向的学生,以及希望获得对机器学习和相关领域中使用的算法的基本数学理解的学生,包括计算机视觉、自然语言处理等领域的学生。本书将主要讲解第一性原......
  • 21年最新DL-深度学习理论原理—理解神经网络的有效理论途径
    本书介绍    这本书提出了一种有效的理论方法来理解实际的深层神经网络。从网络输入图像开始,我们逐步解释如何通过求解逐层迭代方程和非线性方程,来确定训练网络输出的结果。一个主要的结果是网络的预测用近似高斯分布描述,网络的深宽比控制着与无限宽高斯描述的偏差。我们解释了......
  • kubernetes使用ceph作为持久化存储
    1.资源规划官方:https://ceph.com/en官方文档:https://docs.ceph.com/en/latest/start/introceph是一种开源的分布式的存储系统包含以下几种存储类型:块存储(rbd),对象存储(RADOSFateway),文件系统(cephfs)介绍:本篇文件主要是在ubuntu22.04本地去搭建一套ceph集群,后续使用storagec......
  • 密码学:凯撒密码(移位密码)原理、加密与解密(Python代码示例)
    原理凯撒密码(移位密码):是一种替换加密,明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。例如,偏移量为3位的时候:A对应D,B对应E,C对应F等当偏移量为13位的时候,凯撒密码又叫回转密码(ROT13):明文加密得到密文,密文再加密就会得到明文(因为偏移量为13位,一共......
  • 速递-因果推理原理:基础与学习算法
            推荐一本详细讲解因果推理原理的新书,本书2020年初刚刚Release出来,需要的朋友自取。对该领域理解有限,翻译不太准确,望见谅。  bshq:2020年新书速递-《因果推理原理:基础与学习算法》分享前沿概述    因果关系推理(Causality)是一个非常有趣的研究课题。最近才开......
  • 2020年新书速递-《因果推理原理:基础与学习算法》分享
            推荐一本详细讲解因果推理原理的新书,本书2020年初刚刚Release出来,需要的朋友自取。对该领域理解有限,翻译不太准确,望见谅。     文末附本书下载pdf地址。 前沿概述    因果关系推理(Causality)是一个非常有趣的研究课题。最近才开始研究隐藏在其背后的数学......