kubernetes第七天

embedded/2025/1/11 19:26:15/

1.影响pod调度的因素

nodeName   节点名

resources     资源限制

hostNetwork   宿主机网络

污点

污点容忍

Pod亲和性

Pod反亲和性

节点亲和性

2.污点

通常是作用于worker节点上,其可以影响pod的调度

语法:key[=value]:effect

effect:[ɪˈfekt]

effect必须是NoSchedule、PreferNoSchedule或NoExecute。

NoSchedule: [noʊ,ˈskedʒuːl]

该节点不再接收新的Pod调度,但不会驱赶已经调度到该节点的Pod。

PreferNoSchedule: [prɪˈfɜːr,noʊ,ˈskedʒuː] 
该节点可以接受调度,但会尽可能将Pod调度到其他节点,换句话说,让该节点的调度优先级降低啦。

NoExecute:[ˈnoʊ,eksɪkjuːt] 
该节点不再接收新的Pod调度,与此同时,会立刻驱逐已经调度到该节点的Pod。

1.查看节点污点

kubectl describe nodes

2.创建10个pod,发现pod调度在232和233节点上

3.给k8s232打上污点

kubectl taint node k8s232 wudianmingzi=wudian:NoExecute


4.查看污点kubectl describe nodes|grep Taints,发现此时已经有污点

5.查看pod信息,发现此时所有pod都调度到k8s233上

6.移除污点:kubectl taint node k8s232 wudianmingzi-

7.移除污点,从新创建pod之后,pod能重新调度到pod上

命令总结:

查看污点:
kubectl describe nodes|grep Taints
制造污点帮助信息
kubectl taint --help
制造污点
kubectl taint node 节点名 key=value:NoExecute
value可省略
移除污点
kubectl taint node k8s232 key-NoExecute  移除现在节点所有的pod
NoSchedule 不移除,但是不会有新的pod
PreferNoSchedule  优先级降低

3.污点容忍

pod.spec.tolerations

spec:# 配置Pod的污点容忍tolerations:# 指定污点的key# 若不指定key,则operator的值必须为Exists,表示匹配所有的key- key: qq# 指定污点的valuevalue: ww# 指定污点的effect,有效值为: NoSchedule, PreferNoSchedule,NoExecute# 若不指定则匹配所有的影响度。effect: NoExecute# 表示key和value的关系,有效值为Exists, Equal。#    Exists:#      表示存在指定的key即可,若配置,则要求value字段为空。#    Equal:#      默认值,表示key=value。operator: Equal- key: weboperator: Exists- key: node-role.kubernetes.io/masteroperator: Exists# 如果不指定key,value,effect,仅配置"operator: Exists"表示无视任何污点!#- operator: Exists

例1:匹配所有key为web,value值为空,effect为NoExecute的污点

tolerations:
- key: "web"operator: "Exists"  # 当value为空时,使用Exists表示key存在即可effect: "NoExecute"

例2:匹配所有key为test,值为version1,effect为所有的污点

tolerations:
- key: "test"operator: "Equal"  # 当指定了具体的value时,使用Equal进行匹配value: "version1"effect: "*"  # "*"表示匹配所有可能的effect值

例3:忽视所有污点

tolerations:
- operator: "Exists"  # 使用Exists且不指定key和effect,表示容忍所有污点

补充:实现pod调度到特点两个pod上

给节点打标签:

kubectl label nodes k8s231 key=value

选择调度的节点(所有节点忽视所有污点,如上例三配置)

spec:nodeSelector:key=value...
注意:节点必须包含所有这里的标签,才会被选上

所有节点删除标签

kubectl label nodes --all  key-

但是这样子当两个节点,比如节点a,key=value1,key2=value2,此时无法满足,所有引入了亲和性。

4.节点亲和性

查看相关信息

三种类型:节点亲和性,pod亲和性,pod反亲和性

节点亲和性:

affinity:# 定义节点的亲和性nodeAffinity:# 定义硬限制requiredDuringSchedulingIgnoredDuringExecution:# 定义节点的匹配条件nodeSelectorTerms:# 基于节点的标签进行匹配- matchExpressions:# 指定标签的key- key: hobby# 指定标签的valuevalues:- eat- sleep# 指定key和value之间的对应关系,有效值如下:#   In:#     key的值必须在vlaues内。要求values不能为空。#   NotIn:#     和In相反。要求values不能为空。#   Exists:#     只要存在指定key即可,vlaues的值必须为空。#   DoesNotExist:#     只要不存在指定key即可,vlaues的值必须为空。#   Gt:#     表示大于的意思,values的值会被解释为整数。#   Lt:#     表示小于的意思,values的值会被解释为整数。operator: In


http://www.ppmy.cn/embedded/153100.html

相关文章

【STM32】利用SysTick定时器定时1s

1.SysTick简单介绍 SysTick定时器是一个24位的倒计数定时器,当计数到0时,将从RELOAD寄存器中自动重装载定时初值,开始新一轮计数。 SysTick定时器用于在每隔一定的时间产生一个中断,即使在系统睡眠模式下也能工作。 关于SysTic…

《机器学习》从入门到实战——决策树

目录 一、简介 二、基本结构 三、构建过程 四、API接口解析 1、决策树--分类 (1)、接口调用方法 (2)、参数解析 2、决策树--回归 (1)、接口调用方法 (2)、参数解析 五、代…

计算机网络之---数据传输与比特流

数据传输的概念 数据传输是指将数据从一个设备传输到另一个设备的过程。传输过程涉及将高层协议中的数据(如包、帧等)转化为比特流,在物理介质上传输。 比特流的概念 比特流是数据传输中最基本的单位,它是由0和1组成的连续比特…

Swift UI开发指南:修饰器特性(modifiers)

SwiftUI开发指南:修饰器特性(Modifiers) 什么是修饰器?修饰器的特性示例:改变文本颜色代码:效果: 常用修饰器列表修饰器的最佳实践总结 在SwiftUI中,修饰器(modifiers&am…

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

【大模型入门指南 07】量化技术浅析

【大模型入门指南】系列文章: 【大模型入门指南 01】深度学习入门【大模型入门指南 02】LLM大模型基础知识【大模型入门指南 03】提示词工程【大模型入门指南 04】Transformer结构【大模型入门指南 05】LLM技术选型【大模型入门指南 06】LLM数据预处理【大模型入门…

Spring Boot项目中增加MQTT对接

在Spring Boot项目中增加MQTT对接,通常涉及以下几个步骤: 一、搭建MQTT服务器 首先,你需要搭建一个MQTT服务器(Broker)。这可以通过多种方式实现,例如使用Docker来部署EMQX或Mosquitto等MQTT Broker。 以…

javaEE初阶————多线程初阶(1)

多线程初阶———— 1,认识线程 1.1 概念 1)线程是什么 线程就是一个“执行流”,可以理解为程序执行的最小单位; 可以看成轻量级的进程; 2)为啥要有线程 “并发编程” 的需要,但是我们不…