k8s的策略

集群调度:

Scheduler的调度算法:

预算策略

过滤出合适的节点

优先策略

选择部署的节点

NodeName:硬策略,不走调度策略,node1

nodeSelector:根据节点的标签选择,会走一个调度算法

只要是走调度算法,在不满足预算策略的情况下,所有的pod都是pending

Node节点的亲和性:

硬策略:必须满足的条件。匹配原则根据节点的标签

软策略:尽量满足,而不是一定满足

以上说的都是node节点

接下来我们来说pod的

亲和性和反亲和性:

调度策略:      匹配标签         操作符                      拓扑域   调度目标

Node的亲和性: 主机标签        in¬in exists doesNotExist Gt Lt 不支持    指定主机

Pod 的亲和性    pod的标签      in notin exists doesnotexist       支持     pod和指定标签的pod部署在同一拓扑图

Pod的反亲和性  pod的标签      in notin exists doesnotexist       支持

拓扑域:

k8s集群节点当中的一个组织结构,可以根据节点的物理关系或者逻辑关系进行划分,可以用来表示节点之间的空间关系,网络关系或者其他类型的关系

标签,主机标签

Pod

注意点:

Pod的亲和性和策略,在配置时,必须加上拓扑域的关键字topologykey,指向节点标签

Pod亲和性的策略分为硬策略和软策略

Pod亲和性的notin可以替代反亲和性

Pod亲和性主要是为了把相关联的pod部署在同一节点

你在进行部署的时候怎么考虑node节点:

污点和容忍可以配合node节点一块使用

演示:

演示:

解析:

添加标签

另外一种方式:

硬策略:

软策略写法:

反亲和性:

软策略:

硬策略:

污点

是node的调度机制,不是pod

被设为污点的节点,不会部署pod

污点和亲和性相反,亲和性是尽量选择和一定选择

污点的节点一定不被选择吗?

Taint三种:

  1. NoSchedule:k8s不会把pod调度到这个节点上
  2. preferNoSchedule:如果污点类型是他,只是尽量避免把pod部署在该节点上,而不是一定
  3. NoExecute:如果污点类型是它的话,k8s将会把该节点pod驱逐出去,而且也不会调度到这个节点,基于控制器创建的pod,虽然被驱逐,会在其他节点部署,自主pod会被直接杀死

注意点:节点服务器需要维护时,服务器关机,节点上的pod将会失效,在工作中我们主要部署pod的方式控制控制器部署,deployment最多的,一旦节点设置被驱逐,控制器创建的pod会在其他节点继续部署

所有的pod都会被驱逐,更命名空间无关,所有的一切都会被驱逐,不论你的创建方式是什么,都会被驱逐,系统集群组件不会被驱逐

查看污点命令:

kubectl describe nodes node01 | grep -i taints

清缓存命令

echo 1 > /proc/sys/vm/drop_caches

污点演示三种情况:

第一种:

设置污点

删除污点

第二种:

尽量不调度

第三种:

如果污点类型是它的话,k8s将会把该节点pod驱逐出去,而且也不会调度到这个节点

容忍:

即使集群节点上设置了污点,有了容忍机制,依然可以在设置为污点的节点上部署pod

特殊情况,NoExecute依然可以部署pod,但是是有生命周期,时间一到,pod被销毁然后重新拉起。生命周期结束之后,会驱逐一部分pod到其他节点上,有点节点还是会保留在污点节点上。

该节点维护完毕,测试一下节点的工作是否正常

删除所有污点:

设置污点:

kubectl taint node master01 key=1:NoSchedule

配置容忍:

设置为驱逐类型

kubectl describe nodes node01 | grep -i taints

kubectl taint node master01 key=1:NoExecute

kubectl taint node node02 key=1:NoSchedule-

设置容忍时间

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: nginx2

  name: nginx2

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx2

  template:

    metadata:

      labels:

        app: nginx2

    spec:

      containers:

      - image: nginx:1.22

        name: nginx2

      tolerations:

      - key: key

        operator: Equal

        value: "1"

        effect: NoExecute

        tolerationSeconds: 36

36秒之后,被驱逐之后,也会出现

演示污点容忍机制

kubectl describe nodes node01 | grep -i taints

