首页 > 其他分享 >在K8S中,说下Pod污点与容忍的理解?

在K8S中,说下Pod污点与容忍的理解?

时间:2024-08-09 10:16:08浏览次数:13  
标签:调度 key 容忍度 污点 Pod K8S 节点

在Kubernetes(K8S)中,Pod污点(Taints)和容忍度(Tolerations)是两种用于控制Pod调度到特定节点的机制。它们相互配合,允许集群管理员更精细地控制Pod的部署位置,以确保资源的高效利用和服务的稳定运行。

一、Pod污点(Taints)

定义与目的

  • 污点是一种应用于节点的属性,用于排斥那些不能容忍这些污点的Pod。换句话说,污点是一种主动拒绝Pod调度的机制。
  • 污点的目的是确保只有符合特定条件(即具有相应容忍度)的Pod才能被调度到带有污点的节点上,从而避免不合适的Pod占用特定资源。

组成部分

  • 污点由三个部分组成:key(键)、value(值)和effect(效果)。

    • key:污点的名称,用于唯一标识污点。

    • value:污点的值,与key一起定义污点的具体属性。在某些情况下,value可以是空字符串。

    • effect

      :污点的效果,决定了Pod与污点之间的交互方式。主要有三种效果:

      • NoSchedule:表示Pod不会被调度到带有该污点的节点上,但已经在该节点上运行的Pod不会受到影响。
      • PreferNoSchedule:表示Kubernetes调度器会尽量避免将Pod调度到带有该污点的节点上,但如果没有其他更合适的节点,Pod仍然可能被调度到该节点。
      • NoExecute:表示Pod不仅不会被调度到带有该污点的节点上,而且已经在该节点上运行的、没有相应容忍度的Pod会被驱逐。

应用场景

  • 当某些节点具有特殊属性(如高性能CPU、大内存等)时,可以通过给这些节点添加污点来确保只有特定的Pod才能被调度到这些节点上。
  • 当节点出现故障或资源不足时,Kubernetes会自动给这些节点添加污点(如node.kubernetes.io/not-readynode.kubernetes.io/memory-pressure等),以防止新的Pod被调度到这些节点上。
二、容忍度(Tolerations)

定义与目的

  • 容忍度是Pod的一种属性,用于指定Pod能够容忍哪些节点的污点。只有当Pod的容忍度与节点的污点相匹配时,Pod才能被调度到该节点上。
  • 容忍度的目的是允许Pod在具有特定污点的节点上运行,从而实现对节点资源的灵活利用。

组成部分

  • 容忍度由key、operator、value、effect和tolerationSeconds等字段组成。
    • keyvalueeffect:与污点的key、value、effect相对应,用于匹配污点。
    • operator:用于定义Pod容忍度与节点污点之间的匹配关系。主要有两种操作符:Equal(表示key和value都必须相等)和Exists(表示只需要key存在即可,不关心value)。
    • tolerationSeconds:当effect为NoExecute时,该字段表示Pod在节点上被驱逐前的宽限时间(以秒为单位)。如果设置了该字段,Pod在被驱逐前可以在节点上继续运行指定的时间。

应用场景

  • 当需要让Pod在具有特定污点的节点上运行时,可以在Pod的YAML配置文件中添加相应的容忍度字段。
  • 通过设置容忍度,可以实现Pod对节点故障的容忍,例如当节点出现短暂的网络问题时,Pod可以继续在该节点上运行而不是被立即驱逐。
三、总结

综上所述,Pod污点与容忍度是Kubernetes中用于控制Pod调度到特定节点的两种重要机制。它们相互配合,允许集群管理员根据节点的特性和Pod的需求来灵活配置Pod的部署位置。通过合理使用污点和容忍度,可以确保集群资源的高效利用和服务的稳定运行。

标签:调度,key,容忍度,污点,Pod,K8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18350298

