kubernetes - 当节点标签消失时,Kubernetes nodeSelector 不会删除 pod
问题描述
我有一个有 nodeSelector 的 statefulset:
nodeSelector:
app: licensed
当我用 分配节点时app: licensed
,我可以看到 pod 已安排在特定节点上。
但是当我从节点中删除标签时,我没有看到 k8s 从该节点中删除 pod。我必须明确删除 pod。
它是 Kubernetes 的功能吗?或者我是否正确使用了 nodeSelector?
解决方案
如果您只希望指定的东西在指定的节点上运行,那么您正在寻找的东西可能是污点和容忍。您使用的nodeSelector:
用于调度决策,但未用于协调循环(如您所见)
通过 进行更细粒度的控制effect: NoSchedule
,正如它暗示的那样,如果 Pod 不能容忍污点,它只会阻止 Pod 被调度,并且如果污点出现在节点上,effect: NoExecute
这更接近您所要求的,并且 Pod 不容忍它,Pod 将被驱逐并且不会重新安排在任何此类受污染的节点上。现代版本的kubernetes允许通过它的另一端进行更细粒度的控制PreferNoSchedule
tolerationSeconds
推荐阅读
- python-3.x - 解决循环python中的陈旧元素
- python - 我可以使用 XGBoost 来提升其他模型(例如朴素贝叶斯、随机森林)吗?
- azure - WCF 不会终止对客户端的调用
- css - 创建一个带有 n*n 个正方形的 CSS 网格
- python - 导入后任意修改导入一个python模块
- html - 使用角度 ng-repeat 从对象动态创建 HTML 表格行
- python - 函数中样条和多条线之间的交点
- python - 递归字符串替换
- python - Django 应用程序无法识别 .env 文件,我尝试通过 os、Django-environ 和 dotenv 进行设置,但没有任何效果
- django - Django 表单中的 Queryset 对象不可迭代