编辑
2025-04-14
云计算-Kubernetes
00
请注意,本文编写于 360 天前,最后修改于 0 天前,其中某些信息可能已经过时。

目录

标签(Labels)==> 作用于各种kubernetes对象
如何使用标签?
如何选择打上'environment=production'标签的pod?
污点(Taints)==> 作用于Node
如何使用污点?
如何给node1添加NoSchedule污点
容忍度(Tolerations)==> 作用于Pod
如何在Pod上添加容忍度
标签、污点与容忍度的协作方式
标签
污点
容忍度
总结

在 Kubernetes 集群中,标签(Labels)、污点(Taints)和容忍度(Tolerations)是精细控制 Pod 调度与资源隔离的核心机制。本文系统讲解三者的概念、作用对象与协作方式。标签(作用于各类 Kubernetes 对象)通过键值对实现资源组织与选择,如 environment: production,可使用 kubectl get pods -l environment=production 进行过滤筛选。污点(作用于 Node)用于标记节点不应接受普通 Pod,通过 kubectl taint nodes node1 special-key=true:NoSchedule 添加,效果包括 NoSchedule(禁止调度)、PreferNoSchedule(尽量不调度)、NoExecute(驱逐已有 Pod)。容忍度(作用于 Pod)允许 Pod 忽略特定污点,通过 tolerations 字段配置,实现授权 Pod 调度到有污点的节点。三者协作实现多租户隔离、硬件故障隔离、资源优化等场景的精细化调度控制。

本文适用于需要深入理解 Kubernetes 调度机制的运维与开发人员。

标签(Labels)==> 作用于各种kubernetes对象

它是附加到各种Kubernetes对象(如Pods、Nodes等)上的键值对,用于组织和选择对象。例如,你可以给一个Pod添加标签environment: production,然后你可以使用这个标签来选择或过滤出所有标记为生产环境的Pods。

如何使用标签?

yaml
apiVersion: v1 kind: Pod metadata: name: example-pod labels: environment: production app: example

如何选择打上'environment=production'标签的pod?

shell
kubectl get pods -l environment=production

污点(Taints)==> 作用于Node

它是附加到Node上的,用于表示该Node不应该接受任何Pod,除非Pod有特定的容忍度(Tolerations)。污点通常用于防止某些Pods调度到特定的Node上,例如,防止调度敏感数据处理的Pods到特定的硬件故障的Node上。

如何使用污点?

shell
# 给{nodename}打上污点{key=value},污点的效果或者影响是什么{taint-effects} kubectl taint nodes nodename key=value:taint-effects

如何给node1添加NoSchedule污点

shell
kubectl taint nodes node1 special-key=true:NoSchedule

容忍度(Tolerations)==> 作用于Pod

它是附加到Pod上的,用于表示该Pod可以调度到具有特定污点的Node上。这允许你精细控制哪些Pods可以在哪些Node上运行。

如何在Pod上添加容忍度

yaml
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: example-image tolerations: - key: "special-key" operator: "Equal" value: "true" effect: "NoSchedule"

这个配置允许example-pod调度到带有special-key=true

污点的Node上。

标签、污点与容忍度的协作方式

标签

用于组织和选择对象。

污点

用于限制哪些Node可以接收Pods。

容忍度

允许特定的Pods忽略这些限制,即它们可以调度到有特定污点的Node上。

总结

通过这种方式,你可以精细控制哪些Pods可以在哪些Node上运行,这对于管理多租户环境、确保安全隔离或优化资源使用非常有用。例如,你可以设置一个污点禁止所有的Pods调度到某些有硬件缺陷的Node上,但允许某些特定的、经过授权的Pods通过设置适当的容忍度来绕过这个限制。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Odboy

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-SA 许可协议。转载请注明出处!