K8S亲和性,反亲和性,及污点

这篇具有很好参考价值的文章主要介绍了K8S亲和性,反亲和性,及污点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

nodeName:硬匹配,不走调度策略

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

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

node节点的亲和性:

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

软策略:尽量满足你的要求,而不是一定满足

拓扑域:k8s集群节点当中的一个组织结构,可以根据节点的物理关系或者逻辑关系进行

可以用来表示节点之间的空间关系,网络关系或者其他类型的关系

标签。主机标签

pod

node01 node02 node03

app1 app2 app3

pod的亲和性和反亲和性

调度策略

匹配标签

操作符

拓扑域

node的亲和性

主机标签

In Notin exists DoesNotExist Gt Lt

不支持

pod的亲和性

pod的标签

In Notin exists DoesNotExit

支持

pod的反亲和性

pod的标签

In Notin exists DoesNotExit

支持

注意点:

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

2、pod亲和性的策略也分为硬策略和软策略。

3、pod亲和性的notIn可以替代反亲和性

4、pod亲和性只是为了把相关联的pod部署在同一节点。lnmp

污点和容忍可以配合node的亲和性一起使用

污点:是node的调度机制 。不是pod

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

污点和亲和性相反,亲和性是尽量或者一定选择,污点则是一定不被选择

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

taint三种:

1、Noschedule:K8S不会将pod调度到这个节点上

2、PreferNoschedule:如果污点类型是这个,那么只是尽量避免把pod布置在该节点上

3、NoExecute:如果污点类型是他,那么k8s将会把该节点上的pod全部驱逐出去,而且也不会调度

基于控制器创建的pod虽然被驱逐,但是会在其他节点重新部署

自主pod会被直接杀死

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

所有的pod都会驱逐,跟命名空间无关,所有的一切都会被驱逐

不论你的创建方式是什么,都会被驱逐

系统集群组件不会被驱逐

容忍:

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

特殊情况: NoExecute依然可以部署pod,但是有生命周期,时间一到,pod会被销毁,重新拉起

生命周期结束之后会驱逐一部分pod到其他节点,有的节点还是会保留在这个污点节点上

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

      tolerations:
      - operator: Exists 
      - effect: NoSchedule
没有key,不匹配节点标签,他会容忍所有污点,但是类型是所指定的类型    

node的亲和性

pod的亲和性和反亲和性

污点和容忍

如何选择node节点来部署pod

选择一个我期望的节点来部署pod

多个master节点:

kubectl taint node master节点名称 node-role.kubernetes.io/master=PreferNoSchedule

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

业务维护:

node02需要维护两个小时

但是这个节点还有业务pod在运行

就需要把这个节点的污点设置为:NoExwcute

部署pod一般都是使用deployment部署的Pod,会在其他节点重新生成,重新部署

自主式的Pod,会被删除,杀死

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

cordon和drain

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

drain:排水,把该节点下的pod全部转移到node节点上运行。

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

2、会驱逐该节点上的所有pod

kubectl drain node02 --ignore-daemonsets --delete-local-data --force 
drain:标记node节点为不可调度。开始驱逐pod
--ignore-daemonsets:忽视daemonsets部署的pod,daemonsets部署的pod还在节点不做处理
--delete-local-data:有本地挂载卷的pod会被强制杀死 
--force:强制释放不是控制器管理的pod

node亲和性

pod的亲和性,反亲和性

污点:

NoExecute

cordon 可以直接用命令行来设置

drain

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

重要的就是node亲和性,pod亲和性,反亲和性,污点:NoExcute

都有软策略和硬策略,针对亲和和反亲和性来的

如何部署pod是比较重要的集群资源的调度机制,合理的配置pod的调度机制可以使资源最大化利用文章来源地址https://www.toymoban.com/news/detail-794805.html

