k8s-调度 13

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。

kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群控制面的一部分。 如果你真的希望或者有这方面的需求,kube-scheduler 在设计上是允许你自己写一 个调度组件并替换原有的 kube-scheduler。

在做调度决定时需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限 制、亲和以及反亲和要求、数据局域性、负载间的干扰等等。
默认策略可以参考:调度程序配置 |Kubernetes的
调度框架:调度框架 | Kubernetes

nodeName 是节点选择约束的最简单方法,但一般不推荐。如果 nodeName 在 PodSpec 中指定了,则它优先于其他的节点选择方法。

使用 nodeName 来选择节点的一些限制

(1)如果指定的节点不存在。

(2)如果指定的节点没有资源来容纳 pod,则pod 调度失败。

(3)云环境中的节点名称并非总是可预测或稳定的。

使用nodename示例

回收

但如果找不到节点pod就会一直处于pending状态无法创建

nodename优先级特别高,其他设置有可能不会生效,集群节点不够稳调度就会出现故障。


nodeselector

nodeSelector 是节点选择约束的最简单推荐形式。

给选择的节点添加标签: kubectl label nodes server2 disktype=ssd

回收

亲和与反亲和

nodeSelector 提供了一种非常简单的方法来将 pod 约束到具有特定标签的节 点上。亲和/反亲和功能极大地扩展了你可以表达约束的类型。
你可以发现规则是“软”/“偏好”,而不是硬性要求,因此,如果调度器无 法满足该要求,仍然调度该 pod,你可以使用节点上的 pod 的标签来约束,而不是使用节点本身的标签,来允许哪些 pod 可以或者不可以被放置在一起。

节点亲和

requiredDuringSchedulingIgnoredDuringExecution 必须满足 preferredDuringSchedulingIgnoredDuringExecution 倾向满足(可以不满足,最好满足)

IgnoreDuringExecution 表示如果在Pod运行期间Node的标签发生变化,导致亲和性策略不能满足,则继续运行当前的Pod。

node-affinity

以上是节点的亲和性,主要是应该往哪个节点上调度的问题。

pod 亲和性和反亲和性

podAffinity 主要解决POD可以和哪些POD部署在同一个拓扑域中的问题(拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的 cluster、zone等。)
podAntiAffinity主要解决POD不能和哪些POD部署在同一个拓扑域中的问题。 它们处理的是Kubernetes集群内部POD和POD之间的关系。
Pod 间亲和与反亲和在与更高级别的集合(例如 ReplicaSets,StatefulSets, Deployments 等)一起使用时,它们可能更加有用。可以轻松配置一组应位于相同定义拓扑(例如,节点)中的工作负载。
Pod 间亲和与反亲和需要大量的处理,这可能会显著减慢大规模集群中的调度。

下面是pod的亲和性,解决的是pod与pod之间的关系

反亲和

回收

设置taint(污点)

master上默认存在taint污点,如果删除该污点,pod就会被挂接到该节点上

NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按我们的要求调度到某个Node上,而Taints则恰恰相反,它可以让Node拒绝运行Pod,甚至驱逐Pod。

Taints(污点)是Node的一个属性,设置了Taints后,所以Kubernetes是不会将Pod调 度到这个Node上的,于是Kubernetes就给Pod设置了个属性Tolerations(容忍),只要 Pod能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就能够(不是必须)把Pod调度过去。

回收

容忍:在PodSpec中为容器设定容忍标签

tolerations中定义的key、value、effect,要与node上设置的taint保持一致:

如果 operator 是 Exists ,value可以省略;

 如果 operator 是 Equal ,则key与value之间的关系必须相等;

如果不指定operator属性,则默认值为Equal。

还有两个特殊值

当不指定key,再配合Exists 就能匹配所有的key与value ,可以容忍所有污点。

当不指定effect ,则匹配所有的effect。

回收

去除污点

影响Pod调度的指令还有:cordon、drain、delete

cordon 停止调度

恢复节点

drain 驱逐节点

delete 删除节点

重启被删除的节点的kubelet服务从而重新加入集群

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#上位机与欧姆龙PLC的通信11----【爆肝】上位机应用开发(Winform版)

1、先上图 前面10讲,让你爽煹了肝,已经进入最后收尾阶段,这节来个常规应用,让前面的技能直接飞上天,我们要做的界面软件是这样的,虽然没有潘金莲漂亮,但也是爆抱: 2、如何爆&#x…

爬虫到底违法吗?你离违法还有多远?

最近,国家依法查处了部分编写爬虫程序,盗取其他公司数据的不良企业。一时间风声鹤唳,关于爬虫程序是否违法的讨论遍布程序员圈子。那么到底编写爬虫程序是否违法呢? 其爬虫下载数据,一般而言都不违法,因为…

【图的深度优先遍历】

前言 深度优先遍历简称DFS,主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底,不断递归重复此过程,直到所有的顶点都遍历完…

【机器学习】模型调参工具:Hyperopt 使用指南

