kubernetes视频教程笔记 (27)-集群调度-污点和容忍
一、Taint 和 Toleration
1. 优先选择什么
节点亲和性,是 pod 的一种属性(偏好或硬性要求),它使 pod 被吸引到一类特定的节点。Taint 则相反,它使节点 能够 排斥 一类特定的 pod。
2. 不选择什么
Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。
每个节点上都可以应用一个或多个taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。
如果将 toleration 应用于 pod上,则表示这些 pod 可以(但不要求)被调度到具有匹配 taint 的节点上。
二、污点(Taint)
Ⅰ、 污点 ( Taint ) 的组成
使用 kubectl taint 命令可以给某个 Node 节点设置污点,Node 被设置上污点之后就和 Pod 之间存在了一种相斥的关系,可以让 Node 拒绝 Pod 的调度执行,甚至将 Node 已经存在的 Pod 驱逐出去
每个污点的组成如下:
key=value:effect
每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。
当前 taint effect 支持如下三个选项:
- NoSchedule :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上
- PreferNoSchedule :表示 k8s 将尽量避免将 Pod 调度到具有该污点的 Node 上
- NoExecute :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去
Ⅱ、污点的设置、查看和去除
# 设置污点
kubectl taint nodes node1 key1=value1:NoSchedule# 节点说明中,查找 Taints 字段
kubectl describe pod pod-name
# 去除污点
kubectl taint nodes node1 key1:NoSchedule
三、容忍(Tolerations)
设置了污点的 Node 将根据 taint 的 effect:NoSchedule、PreferNoSchedule、NoExecute 和 Pod 之间产生互斥的关系,Pod 将在一定程度上不会被调度到 Node 上。
但我们可以在 Pod 上设置容忍 ( Toleration ) ,意思是设置了容忍的 Pod 将可以容忍污点的存在,可以被调度到存在污点的 Node 上
pod.spec.tolerations
tolerations:
- key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule"tolerationSeconds: 3600
- key: "key1"operator: "Equal"value: "value1"effect: "NoExecute"
- key: "key2"operator: "Exists"effect: "NoSchedule"
- 其中 key, vaule, effect 要与 Node 上设置的 taint 保持一致
- operator 的值为 Exists 将会忽略 value 值
- tolerationSeconds 用于描述当 Pod 需要被驱逐时可以在 Pod 上继续保留运行的时间
Ⅰ、当不指定 key 值时,表示容忍所有的污点 key:
tolerations:
- operator: "Exists"
Ⅱ、当不指定 effect 值时,表示容忍所有的污点作用
tolerations:
- key: "key"operator: "Exists"
Ⅲ、有多个 Master 存在时,防止资源浪费,可以如下设置
kubectl taint nodes Node-Name node-role.kubernetes.io/master=:PreferNoSchedule
内容来自https://study.163.com/course/courseMain.htm?courseId=1209568805
kubernetes视频教程笔记 (27)-集群调度-污点和容忍相关推荐
- Kubernetes的共享GPU集群调度
问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器.这可以实现比较好的隔离性,确保使用GPU的应用不会被其 ...
- Kubernetes的共享GPU集群调度 1
问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器.这可以实现比较好的隔离性,确保使用GPU的应用不会被其 ...
- 调度框架学习笔记(3)—— 集群调度框架的架构演进过程
本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...
- CNCF 沙箱项目 OCM Placement 多集群调度指南
作者: 邱见|红帽资深软件工程师,Open Cluster Management (OCM) 社区发起人,负责人 郝青|红帽高级软件工程师,Open Cluster Management (OC ...
- 仓库规模操作系统的背景之集群调度
前言 本文是Malte Schwarzkopf的博士论文<Operating system support for warehouse-scale computing>一个翻译版本,融入了 ...
- 集群调度框架的架构演进之路
http://www.infoq.com/cn/articles/scheduler-architectures 编者按 集群架构是现代数据中心非常重要的组件,在最近几年中有长足发展.架构也从单体式设 ...
- k8命令,pod的启动流程与资源文件书写,k8s集群调度
目录 一.常用命令及kubect介绍 1.kubect介绍 1)语法格式: 2)命名空间的概述 3)查看命名空间 4)查看命名空间中的资源对象 2.查用排错命令 1)查询资源文件 2)查看资源详细信息 ...
- 容器编排技术 -- Kubernetes从零开始搭建自定义集群
容器编排技术 -- Kubernetes从零开始搭建自定义集群 1 设计和准备 1.1 学习 1.2 Cloud Provider 1.3 节点 1.4 网络 1.4.1 网络连接 1.4.2 网络策 ...
- kubernetes 入门实践-搭建集群
ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人的真正伟大之处就在于他能够认识到自己的渺小 -- 保罗) ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤ 上一篇:kubernetes 入门实践-核心概念 下 ...
- 集群调度框架的架构演进过程
原文:The evolution of cluster scheduler architectures 作者:Malte Schwarzkopf 之前组会上,有幸与大家探讨 Firmament: Fa ...
最新文章
- K-means算法Java实现
- pcss评分_GTA5画质设置 N卡画质选项设置指南
- asp.mvc 4项目发布文件目录结构_Spring Boot项目搭建与启动
- 9206 1225 mybank系统 随堂笔记
- XXX管理平台系统——项目总结(over)
- 测试专员如何编写优秀的测试代码·单元测试篇
- linux 更换 镜像源
- 多智能体强化学习之MAPPO理论解读
- 利用DiskGenius对硬盘无损分区大小调整+无损分割新分区。
- 1篇SCI二区+4篇一类可定A档博士!110万房补,享副教授甚至教授待遇!
- Java IO流:(十二)NIONIO2简单介绍
- Grow up way
- 将格林尼治时间转日期格式
- Date时间里的GMT是什么意思
- liunx检测上下行带宽及丢包率
- 如何修改excel的修改日期?
- android listview视差滚动,android – ListView在滚动时覆盖另一个布局
- Docker 网络深入理解
- python爬取汽车之家图片,Python requests 爬取汽车之家全部品牌logo,urllib下载到本地...
- 临床血液学检验仪器与技术
热门文章
- 使用rsync+inotify配置触发式(实时)远程同步
- 实现弹出窗口提示_AX
- C++笔记------数据类型
- 网站屏蔽搜索引擎的方法
- android studio 上手使用 大水逼问题
- LevelDb 实现原理(转载)
- Linux产生僵尸进程和孤儿进程及区别
- linux服务器配置与管理_一个十多年的系统管理员,忘了如何管理一台服务器
- 拓端tecdat|R语言使用ARIMAX预测失业率经济时间序列数据
- 拓端tecdat|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化