k8s之scheduler
一、概述
调度器是kubernetes中独特而又重要的一个模块,独特是因为scheduler是唯一一个以plugin形式存在的组件,重要是因为kubernetes中最重要的基础单元pod的部署是通过scheduler完成的。
正常情况下,scheduler为pod通过算法筛选合适的node,然后绑定pod与node关系,而相应的node上的kubelet在完成绑定之后才会启动pod,此过程中,scheduler的功能很明确,就是筛选出合适的node,如果找到了就绑定node信息,如果没有找到,pod则会一直处于pending状态,一旦一个合适的Node接入到kubernetes cluster,调度器会将pod调度到该Node上。
我们知道在k8s中有个非常主要的对象叫做Replication Controller,简称RC.在部署pod时候,通常是通过RC指定pod类型以及副本数量来实现,而并非是部署单pod。为什么需要借助RC来部署呢?首先就是快速方便,只需指定副本数量即可,RC可以部署指定数量的副本pod,另外就是一旦某个pod fail掉,RC可以通过调度器再次拉起与失败个数相同的副本以确保running的副本个数与指定的个数一致。
这里我们可能有个疑问,既然调度器的目的是为pod筛选合适的node,那么在pod中能否指定node呢? 答案是可以的,如果在pod中指定node,则不会经过调度器,node上的kubelet会拉起pod。这时候问题又来了,没有经过调度器的算法筛选,这个由用户指定的node如果不满足Pod的要求,比如资源要求,那又会出现什么样的情况呢? 答案其实很简单,这个pod会被kubelet设置成fail状态,那么这么说来,kubelet会像scheduler一样对node做一些判断,以确保pod适合当前的node。下面我们会分析这个判断的过程。
二、scheduler模块分析
调度的过程分两步,首先是做筛选(predict),其次是排序(priorities)。筛选的过程是决定是否,排序的过程是区分优劣。算法是调度的依据,这个算法其中的一部分-GeneralPredicates也会被kubelet用到,这个在第二节中提到过。算法加载的过程比较巧妙,是通过包的引用来作为算法加载的入口的:
k8s之scheduler的更多相关文章
- k8s集群---apiserver,controller-manager,scheduler部署
#证书自签名脚本 root@k8s-master: ~/k8s/k8s-cert :: $ cat k8s-cert.sh cat > ca-config.json <<EOF { ...
- k8s集群之master节点部署
apiserver的部署 api-server的部署脚本 [root@mast-1 k8s]# cat apiserver.sh #!/bin/bash MASTER_ADDRESS=$1 主节点IP ...
- ASP.NET Core on K8S深入学习(3)Deployment
上一篇<部署过程解析与安装Dashboard>中我们了解K8S的部署过程,这一篇我们来了解一下K8S为我们提供的几种应用运行方式:Deployment.DaemonSet与Job,它们是K ...
- K8S - 容器编排工具Kubernetes简介
1 - Kubernetes Kubernetes(简称K8s,用8代替8个字符"ubernete")是Google开源的一个容器编排引擎. 目前最为广泛且流行的容器编排调度系统, ...
- python安装二进制k8s 1.11.0 一个master、一个node 查看node节点是主机名---apiserver无法启动,后来改了脚本应该可以
一.脚本说明: 本实验中master.node.etcd都是单体. 安装顺序为:先安装test1节点主要组件,然后开始安装test2节点,最后回头把test1节点加入集群中,这样做目的是理解以后扩容都 ...
- K8s二进制部署单节点 master组件 node组件 ——头悬梁
K8s二进制部署单节点 master组件 node组件 --头悬梁 1.master组件部署 2.node 组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...
- k8s的部署
一.k8s的二进制部署 1.环境准备: IP 节点 172.16.10.1 k8s-master01 172.16.10.3 ...
- 二进制安装部署kubernetes集群---超详细教程
本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...
- Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署
一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...
随机推荐
- Delphi下URL汉字编码解码的两个函数
//汉字URL编码函数function URLEncode(const S: string; const InQueryString: Boolean): string;var Idx: Integ ...
- 提升进程权限为DEBUG权限
在网上也看到了一些提升进程令牌的函数但都不怎么好用,最后我还是从一个黑客后门程序的源代码中提取出了一个好的提升进程令牌的函数,不敢独享,跟大家分享下.那个后门真的写的很好... Hysia提示你: 这 ...
- Android Studio安装使用图文教程
原文 http://jingyan.baidu.com/article/1876c852a25cb4890b1376fa.html Google I/O开发者大会上宣布,Android Studio ...
- hdu4740【杭州网赛、模拟、有点搜索?】
当时看了这题就感觉so easy... 本来不想写的,后来感觉是不是可以练一下搜索水平.. 比赛时有人过了就没写. 比赛完了写一下. 实现还不是那么顺利, 囧 本来自己以为这题能练下搜 ...
- Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)
我们依据上一次介绍的触屏事件和事件队列等知识来实现触屏的单击,双击,三连击事件. 下图为我们实现的效果图: 单击精灵跳跃一个高度, 双击精灵跳跃的高度比单击的高 三连击精灵跳跃的跟高 好了,開始动手吧 ...
- sctf pwn200
题目给出了pwn200和libc.so.使用IDA查看程序,发现逻辑很简单. 使用checksec查看pwn200的安全属性,如下图: 发现NX enabled,No PIE. 在第一次读(0x080 ...
- JAVA模板方法模式
模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术. 模板方法模式需要开发抽象类和具体子类的设计师之间的协作.一个设计师负责给出一个算法的轮廓和骨架,另 ...
- C#.net连接SQLite及遇到的问题
1.Slite简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需 ...
- OC中最难的一部分内容:内存管理
OC中最难的一部分内容:内存管理为什么说他难呢?因为内存如果需要我们程序员去管理的话,那个难度肯定是很大的,如果是Java,垃圾回收器会把这份工作给做了,我们不需要关心,但是就是因为如此,Androi ...
- window.showModalDialog的基本用法
window.showModalDialog的基本用法 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.show ...