机器学习| 模型调参工具:Hyperopt 使用指南 前言1. Hyperopt是什么?2. Hyperopt的优缺点3. 如何使用 Hyperopt 进行调参3.1 安装 Hyperopt3.2 构建超参数空间3.3 定义目标函数3.4 运行 Hyperopt 优化3.5 获取最优超参数 4. XGB调参代码示例参考资料 前言…

《设计模式的艺术》笔记 - 面向对象设计原则

1、单一职责原则 一个类只负责单一功能领域中的相应职责。 2、开闭原则 一个软件实体应当对扩展开放,对修改关闭。即软件实体应当尽量在不修改原有代码的情况下进行扩展。 3、里氏代换原则 所有引用基类的地方必须能透明地使用其子类的对象。即在软件中将一个基类…

Hyperledger Fabric Docker 方式多机部署生产网络

规划网络拓扑 3 个 orderer 节点;组织 org1 , org1 下有两个 peer 节点, peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点, peer0 和 peer1; 因为我只有 3 台虚拟机资源所以没法实现完全的多机部署,资源使用规划如下&#…

关于ubuntu20.04(Linux)屏幕突然横屏的解决方案

今天在用笔记本接深度相机(Intel RealSense Depth Cameras)的一瞬间,我的ubuntu界面突然横屏了,当时很惊讶!一时间不知所措,后面找到了解决方案: 参考链接: Ubuntu桌面旋转xrandr_…

智能分析网关V4方案:太阳能+4G+AI识别搭建智慧果园/种植园远程视频监控监管方案

一、方案背景 我国是水果生产大国,果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大、看守人员较少,值守的工作人员无法顾及园区每个角落,果园财产安全成为了关注的重点。人为偷盗、野生生物偷吃等事件时有发生,并…

磷酸铁锂电池生产污废水需要哪些工艺及设备

磷酸铁锂电池作为一种常见的锂离子电池,已广泛应用于电动汽车、储能系统等领域。然而,在磷酸铁锂电池的生产过程中,难免会产生一定量的污废水。为了有效处理和处理这些污废水,我们需要合适的工艺和设备。 首先,针对磷酸…

制造业卓越管理从6S管理开始

在当今制造业环境中,企业间的竞争愈发激烈,而管理水平的卓越与否,直接决定了企业在市场竞争中的地位和成功与否。管理并非一蹴而就,需要经过不断的实践和探索,逐步提升。其中,6S管理作为现代企业管理的基础…

Ubuntu 卸载重装 Nvidia 显卡驱动

问题描述 我使用 airsim 的时候,发现 UE4 没法使用显卡,导致非常卡顿 输入 nvidia-smi 有显卡型号等信息的输出,但是进程 process 里面没有显示 airsim 和其他软件占用显卡情况 因此,我选择了卸载重装 一.卸载旧版本的驱动 …

JAVA面试部分——后端-线程前篇

3.1 线程和进程 在计算机科学中,进程和线程是操作系统管理资源的两种不同方式。 进程(Process):是程序在计算机上的一次执行活动。每个进程都有自己的内存空间,包括代码、数据和系统资源。一个进程可以包含多个线程。…

内容分发功能升级!一站式搞定文案生成/违规检测/一键分发全流程

随着社交媒体的不断发展,越来越多的企业开始布局新媒体矩阵,从集团总部到区域门店、个人销售,从全品类到细分垂直类目、从单一平台到多平台,试图让品牌影响力覆盖更广泛群体, 当然,随之而来的,如…

深度学习”和“多层神经网络”的区别

在讨论深度学习与多层神经网络之间的差异时,我们必须首先理解它们各自是什么以及它们在计算机科学和人工智能领域的角色。 深度学习是一种机器学习的子集,它使用了人工神经网络的架构。深度学习的核心思想是模拟人脑神经元的工作方式,以建立…

RuntimeError: Placeholder storage has not been allocated on MPS device!解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

java 匿名内部类

匿名内部类(类没有名字): 1、什么是内部类? 内部类:在类的内部又定义了一个新的类,被称为内部类。 2、内部类的分类: 静态内部类:类似于静态变量 实例内部类:类似于实例变…

Web安全测试基础

SQL注入 当下最常用的一个攻击手段,就是通过SQL命令插入到Web表单中或页面请求查询字符串中,最终达到欺骗服务器执行恶意的SQL语句的目的,SQL注入一旦成功,轻则直接绕开服务器验证,直接登录成功,重则将服务…

【Flutter 开发实战】Dart 基础篇:条件循环表达式

Dart 是一门强大的编程语言,其条件和循环表达式在编写灵活、高效代码中起着关键作用。本文将深入介绍 Dart 中的条件表达式、循环表达式、以及关键字如 for、while、do...while、break、continue 等内容,旨在为初学者提供清晰的指导。 1. 条件表达式 D…

Netty Channel 详解

优质博文:IT-BLOG-CN 一、Netty 服务端启动过程 【1】创建服务端Channel; 【2】初始化服务端Channel; 【3】注册Selector; 【4】端口绑定:我们分析源码的入口从端口绑定开始,ServerBootstrap的bind(int in…

(每日持续更新)jdk api之File基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿&…