一文掌握k8s的污点和容忍度

简介: 节点污点用于排斥不匹配的Pod,避免其调度到特定节点;容忍度则允许Pod容忍节点污点,实现灵活调度。通过污点与容忍机制,可实现节点资源隔离、专用节点管理等场景,结合xkube平台可便捷配置。

节点污点

什么是污点?

污点(Taint)是施加在节点上的属性,用于排斥不匹配的Pod。从而避免Pod调度到该节点上。功能上和pod的亲和性相反

什么是污点容忍度?

  • 容忍度(Toleration)是定义在Pod上的属性,用于声明对污点的容忍能力。容忍度允许调度器调度pod 到有对应污点的节点上,容忍度允许调度但并不保证调度。也就是说,允许pod调度到持有Taint的node上,希望pod能够分配到带污点的节点,增加了污点容忍,那么就会认可这个污点,就「有可能」分配到带污点的节点。

污点参数设置说明

参数名 描述
污点键 节点的污点键。
操作符 Equal:设置此操作符表示准确匹配指定污点键(必填)和污点值的节点。如果不填写污点值,则表示可以与所有污点键相同的污点匹配。
Exists:设置此操作符表示匹配存在指定污点键的节点,此时容忍度不能指定污点值。若不填写污点键则可以容忍全部污点。
污点值 操作符为Equal时需要填写污点值。
污点策略 全部:表示匹配所有污点效果。
NoSchedule:表示匹配污点效果为NoSchedule的污点。
PreferNoSchedule:表示匹配污点效果为
PreferNoSchedule的污点。
NoExecute:表示匹配污点效果为NoExecute的污点。
容忍时间窗 即tolerationSeconds参数,当污点策略为NoExecute时支持配置。在容忍时间窗内,Pod还会在拥有污点的节点上运行,超出时间后会被驱逐。

污点示例:

spec:
  template:
spec:
      tolerations:
        - key: istio
          operator: Equal
          value: ingressgateway
          effect: NoExecute

设置容忍策略

  • 容忍度(Toleration) 允许调度器将Pod调度至带有对应污点的节点上。 容忍度需要和节点污点相互配合,每个节点上都可以拥有一个或多个污点,对于未设置容忍度的Pod,调度器会根据节点上的污点效果进行选择性调度,可以用来避免Pod被分配到不合适的节点上。更多关于容忍度的使用示例请参见污点和容忍度。
    污点可以指定多种效果,对应的容忍策略对Pod运行影响如下:
污点效果 Pod未设置对污点的容忍策略 Pod已设置对污点的容忍策略
NoExecute 已运行在该节点的Pod会立刻被驱逐。未运行的Pod不会被调度到该节点。 未指定容忍时间窗(tolerationSeconds):Pod可以在这个节点上一直运行。已指定容忍时间窗(tolerationSeconds):在容忍时间窗内,Pod还会在拥有污点的节点上运行,超出时间后会被驱逐。
PreferNoSchedule 已运行在该节点的Pod不会被驱逐。未运行的Pod尽量不调度到该节点。 Pod可以在这个节点上一直运行。
NoSchedule 已运行在该节点的Pod不会被驱逐。未运行的Pod不会被调度到该节点。 Pod可以在这个节点上一直运行。

容忍度样例

tolerations:
- key: "gpu"
  operator: "Equal"
  value: "true"
  effect: "NoSchedule"

默认容忍策略说明

Kubernetes会自动给Pod添加针对node.kubernetes.io/not-readynode.kubernetes.io/unreachable污点的容忍度,且配置容忍时间窗(tolerationSeconds)为300s。这些默认容忍度策略表示当Pod运行的节点被打上这两个污点之一时,可以在5分钟内依旧保持运行在该节点上。

说明:

DaemonSet中的Pod被创建时,针对以上污点自动添加的容忍度将不会指定容忍时间窗,即表示节点存在上述污点时,DaemonSet中的Pod一直不会被驱逐。

默认策略配置示例:

tolerations:
  - key: node.kubernetes.io/not-ready
    operator: Exists
    effect: NoExecute
    tolerationSeconds: 300
  - key: node.kubernetes.io/unreachable
    operator: Exists
    effect: NoExecute
    tolerationSeconds: 300

通过xkube进行设置

通过多集群k8s管理平台xkube的功能可以轻松的设置节点污点和pod容忍度,xkube安装部署参考:https://blog.csdn.net/weixin_56364253/article/details/156390146

