kubernetes-深入理解Pod对象:调度

一、创建一个Pod的工作流程

Pod创建流程:

1、kubectl 向 APIServer 发起一个 Pod 创建请求。

2、APIServer 接受到 Pod 创建请求后,不是直接创建 Pod,而是将 Pod 的数据写入 etcd 中,待写入操作执行完成,APIServer 将结果返回给 kubectl,此时仅仅是在 etcd 中写入数据,Pod 还没真正创建。

3、Controller-Manager 通过 APIServer 提供的 watch 实时监听 Pod 事件,发现有新的 Pod 要创建,Pod 控制器开始接管并创建 Pod(此时Pod状态属于pending中,即pod创建中或pod创建完成,但未被调度),创建完成后将结果上报给 APIServer。

4、Scheduler 通过 APIServer 提供的 watch 实时监听Pod 事件,发现有新的 Pod 被创建了并且未调度,则开始根据各种调度算法将 Pod 绑定到最合适的工作节点,Pod 绑定完成后将结果上报给 APIServer,APIServer存储绑定数据到etcd。

5、kubelet 通过 APIServer 提供的 watch 实时监听 Pod 事件,发现有新的 Pod 被调度到当前节点,开始调用 cri 接口让容器运行时启动容器。

6、kubelet 创建运行 Pod 完成后,将结果上报给 APIServer,同步到etcd中,至此结束。

注:controller-manager、kubeproxy不参与创建流程,所以上图没有体现。

如果是创建Deployment,controller-manager、kubeproxy就会实际参与了。

这里,controller-manager - 比如repliceSetController,控制副本数量;

Pod中影响调度的主要属性:

schedulerName - 调度器名称,default-scheduler默认调度器;

resources - 资源调度依据(配额)

nodeName - 调度节点名称

nodeSelector - 调度节点标签名称

affinity - 亲和性方式调度

tolerations - 允许调度到含有污点容忍的节点

二、资源限制对Pod调度的影响

如果同一节点上,有10个容器,在部署的时候,不做资源限制,当其中的一个或几个容器突然CPU或内存飙升,可能会占满服务器的资源,导致其他的容器不能再正常提供服务,所以有必要对Pod(容器)做出资源限制。

这里提示,集群中的3个节点都不满足(cpu、内存都不满足),所以node无法分配,pod处于等待状态(pending)。

查看某个节点的可分配资源信息:

命令:kubectl describe node k8s-node1

这个节点,cpu已经分配出去350m(占总可分配的17%),内存已经分配出去70Mi(占总可用的1%)

三、节点标签选择器nodeSelector

label指令可以给任何资源打标签:

四、节点亲和性nodeAffintiy

注:weight1-100,权重值越大,越优先使用的概率越大。

五、Taint(污点)与Tolerations(污点容忍)

当node配置有污点,而创建yaml后,node因为污点不能使用时,Pod会一直处于等待状态(Pending),查看Pod详细信息,可以看到下面内容:

添加污点容忍:

去掉污点:

六、绕过调度器nodeName

设置nodeName,不经过调度器,所谓污点、标签之类的节点选择也就可以忽略,直接部署到对应节点。

这种方式,基本正常上用不到,除非当调度器出现故障时,希望快速将pod分配到指定node上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/368495.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3 之 组合式API - setup选项

首先我们先看下setup选项的写法和执行时机 setup选项中写代码的特点 语法糖 总结 setup选项的执行时机? beforeCreate钩子之前 自动执行 setup写代码的特点是什么? 定义数据 函数 然后以对象方式return 经过语法糖的封装更简单的使用组合式API set…

mybatis-plus 3.5.1 自动填充无效问题

使用了mybatis-plus的自动填充功能,但是我debug的时候进都进不去 这是为什么? 我在新增的时候连insertFill方法都进不去 原因是,我没有在我的新增实体类上加上 fill FieldFill.INSERT 还有些问题是配置类, 没有扫描到的问题,这个网上一搜一大把 注意,这个实体类是你新增的…

BUUCTF-Real-[struts2]s2-013

struts2的标签中 <s:a> 和 <s:url> 都有一个 includeParams 属性&#xff0c;可以设置成如下值none - URL中不包含任何参数&#xff08;默认&#xff09; get - 仅包含URL中的GET参数 all - 在URL中包含GET和POST参数 当includeParamsall的时候&#xff0c;会将本次…

ep-bg-purple-dark element-plus 不生效

element-plus 官网里面的 Layout 布局中的示例&#xff0c;官方文档中添加类名 class"grid-content ep-bg-purple-dark" 有相应的样式 import element-plus/theme-chalk/index.css //默认css样式 英文 import element-plus/dist/index.css 两…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…

