【kubernetes】kubernetes中的调度

1 调度过程

调度的本来含义是指决定某个任务交给某人来做的过程,kubernetes中的调度是指决定Pod在哪个Node上运行。

k8s的调度分为2个过程:

  • 预选:去掉不满足条件的节点
  • 优选:对剩下符合条件的节点按照一些策略进行排序,选择最优的节点运行Pod

2 亲和性

亲和性是指Pod调度时更倾向于调度到满足某些条件的节点。

亲和性按照对象不同分为节点亲和性和Pod亲和性:

  • 节点亲和性:Pod更倾向于调度到某类节点上运行
  • Pod亲和性:Pod更倾向于调度到跟某类Pod运行到同一个节点

亲和性按照满足条件的程度又分为软亲和性和硬亲和性:

  • 软亲和性:如果有满足条件的节点,则在这些节点上运行如果没有,也可以调度到不满足条件的节点上运行
  • 硬亲和性:必须调度到满足条件的节点上运行

亲和性的配置位于Pod.spec.affinity,节点亲和性位于Pod.spec.affinity.nodeAffinity,pod亲和性位于Pod.spec.affinity.podAffinity

3 污点和容忍度

3.1 污点和容忍度的含义

节点亲和性是指Pod必须或者可以被调度到带有某些标签的节点,是一种节点吸引Pod的能力。而污点则是节点排斥Pod的能力。

污点:节点拥有的属性,可以给节点打上污点,当Pod调度时就不会被调度到带有污点的节点。

容忍:创建Pod时指定的容忍度,当Pod调度时可以将Pod调度到带有这些污点的节点,当然也可以不调度到带有这些污点的节点。

污点由三部分组成:key=value:effect,其中value可以为空,effect描述污点的作用:

  • NoSchedule:k8s不会将Pod调度到有该污点的节点
  • PreferNoSchedule:k8s尽量避免将Pod调度到有该污点的节点(当节点资源不足时,也可以被调度)
  • NoExecute:k8s不会将Pod调度到有该污点的节点,同时会将节点上已经存在的Pod驱逐
3.2 如何设置

污点的设置:

# 设置污点
kubectl taint nodes node-name key=value:effect# 查看污点
kubectl describe pod pod-name# 删除污点
kubectl taint nodes node-name key:effect-

容忍度的设置:

Pod.spec.tolerations

tolerations:
- key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule"tolerationSeconds: 3600
- key: "key2"operator: "Exists"effect: "NoSchedule"

注意:

  • key、value、effect需要与节点上设置的污点一致
  • tolerationSeconds表示当污点设置为NoExecute时,Pod被驱逐前可以继续保留运行的时间

4 固定节点调度

在某些场景下,可能需要将Pod调度到某些固定的节点上:

  • 节点托管:用户将服务器托管给云平台,这些服务器只能用户自己使用,云平台给节点打上标签,用户在提交yaml时在其中配置好节点选择标签
  • 集群分区:对单个集群分区,分别打上标签

因此,k8s支持两种指定节点的方式:

Pod.spec.nodeName:指定节点名称,Pod就会只运行在该节点上。

Pod.spec.nodeSelector:指定节点带有的标签,Pod就只会运行在带有这些标签的节点上。

5 节点驱逐

当需要对节点进行维护时,需要让k8s不将Pod调度到该节点,k8s提供三种驱逐节点的操作:

  • cordon
  • drain
  • delete
5.1 cordon

kubectl cordon NodeName

将节点设置为SchedulingDisabled,后续新创建的Pod不会再调度到该节点,原来跑在上面的Pod仍可以对外提供服务。可以使用uncordon恢复调度。

5.2 drain

kubectl drain NodeName

将节点设置为SchedulingDisabled,后续新创建的Pod不会再调度到该节点,并且,原来跑在上面的Pod会被优雅终止。可以使用uncordon恢复调度。

5.3 delete

kubectl delete node NodeName

驱逐节点上的Pod,在其他节点上重建,然后将该节点从集群中删除。如果需要重新加入集群,需要将kubelet进程重启。

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

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

相关文章

[学习笔记]ARXML - Data Format

参考AUTOSAR文档: https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdfhttps://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdf 编码 arxml只允许使用UTF-8编码&#xff…

【Oracle】Oracle系列之十五--存储过程

文章目录 往期回顾前言1. 基本概念(1)定义(2)存储过程与函数的区别(3)存储过程与触发器的区别 2. 创建和使用存储过程(1)创建存储过程(2)调用存储过程&#x…

【Java 进阶篇】JDBC ResultSet 遍历结果集详解

在Java数据库编程中,经常需要执行SQL查询并处理查询结果。ResultSet(结果集)是Java JDBC中用于表示查询结果的关键类之一。通过遍历ResultSet,我们可以访问和操作从数据库中检索的数据。本文将详细介绍如何使用JDBC来遍历ResultSe…

ubuntu 18.04 LTS安装opencv 3.4.16 + opencv_contrib 3.4.16

1.下载 opencv 3.4.16 opencv_contrib 3.4.16 其中,opencv_contrib解压后的多个文件夹复制到opencv内、合并 2.安装 参考博文: https://zhuanlan.zhihu.com/p/650792342 https://zhuanlan.zhihu.com/p/87197806 其中 (1)cmake前…

2023年中国金刚石工具产量、需求量、市场规模及行业细分产品规模[图]

