kubernetes - Kubernetes - 在污点/容忍度上启用自动 pod 重新调度
问题描述
在以下场景中:
- Pod X 可以容忍污点
- 但是具有这种污点的节点 A 不存在
- 同时,Pod X 被安排在不同的节点 B 上
- 具有适当污点的节点 A 变为就绪
在这里,Kubernetes 不会触发节点 A 上的 pod X 的自动重新调度,因为它在节点 B 上正常运行。有没有办法启用对节点 A 的自动重新调度?
解决方案
在本地,可能不会,除非您:
- 将 taint 更改
nodeB
为NoExecute
(可能已经设置):
NoExecute - pod 将被逐出节点(如果它已经在节点上运行),并且不会被调度到节点上(如果它还没有在节点上运行)。
那是:
您可以在同一个节点上放置多个污点,在同一个 pod上放置多个容忍度。
Kubernetes 处理多个 taints 和 toleration 的方式就像一个过滤器:从节点的所有 taint 开始,然后忽略 pod 具有匹配 toleration 的那些;剩余的未被忽略的污点对 pod 有指定的影响。尤其是,
如果至少有一个未忽略的污点具有 NoSchedule 效果,则 Kubernetes 不会将 pod 调度到该节点上
如果这是不可能的,那么使用节点关联可能会有所帮助(但这与污点不同)
推荐阅读
- python - 发布并保存 Django 变量,不起作用
- module - 如何在 gem5 中运行 MathExprPowerModel?
- powershell - 如何使用powershell删除所有oracle java
- user-interface - JavaFx:创建文本输入框
- c++ - 在堆上实现二维数组的最佳方法
- python - 如何在 Python 中用变量值而不是 0 填充矩阵
- flutter - 向setstate发送参数?
- java - Gradle 5 和 Java 11 构建错误:为什么 Gradle 认为我正在使用 Java 10?
- bash - 创建 bash 脚本文件以创建 S3 存储桶
- c++ - 将子类对象传递给 std::function 参数