kubectl taint node node02 key=1:NoExecute-

kubectl taint node node01 key=1:NoSchedule

第二种情况

解析:

指定key的值,指标节点的标签,但是不指定污点的类型,那么所有节点上只要包含了这个指定的标签,可以容忍所有的污点

没有key,不匹配节点标签,容忍所有污点,但是类型是指定的类型

总结:

Node的亲和性

Pod的亲和性和反亲和性

污点和容忍

总结起来就是如何选择节点部署pod,选择一个期望的节点部署pod

举例:

我有多个master节点:

Kubectl taint node master节点名称

尽量不往master节点上部署pod,但是不是一定的,防止资源浪费,自定义一个标签

业务维护:

Node02需要维护两个小时,但是这个节点上还有业务pod在运行

就需要把这个节点的污点设置为驱逐

我们部署pod,一般都是使用deployment部署的pod,会在其他节点重新部署,并不是被杀死,自主试的pod会被杀死

一旦节点恢复,一定要把污点去除

Cordon和drain

Cordon:可以直接把节点标记为不可用状态

Drain:排水,把该节点下的pod全部转移到其他的node节点上云霄

一旦执行了drain,被执行的节点就会变成不可调度状态

会驱逐该节点上的所有pod

清空污点

kubectl taint node node02 key=1:NoExecute-

kubectl describe nodes master01 | grep -i taints

演示Drain

解析:

kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force

Drain:排水,标记node节点为不可调度,然后驱逐pod

--ignore-daemonsets:忽视daemonset部署的pod,daemonset部署的pod还在节点

--delete-local-data:有本地挂载卷的pod会被强制杀死

--force:强制释放,不是控制器管理的pod

如何改回来

重点:

node亲和性

Pod亲和性

污点:NoExeccute(驱逐)

Cordon和drain

--ignore-daemonset daemonset部署的一般是重要后台运行的,系统pod,所以不动

总结:

Node亲和性

Pod亲和性

Pod反亲和性

污点:NoExecute

容忍

Cordon

Drain

如何部署pod时比较重要的集群调度机制,合理的配置pod的调度机制可以是资源最大化应用

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

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

相关文章

激活/注册navicat15

一、获取软件 链接:https://pan.baidu.com/s/1F_tiLuLvVFMEz8pDfIvDjw?pwdjjfj 提取码:jjfj 二、安装 安装的过程我就不放了,重点如下 安装完不要打开软件! 安装完不要打开软件! 安装完不要打开软件!…

【阅读笔记】Chain of LoRA

一、论文信息 1 论文标题 Chain of LoRA: Efficient Fine-tuning of Language Models via Residual Learning 2 发表刊物 arXiv2023 3 作者团队 Department of Computer Science, Princeton University School of Computer Science and Engineering, Nanyang Technologic…

Unity获取系统语言

大家好,我是阿赵。   在使用Unity引擎做多语言的游戏时,很有可能需要根据用户的手机或者电脑的当前语言来设置游戏的默认语言。   Unity的API里面默认就有可以获取系统语言的方法: Application.systemLanguageUnity的API例子&#xff1a…

leetcode动态规划(零钱兑换II、组合总和 Ⅳ)