金刚石工具就是以金刚石为增强体,以金属或聚合物为基体的一类功能复合材料。金刚石工具已经成为当今公认的、唯一有效的硬脆非金属材料加工工具,比如,只有用金刚石刀具能加工超硬的陶瓷,尚无其他代用品。金刚石工具根据其用途的不…

【VIM】初步认识VIM-2

2-6 Vim 如何搜索替换_哔哩哔哩_bilibili 1-6行将self改成this 精确替换quack单词为交

湖南特色农产品销售系统APP /基于android的农产品销售系统/基于android的购物系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的APP应运而生,各行各业相继进入信息管理时代&#x…

uboot启动流程-uboot内存分配

一. uboot启动流程 _main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。 具体分析 board_init_f函数的第二部分:内存分配代码。 本文继上一篇文章的学习,地址如下: uboot启动流程-涉及board_init…

【C语言数据结构】线性表-顺序存储-动态分配(顺序表)

线性表-顺序存储-动态分配 代码实现 代码实现 #include<stdio.h> #include<stdlib.h> #include<stdbool.h>//线性表初始分配的长度 #define InitSize 3//线性表元素的数据类型 #define ElemType inttypedef struct {//定义线性表的元素数据&#xff0c;虽然…

玩客云Armbian_23.08.0-trunk_Onecloud_bookworm_edge_6.4.14.burn配置

固定IP # interface file auto-generated by buildrootauto lo iface lo inet loopback// 上面是默认的内容,下面是新增的内容,上下之间需要一个空行隔开 // 接口顶格写,属性的前面有一个tab的缩进 # The primary network interfaceauto eth0 iface eth0 inet staticaddress 1…

【QT】自定义组件ui类添加到主ui界面方法

1.添加自定义组件到项目中 add new选择如下 写好类方法&#xff0c;确定即可 2.将新创建的ui类加入到主ui界面 选中新创建ui类的父类空块&#xff0c;右键选择提升为 选择并添加新创建的类

如何搭建团队知识库?试试新的工具和方法吧!

知识本身没有价值&#xff0c;只有被利用的知识才能发挥作用。我们经常见到有许多“宏伟”的团队知识库&#xff0c;但是从来没有人去用…… 搭建团队知识库 没有人用的团队知识库存在的问题是“我们知道所有问题的答案&#xff0c;就是不知道问题是什么”。如何建立团队知识库…

业务拆分——微服务拆分独立出来的步骤

背景介绍 随着公司业务的变化&#xff0c;系统的架构需要不断的调整。当客户的需求不断细化&#xff0c;营销方案的不断调整&#xff0c;产品需要达到更细的粒度&#xff0c;以便产品可以灵活组合进行销售。故此时需要拆分一些公共的业务&#xff0c;作为独立的微服务部署&…

NLP中token总结

Token 可以被理解为文本中的最小单位。在英文中&#xff0c;一个 token 可以是一个单词&#xff0c;也可以是一个标点符号。在中文中&#xff0c;通常以字或词作为 token。ChatGPT 将输入文本拆分成一个个 token&#xff0c;使模型能够对其进行处理和理解 在自然语言处理&#…

vertx的学习总结2

一、什么是verticle verticle是vertx的基本单元&#xff0c;其作用就是封装用于处理事件的技术功能单元 &#xff08;如果不能理解&#xff0c;到后面的实战就可以理解了&#xff09; 二、写一个verticle 1. 引入依赖&#xff08;这里用的是gradle&#xff0c;不会吧&#…

flink生成水位线记录方式--周期性水位线生成器

背景 在flink基于事件的时间处理中&#xff0c;水位线记录的生成是一个很重要的环节&#xff0c;本文就来记录下几种水位线记录的生成方式的其中一种&#xff1a;周期性水位线生成器 周期性水位线生成器 1.1 BoundedOutOfOrdernessTimeStampExtractor 他会接收一个表示最大延…

【C语言 模拟实现strlen函数的三种方法】

C语言程序设计笔记---022 C语言之模拟实现strlen函数1、介绍strlen函数2、模拟strlen函数的三种方法2.1、计数器法模拟实现strlen函数2.2、递归法模拟实现strlen函数2.3、指针减指针法模拟实现strlen函数 3、结语 C语言之模拟实现strlen函数 前言&#xff1a; 通过C语言字符串…

18scala笔记

Scala2.12 视频地址 1 入门 1.1 发展历史 … 1.2 Scala 和 Java Scala Java 编写代码使用scalac编译成.class字节码文件scala .class文件 执行代码 1.3 特点 1.4 安装 视频地址 注意配置好环境变量 简单代码 1.5 编译文件 编译scala文件会产生两个.class文件 使用java…

【初始Linux】上

初始Linux上 一、Linux背景1.1 UNIX发展的历史1.2 UNIX发展的历史 二、开源三、官网Linux官网 四、企业应用现状五、发行版本六、 os概念&#xff0c;定位 本博客简介 初始Linux操作系统初识shell命令 ,了解若干背景知识。使用常用Linux命令了解Linux权限概念与思想,能深度理解…

Java | Maven(知识点查询)

文章目录 Maven知识速查1. Maven概述2. Maven的作用3. Maven的下载4. Maven的环境配置5. Maven 的基础组成5.1 Maven仓库5.1.1 本地仓库配置&#xff1a;5.1.2 中央仓库配置&#xff1a;5.1.3 镜像仓库配置 5.2 Maven坐标 6. Maven项目6.1 手工创建Maven项目6.2 自动构建项目 7…