功能参考下图:
wudian.png
rongren.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
5月前
|
Kubernetes 监控 数据可视化
一文掌握k8s的升级更新策略
K8S中通过`spec.strategy`设置Pod替换策略,支持Recreate(重建)和RollingUpdate(滚动升级)。默认为滚动升级,可设`maxUnavailable`和`maxSurge`控制升级过程,实现无中断更新。可通过xkube平台可视化配置。
489 1
|
5月前
|
缓存 Kubernetes 网络协议
一文掌握k8s的健康检查探针
容器健康检查探针用于检测应用运行状态,确保服务高可用。Kubernetes提供存活、就绪、启动三种探针,通过HTTP、TCP或命令方式定期检查,配合各参数阈值实现自动恢复与流量控制,避免异常实例影响业务。
655 0
|
6月前
|
Kubernetes 容器 Perl
kubernetes-1.34.2 二级制快速安装部署
kubenetes-1.34.2 二进制安装包,其他版本同样可以使用,包含etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,containerd,coredns,metric-server的证书、配置文件,启动脚本。其中还包括证书的生成脚本、kubeconfig的生成脚本,同时包含了二进制可执行文件,本安装包已经包含了二进制文件,制作好的证书和安装包,可以直接拷贝到安装目录进行安装,也可以重新执行:make_install_package.sh 重新生成。该项目是为了配合k8s-1.34.2二进制的安装。
1156 1
|
4月前
|
Kubernetes 应用服务中间件 nginx
最全的kubectl命令用法
本文系统讲解kubectl命令行工具:详解所有子命令(创建、查询、部署、调试等)、API资源列表、自动补全配置,并通过大量实操示例(如创建/查看/编辑/删除资源、扩缩容、回滚、标签管理等)助你快速掌握Kubernetes集群管理核心技能。(239字)
896 143
|
4月前
|
应用服务中间件 Shell nginx
最全的docker命令参数解释及命令用法
本文系统详解Docker核心命令,涵盖容器(run/exec/ps/start/stop等)、镜像(pull/build/push/rmi等)、网络、数据卷及全局参数,并配实操示例与可直接执行的命令,助初学者快速掌握Docker日常运维与开发应用。
1811 129
|
5月前
|
Kubernetes Go API
xkube v4.0发布,完全开发源代码并新增k8s网关、亲和性很多k8s实用功能
xkubе v4.0 是开源K8s可视化管理平台(Gitee:https://gitee.com/eeenet/xkube),全面开放Go后端源码。新增Gateway API全系支持(Gateway/HTTPRoute/GRPCRoute等)、增强Deployment/STS/Job配置能力、Pod资源Top监控、节点资源统计及审计日志,界面与依赖全面升级。
613 228
|
4月前
|
运维 Kubernetes 应用服务中间件
一文讲解kubernetes的gateway Api的功能、架构、部署、管理及使用
Gateway API是Kubernetes官方推出的下一代L4/L7网络网关标准,面向角色(基础设施商、运维、开发)、可移植、表达力强且高度可扩展。它通过GatewayClass、Gateway、HTTPRoute等资源实现权限分离与策略即代码,替代Ingress短板,已获Istio、Envoy、ASM等主流支持。
1513 119
|
4月前
|
人工智能 JavaScript Linux
OpenClaw 原版和汉化版windows 和Linux 下的部署实践
OpenClaw(原Clawdbot/Moltbot)是由彼得·斯坦伯格开发的开源个人AI代理,以“龙虾”为标识,口号“The AI that actually does things”。支持软件操作与长期记忆,2026年获Karpathy公开提及。提供中英文版本,基于TypeScript,可本地部署。
8057 132
|
5月前
|
Kubernetes Cloud Native 安全
一文掌握k8s容器的生命周期
容器生命周期钩子是Kubernetes核心机制,支持在容器启动后(postStart)和终止前(preStop)执行自定义逻辑,实现服务注册、优雅停机等操作。结合启动命令,可精细控制应用生命周期,提升云原生应用稳定性与可靠性。
644 4
一文掌握k8s容器的生命周期
|
5月前
|
Kubernetes 前端开发 调度
一文掌握pod亲和性及调度策略
Kubernetes中,Pod是调度的基本单位。通过nodeName、nodeSelector、亲和性等策略,可精细控制Pod部署位置,实现资源优化、低延迟通信与故障隔离。支持硬约束与软约束,结合标签选择器灵活配置。
562 4

热门文章

最新文章