当前位置: 首页 > article >正文

k8s之亲和性和反亲和性

一、亲和性和反亲和性

1.概述

        k8s的亲和性(Affinity)是一种用于控制 Pod 调度的机制,它允许你指定 Pod 如何与节点进行互动,以便将 Pod 调度到合适的节点上。

2.类型

  • 节点亲和性 nodeAffinity

        根据用户的设置,选择性的根据节点来部署pod。 

  • pod亲和性 podAffinity

        根据pod的标签和拓扑域来选择性部署pod到节点上。

  • pod反亲和性 podAntiAffinity

        Pod 反亲和性用于将新 Pod 安排到与具有特定标签的现有 Pod 不同的节点上,这有助于实现高可用性和故障隔离。

3.软策略和硬策略

  • 软策略

        preferredDuringSchedulingIgnoredDuringExecution 

        可以根据设置的偏好,尽量的满足设置需求,如果没有节点能够满足偏好设置,依然可以部署。

  • 硬策略

        requiredDuringSchedulingIgnoredDuringExecution

        必须把pod调度到满足偏好设置的节点,如果没有节点满足条件,pod会pending,不会部署到其他节点。

4.键值的运算关系

        根据相应的条件来匹配节点或者是pod的标签

  • In (在)

        选择的标签值要匹配到节点或者是pod。字符串匹配,也可以是数字。

  • NotIn (不在)

        选择的标签值不在节点或者是pod。字符串匹配,也可以是数字。

  • Gt (大于)

        只能比较数字。

  • Lt (小于)

        只能比较数字。

  • Exists (存在)

        只是用来判断标签的key,和value无关。

  • DoesNotExist (不存在)

        只是用来判断不存在标签的key,和value无关。

5.实例

节点亲和性

 kubectl label nodes node01 test1=a #给节点增加标签

pod亲和性

topologyKey 定义节点拓扑关系的字段

topologyKey:test1

test1的标签作为拓扑的关键词

该节点上必须同时满足app=nginx2和标签test1 

pod反亲和性

节点亲和性是非容忍性:如果是硬策略,必须满足条件才可以部署

pod的亲和以及反亲和(容忍性):虽然...但是满足了一定的条件,还是可以继续部署的(硬策略)

node01有app=nginx2,node02没有app=...,node01的标签是test1=a, node02的标签无

反亲和性的策略要求不能app=nginx1,node01满足了一个条件就可以创建pod,node02满足了两个条件既没有app=nginx1又没有标签所以也可以创建pod,反之如果两个条件都不满足,则pod进入pending状态 

二、 污点

1.概述

        污点和节点的亲和性正好相反,节点亲和性是为吸引特定的pod,但是污点是为了排斥pod。 

2.污点类型

  • NoSchedule  

        节点上有此污点的标签,K8s不会把pod调度到这和,但是已部署的pod不受影响。

        一般是设置在主节点上,防止pod部署到主节点(主节点的资源比较小,就是用来控制集群的)。

  • PreferNoSchedule

        尽量避免把pod部署到该节点上,但是也可以部署。

        多主节点的情况下,主节点可以满足部署的情况,为了平衡其他的节点的负载,把matser作为部署的节点,但是优先级相对较低。

  • NoExecute

         不仅会不部署到该节点,而且还会驱逐该节点上已有的pod。

        节点出现故障,节点需要维护,但为了保证业务不中断,于是选择这种方法把pod迁移到其他的节点,保证业务正常运行。

3.命令行

kubectl describe node master01 | grep -i taints    #查看master01上面的污点

kubectl taint node node01 test1=a:PreferNoSchedule   #新增node01上面的污点

kubectl taint node node01 test1=a:PreferNoSchedule-  #删除污点

设置节点的污点只能在命令行完成,不能在yaml执行。

 

 

 


http://www.kler.cn/a/544137.html

相关文章:

  • 排序算法详解、应用对比与C语言实现
  • 【Linux】Ubuntu Linux 系统 ——PHP开发环境
  • 金融风控项目-1
  • 6.深度学习在推荐系统中的应用
  • InspurServer服务器监控指标详解
  • Vim操作笔记
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第一节】
  • UNITY计算fps时应忽略掉time.timescale的影响
  • [Linux][问题处理]修改密码报You must wait longer to change your password
  • 人生的转折点反而迷失了方向
  • 游戏内常见加密
  • Unity 卡死排查方法(游戏死循环、打包卡死)
  • python+unity落地方案实现AI 换脸融合
  • Spring 项目接入 DeepSeek,分享两种超简单的方式!
  • HTML之JavaScript函数声明
  • 【AI学习】DeepSeek-R1-Distill的意义和影响
  • MYSQL 索引 index
  • 求助帖: stm32通过 flash实现boot和app之间的api共享
  • 稀疏计算的软硬件协同:FPGA有力推动硬件发展
  • 一文详解机器视觉环形光源,视觉检测中的环形光源应用
  • 2025年智慧化工园区整体解决方案-下载:安全生产管控,全生命周期数字管理架构
  • Science Advances 基于折纸工艺利用可降解纤维素薄膜开发了一种可持续性闭环控制机器人系统
  • 机器学习 - 理解偏差-方差分解
  • QT 异步编程之多线程
  • 3.9 学习UVM中的uvm_env类分为几步?
  • 代码随想录算法训练营第五十五天-42. 接雨水