图解Java多线程设计模式

第5章Producer-Consumer模式 Producer是生产者的意思&#xff0c;指的是生成数据的线程。Consumer则是"消费者"的意思&#xff0c;指的是使用数据的线程。生产者安全地将数据交给消费者。但当虽然仅是这样看似简单的操作&#xff0c; 但当生产者和消费者以不同的线…

XUbuntu22.04之跨平台远程控制工具(二百一十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

学术研究新突破:发现新型相变存储器

斯坦福大学的研究人员开发出了一种新型相变存储器&#xff0c;该存储器有望帮助计算机更快、更高效地处理大量数据。在最近发表于《自然通讯》的一篇论文中&#xff0c;研究人员详细介绍了这项技术&#xff0c;表明一种新材料可能会使基于电阻高低状态切换以创建计算机数据“0”…

算法设计与分析实验:回溯

目录 一、组合总和 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、全排列 2.1 具体思路 2.2 思路展示 2.3 代码实现 2.4 复杂度分析 2.5 运行结果 三、N皇后问题 3.1 具体思路 3.2 思路展示 3.3 代码实现 3.4 复杂度分析 3.5 运行…

jsp自助点餐管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 自助点餐管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

关于Ubuntu下docker-mysql:ERROR 2002报错

报错场景&#xff1a; mysql容器创建好后登录mysql时即使密码正确也是报出下方提示&#xff1a; 原因是在创建mysql容器在创建时本地目录缺失&#xff0c; 先去自建一个目录&#xff0c;例如&#xff1a; /opt/my_sql 正确完整目录如下&#xff1a; docker run --namemys…

深度学习水论文怎么缝模块?搭积木永不过时!(附80个即插即用模型)

深度学习如何创新&#xff1f;如何水模型&#xff1f;总结来说就八个字&#xff1a;排列组合&#xff0c;会讲故事。说直白点&#xff0c;就是缝模块。 先看看别人怎么做&#xff0c;然后根据自己的实际情况将这些模块来一波随机组合&#xff0c;这样效率会高很多。我这边已经…

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者&#xff08;灯光控制&#xff09;订阅者&#xff08;灯光状态接收&#xff09;&#xff1a; 9.1.3 拓…

浪漫的通讯录(顺序表篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能…

几个简单的shell编程

一、输出1到100之间的整数之和 sum0 i1 for i in {1..100} dosum$((sumi)) done echo "The sum of integers from 1 and 100 is:$sum"sum0 for ((i0;i<100;i)) dosum$[$sum$i] #sum$((sumi)) done echo "The sum of integers between 1 and 100 is:$sum&quo…

中国象棋基础

帅&#xff08;将&#xff09;的运用原则&#xff1a; &#xff08;1&#xff09;帅走直线&#xff0c;前进后退均可 &#xff08;2&#xff09;一次只能走一格 &#xff08;3&#xff09;活动范围在“九宫”之内 &#xff08;4&#xff09;可行处可吃敌子 &#xff08;5&…

多线程-定时器

目录 1.定时器是什么 2.标准库中的定时器 3.实现定时器 3.1 MyTimer类 1.首先Timer 类提供的核⼼接⼝为 schedule, ⽤于注册⼀个任务, 并指定这个任务多⻓时间后执⾏. 2.Timer 实例中, 通过 PriorityQueue 来组织若⼲个 Task 对象. 通过 schedule 来往队列中插⼊⼀个个 Task …

中缀转后缀

概念 什么是后缀表达式&#xff1f; 后缀表达式&#xff0c;其实就是一个中缀表达式 AOB > ABO &#xff08;A、B是式子、O 为运算符&#xff09;&#xff0c;将运算符向后放 中转后举例 中缀表达式&#xff1a;&#xff08;a b&#xff09;* c - (d / c) 首先&#xff…

jupyter notebook找不到自己创建的环境 无法识别 解决方法

问题描述&#xff1a; 这是最近遇到的一个关于Anaconda的小问题。 用conda创建一个名为 pytorch 的环境想学习pytorch&#xff0c;安装完一切之后在 jupyter 中找不到 pytorch 这个虚拟环境&#xff0c;与之相关的库也都无法调用 解决方法&#xff1a; 实际上是由于在虚拟环境…

DevOps落地笔记-12|API管理:微服务时代的必备工具

上一课时主要介绍了使用持续集成这个实践来保证开发中的软件处于可工作的状态&#xff0c;解决的是开发后期才集成导致的无法集成或功能无法使用的问题。 最近几年&#xff0c;软件架构也在不断升级&#xff0c;逐渐采用前后端分离、微服务的体系结构。前后端分离使得前端和后…