到了这里,关于K8S亲和性,反亲和性,及污点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s中pod的亲和性与反亲和性

    一、节点选择 nodeSelector 提供了一个非常简单的方式,将 Pod 限定到包含特定标签的节点上。亲和性与反亲和性(affinity / anti-affinity)特性则极大地扩展了限定的表达方式。主要的增强点在于: 表达方式更加有效(不仅仅是多个精确匹配表达式的“和”关系) 可以标识该规则

    2024年01月21日
    浏览(40)
  • k8s~节点的亲和性

    在Kubernetes中,你可以使用节点亲和性(Node Affinity)来控制Pod部署在哪些节点上。通过配置节点亲和性,你可以指定一些规则,以确保多个服务不会被调度到同一个节点上。 requiredDuringSchedulingIgnoredDuringExecution:通过 requiredDuringSchedulingIgnoredDuringExecution ,可以定义在调度期间必

    2024年02月13日
    浏览(43)
  • 22-k8s中pod的调度-亲和性affinity

            在k8s当中,“亲和性”分为三种,节点亲和性、pod亲和性、pod反亲和性; 亲和性分类 名称 解释说明 nodeAffinity 节点亲和性 通过【节点】标签匹配,用于控制pod调度到哪些node节点上,以及不能调度到哪些node节点上;(主角node节点) podAffinity pod亲和性 通过【节点+

    2024年02月20日
    浏览(50)
  • K8s之标签、Node选择器与亲和性详解

    1、标签是什么? 标签其实就是一对key/value,key的值必须唯一 标签可以在创建一个对象的时候直接定义,也可以在后期随时修改,每一个对象可以拥有多个标签 标签可以用来划分特定的对象(比如版本,服务类型等) 创建标签后,方便我们对资源进行分组管理(通过标签查

    2024年02月07日
    浏览(38)
  • Kubernetes亲和性学习笔记

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是欣宸在学习Kubernetes调度器的过程中,对亲和性相关知识点的整理和总结,这是一篇笔记性质的博客 调度过程如下: 预选(Predicates) 优选(Priorities) 选定(Select) 这里将亲和性先分类,便

    2024年02月17日
    浏览(37)
  • K8s的亲和、反亲和、污点、容忍

    亲和性的原理其实很简单,主要利用label标签结合nodeSelector选择器来实现 从pod出发,可以分成亲和性和反亲和性,分别对应podAffinity和podAntiAffinity。 从node出发,也可以分成亲和性和反亲和性,分别对应nodeAffinity和nodeAntiAffinity。 从操作指令来讲,可以有ln、Notln、Exists、DoesN

    2024年04月27日
    浏览(35)
  • 【k8s】pod调度——亲和,反亲和,污点,容忍

    官方网址:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution:软策略  p开头 ●requiredDuringSchedulingIgnoredDuringExecution:硬策略  r开头 pod.spec.affinity.podAffinity/podAntiAffinity ●preferredDuringSchedulingIgnoredDuringExecution:软策

    2024年02月05日
    浏览(42)
  • pod的亲和性和反亲和性

    调度策略:       匹配标签        操作符              拓扑域   调度目标 node的亲和性    主机标签  In Notin exists doesexists Gt Lt  不支持   指定主机 pod的亲和性     pod的标签 In Notin exists doesexists      支持   pod和指定标签的pod部署在同一拓扑域 pod的反亲

    2024年01月23日
    浏览(44)
  • k8s打污点、取消污点、驱动pod

    在 Kubernetes 中,可以使用 kubectl taint 命令来打污点,它有以下语法: 其中, node-name 是节点的名称, key 和 value 是用于标识污点的键和值, effect 则指定了污点的影响。 例如,要在名为 node-1 的节点上打一个污点,使它不能被调度 NoSchedule ,可以使用以下命令: 这将在 node-

    2024年02月12日
    浏览(38)
  • k8s 污点和容忍

    在 Kubernetes 中,节点亲和性 NodeAffinity 是 Pod 上定义的一种属性,能够使 Pod 按我们的要求调度到某个节点上,而 Taints(污点) 则恰恰相反,它是 Node 上的一个属性,可以让 Pod 不能调度到带污点的节点上,甚至会对带污点节点上已有的 Pod 进行驱逐。当然,对应的 Kubernetes 可以

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包