Kubernetes污点(taints)与容忍(tolerations)

一、概述

Taint(污点)和 Toleration(容忍)可以作用于 node 和 pod 上,其目的是优化 pod 在集群间的调度,这跟节点亲和性类似,只不过它们作用的方式相反,具有 taint 的 node 和 pod 是互斥关系,而具有节点亲和性关系的 node 和 pod 是相吸的。另外还有可以给 node 节点设置 label,通过给 pod 设置 nodeSelector 将 pod 调度到具有匹配标签的节点上。

Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。如果将 toleration 应用于 pod 上,则表示这些 pod 可以(但不要求)被调度到具有相应 taint 的节点上。

二、node节点设置污点和容忍

1、设置taint

NoSchedule: 一定不能被调度
PreferNoSchedule: 尽量不要调度
NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod

kubectl taint nodes node1 key1=value1:NoSchedule
kubectl taint nodes node1 key1=value1:NoExecute
kubectl taint nodes node1 key2=value2:NoSchedule

2、查看taint

kubectl describe node node1

3、删除taint:

kubectl taint node node1 key1:NoSchedule-  # 这里的key可以不用指定value
kubectl taint node node1 key1:NoExecute-
kubectl taint node node1 key1-             # 删除指定key所有的effect
kubectl taint node node1 key2:NoSchedule-

三、Pod设置污点和容忍

详细使用方法请参考

原文地址:https://blog.51cto.com/10880347/2434628

时间: 2024-10-09 10:41:11

Kubernetes污点(taints)与容忍(tolerations)的相关文章

kubernetes调度之污点(taint)和容忍(toleration)

系列目录 节点亲和性(affinity),是节点的一种属性,让符合条件的pod亲附于它(倾向于或者硬性要求).污点是一种相反的行为,它会使pod抗拒此节点(即pod调度的时候不被调度到此节点) 污点和容易结合在一起以确保pod不会被调度到不适合的节点上.当一个或者多个污点添加到某个节点上,则意味着此节点不会接受任何不容忍这些污点的pod.Tolerations作用于pod上,允许(但不是必须)pod被调度到有符合的污点(taint)的节点上 概念 可以使用kubectl taint为一个节点(n

7.k8s.调度器scheduler 亲和性、污点

#k8s. 调度器scheduler 亲和性.污点 默认调度过程:预选 Predicates (过滤节点) --> 优选 Priorities(优先级排序) --> 优先级最高节点 实际使用,根据需求控制Pod调度,需要用到如下: 指定节点.nodeAffinity(节点亲和性).podAffinity(pod 亲和性). podAntiAffinity(pod 反亲和性) #指定调度节点 # Pod.spec.nodeName 强制匹配,直接指定Node 节点,跳过 Scheduler 调度

CentOS上安装Kubernetes集群(四)使用Traefi暴露Kubernetes服务

k8s的集群大多数情况需要对外服务,而服务暴露的方式有很多,这里选取traefik来讲解,其它就暂时不详细介绍,包括Istio,代后续更新后再补充上来.一句话,来不及解释,赶紧上车. Traefkik简介 Traefik是开源边缘路由器,类似 nginx.apache 那样的反向代理服务器.网关,代表系统接收请求,并找出负责处理这些请求的组件.Traefik自动发现适合您服务的配置,同时热更新支持多种负载均衡算法断路器,重试提供监控.管理 UI 界面用 go 语言开发,天然的拥抱 k8s Tra

kubernetes Pod 资源调度

1 概述 1 总述 API server 接受客户端提交的POD对象创建请求操作过程中,需要kube-scheduler 从当前集群中选择一个可用的最佳节点接受并运行,通常是默认调度器复制此类任务,对于每个待创建的POD来说,需要经过三个步骤.1 预选(predicate)节点预选: 基于一系列预选规则(podfitsresources 和 matchnode-selector等)对每个节点进行检查,将那些不符合条件的节点过滤.如果需要某些特殊服务,则需要通过组合节点标签,以及POD标签或标签选

kubernetes yaml 文件

1.基本用法 apiVersion: v1 kind: Pod #创建的资源类型可以是,Deployment.Job.Ingress.Service等 metadata: #包含Pod的一些meta信息,比如名称.namespace.标签等信息 name: ng1 #Podname labels: #标签 app: web spec: containers: - name: ng1 #容器name image: hub.c.163.com/library/nginx #镜像拉取地址 imageP

kubernetes 的调度

kubernetes 的调度 标签(空格分隔): kubernetes系列 一: kubernetes的调度 二: kubernetes的节点的亲和性 三: kubernetes的污点与容忍 四: kubernetes的固定节点 一:kubernetes的调度 1.1 scheduler 的介绍 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: 1.公平:如何保证每个节点都能被分配资源 2. 资源高效

[转帖]新手必读,16个概念入门 Kubernetes

新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教程/入门教程 阅读(333) 作者:汉科云团队 评论(0) Kubernetes是Google开源的容?集群管理系统,是Google多年?规模容?管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署.维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态

Kubernetes 部署 Nebula 图数据库集群

Kubernetes 是什么 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应用部署,规划,更新,维护的一种机制.Kubernetes 在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以部署.维护和扩展应用程序的机制,组成 Kubernetes 的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载.可扩展性在很大程度上由 Kubernetes API

010.kubernets的调度系统之daemonset

daemonset简单操作使用 Deployment 是 Kubernetes 中用于处理无状态服务的资源,而 StatefulSet 是用于支持有状态服务的资源,这两种不同的资源从状态的角度对服务进行了划分,而 DaemonSet 从不同的维度解决了集群中的问题 — 如何同时在集群中的所有节点上提供基础服务和守护进程. 下面简单学习DaemonSet的一写基本的操作和管理 1 介绍 DaemonSet 可以保证集群中所有的或者部分的节点都能够运行同一份 Pod 副本,每当有新的节点被加入到集群