518.零钱兑换II 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount 5, coins [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 55 5221 52111 511111 示例 2: 输入: amount 3, coi…

R730服务器做了raid的硬盘,插在R720上面可以用吗?

环境 戴尔R720 戴尔R730 问题描述 R730服务器做了raid的硬盘,插在R720上面可以用吗? 解决方案 1.直接在 R730服务器做了raid的硬盘,卸下来在插在r720上面使用 ,读不到硬盘 2.前往R730服务器上面,去清除RAID配置的…

数字化转型之路为何道阻且长?

数字化转型是企业在数字化时代下的整体转型,是一个系统、长期、艰巨的过程。其本质不仅仅是技术的升级,更多的是涉及业务流程,用数据来重构和升级企业的商业模式和运营模式。但为什么很多企业的数字化转型难以成功呢? 战略缺位&am…

Spring配置类以及扫描过程源码解析

书接上文 文章目录 一、 拾遗1. 回顾2. 源码分析 二、 配置类扫描源码分析1. 源码分析2. BeanDefinition覆盖问题3. full配置类和lite配置类的区别 一、 拾遗 1. 回顾 前面我们分析了Spring框架器启动过程要做的事情,着重分析了ApplicationContext的refresh方法。…

只有金蝶用户,才懂金蝶BI方案的含金量

资深金蝶系统用户都看得明明白白,金蝶系统侧重于企业资源的计划和管理,而当前企业数字化运营决策不仅需要高效合理的流程管理,更需要一套完善的数据分析方案(金蝶BI方案),无缝对接金蝶系统,智能…

【Kafka-3.x-教程】-【五】Kafka-监控-Eagle

【Kafka-3.x-教程】专栏: 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

软件测试|Python如何将列表从大到小排序

简介 在编程中,对列表进行排序是一个常见的操作,有时候我们需要将列表按照从大到小的顺序进行排列。Python 提供了多种方法来实现这一目标。在本文中,我们将深入探讨几种将列表从大到小排序的方法,帮助您根据不同情况选择最合适的…

OpenHarmony—开发环境搭建

背景 因为没有实体的开发硬件,且不想破坏原有的Linux环境,所以这里基于 Docker QEMU 搭建开发环境 宿主机Linux系统命令行方式DockerQEMU 6.2 Docker环境准备 安装Docker 在Ubuntu中,可以使用下面的命令来安装Docker: sudo …

HarmonyOS自定义组件生命周期函数介绍

aboutToAppear 在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。 aboutToDisappear 在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变…

SpringBoot怎么写一个自定义的starter,Gradle依赖引入starter的Jar包

1.新建一个Spring的项目myasset-spring-boot-starter 项目结构如下: 注意:不需要Application启动类 和 application.yml/application.properties文件 2. resources下添加spring.factories文件 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigu…

基于知识图谱的健康知识问答系统

基于知识图谱的健康知识问答系统 引言数据集与技术选型数据集技术选型 系统功能与实现数据导入与图数据库构建问答任务设计与实现1. 实体提取2. 用户意图识别 前端聊天界面与问答系统 结语 引言 随着互联网的发展,人们对健康知识的需求逐渐增加。为了更方便地获取健…

pytorch12:GPU加速模型训练

目录 1、CPU与GPU2、数据迁移至GPU2.1 to函数使用方法 3、torch.cuda常用方法4、多GPU并行运算4.1 torch.nn.DataParallel4.2 torch.distributed加速并行训练 5、gpu总结 1、CPU与GPU CPU(Central Processing Unit, 中央处理器):主要包括控制…

【AIGC】一组精美动物AI智能画法秘诀

如何使用AI绘画,从以下角度,依据表格内容梳理,表格如下: 外貌特征物种姿势特征描述场景风格技术描述小巧可爱幼小浣熊倚在桌子上具有人形特征中世纪酒馆电影风格照明8k分辨率细节精致毛茸茸手持咖啡杯Jean-Baptiste Monge的风格蓝…

【AIGC-文本/图片生成视频系列-8】Align your Latents: 基于潜在扩散模型的高分辨率视频合成

目录 一. 项目概述与贡献 二. 方法详解 三. 应用总览 四. 个性化视频生成 五. 实时卷积合成 六. 更多结果 七. 论文 八. 个人思考 AI生成高分辨率视频一直是一个挑战。 今天讲解一篇潜在扩散模型(LDM)用于高分辨率、时间一致且多样化的视频生成…

模拟数字转换器

本节主要介绍以下内容: ADC简介 ADC功能框图详解 参考资料:《零死角玩转STM32》“ADC—电压采集”章节 一、ADC简介 ADC :Analog to Digital,模拟数字转换器 三个独立的ADC 1 / 2 / 3分辨率为12位每个ADC具有18个通道,其中…

自旋锁和互斥锁的区别

自旋锁和互斥锁的区别_自旋锁和互斥锁有什么区别?-CSDN博客

网工内推 | 高级网工,H3C认证优先,朝九晚六,周末双休

01 万德 招聘岗位:高级网络工程师 职责描述: 1、项目交付:项目管理和交付,包括项目前期的规划、实施以及后期的运维支持、项目验收等。 2、技术支持:为客户及合作伙伴提供网上问题远程和现场支持;对公司内…