相关文章

  • 【Kubernetes】pod状态与故障排查
    一、Pod启动阶段(相位phase)pod创建完之后,一直到持久运行起来,中间有很多步骤,也就有很多出错的可能,因此会有很多不同的状态。Pod的启动过程如下:0)controller-manager管理的控制器创建Pod资源1)scheduler调度器根据调度算法选择最适合的node节点调度Pod2)kubelet拉取镜像3)kubel......
  • 在K8S中,Service的类型有哪些?
    在Kubernetes(K8S)中,Service是一种抽象,它定义了一组逻辑上的Pods以及访问这些Pods的策略。Service解决了Pods的生命周期管理和通信问题,提供了稳定的网络端点和负载均衡机制,确保应用程序的高可用性和可扩展性。Kubernetes支持多种类型的Service,每种类型适用于不同的访问场景。以下是K......
  • 在K8S中,PV的生命周期状态有哪些?
    在Kubernetes中,PersistentVolume(PV)的生命周期状态有以下几种:Available(可用):表示该PV已经准备好被Pod使用。它可能处于空闲状态,或者已经被绑定到一个PVC上。Bound(已绑定):表示该PV已经被一个PVC绑定,并且正在被某个Pod使用。此时,PV上的存储空间已被分配给相应的PVC。Released(......
  • 在K8S中,什么是PV和PVC?
    在Kubernetes(K8S)中,PV(PersistentVolume)和PVC(PersistentVolumeClaim)是两个核心概念,用于实现数据的持久化存储。它们之间的关系是一种动态匹配和绑定关系,用于实现Pod与存储资源的解耦。以下是对PV和PVC的详细解释:1.PV(PersistentVolume)定义:PV是Kubernetes集群中的一块网络存储,它独......
  • 在K8S中,是怎么实现数据持久化的?
    在K8S中,数据持久化主要通过PersistentVolumes(PV)、PersistentVolumeClaims(PVC)和StorageClass等组件实现。以下是K8S如何实现数据持久化的详细解释:PersistentVolumes(PV):PV是集群级别的资源,代表一段预先配置的存储空间,独立于Pod的生命周期存在。PV的存在确保了数据的持......
  • 在K8S中,DaemonSet类型的资源特性有哪些?
    在Kubernetes(K8S)中,DaemonSet是一种控制器资源对象,它具有一系列独特的资源特性,这些特性使得DaemonSet特别适用于在集群的每个节点上运行守护进程或服务。以下是DaemonSet类型资源特性的详细阐述:1.确保每个节点上运行Pod副本节点级部署:DaemonSet确保集群中的每个节点(或满足特定......
  • k8s集群访问外部域名不稳定
    pod网络模式为default时,可以访问外部域名,网络模式为clusterfirst时可以访问集群中域名,但是访问公司内网域名时时通时不通,有时不能完全解析。处理方法:在coredns的cm中,需要添加forward./etc/resolv.conf{max_concurrent1000policysequential......
  • 基于K8S部署安装Jenkins
    基于K8S部署安装Jenkins1.JenkinsKubernetes清单文件2.KubernetesJenkins部署1:为Jenkins创建Namespace。最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2:创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1.kubectl创建服务帐户。3......
  • 【Kubernetes】k8s集群资源调度
    目录一.k8s的List-Watch机制二.scheduler的调度过程三.指定节点调度Pod1.通过nodeName调度Pod2.通过节点标签选择器调度Pod3.通过亲和性调度Pod3.1.节点亲和性硬策略软策略当软、硬策略同时存在3.2.Pod亲和性Pod亲和性(podAffinity)Pod反亲和性(podAntiAffinity)......
  • 临时存储超限导致的Pod集体驱逐故障排查
    背景        在某天的下午,我们突然收到告警,埋点服务的接口报大量502,持续了大约2分钟,然后就自动恢复了,于是便开始排查问题所在。排查过程        在上面的故障现象中,我们首先怀疑是微服务出现了问题,因此进行了以下排查:    1.登录KubeSphere控制台后......