k8s学习笔记4——taints & tolerations

污点Taints 和 容忍度Tolerations 上用于 节点亲和性Node Affinity 的高级特性

 

一. 污点 Taints

污点是 Node 上的标记,表示该节点不应该接受任何Pod,除非Pod有相应的容忍度。

污点格式 key=value:effect

effect有以下3种:

  • PreferNoSchedule :尽量避免没有相应容忍度的Pod被调度到该节点,除非没有其他节点可调度
  • NoSchedule :阻止所有没有相应容忍度的Pod被调度至该节点,但不会影响当前Node上已有的Pod
  • NoExecute :不仅阻止调度,还会驱逐节点上的Pod,除非它们有相应容忍度

 

kubectl describe node node01    # 查看污点标签

kubectl taint node node01 key=value:effect    # 设置污点标签

kubectl taint node node01 key=value:effect-    # 删除污点标签

 

二. 容忍度 Tolerations

容忍度是 Pod 的配置,允许Pod忽略特定的污点并调度到具有该污点的节点上

每个容忍度都有 一个键、一个操作符、一个值和一个效果

  • key :必须与污点的key匹配
  • operator :Equal 或 Exists
  • value :与污点的value匹配
  • effect :通常与污点的effect一致,为空表示所有

 

可在Pod的spec中添加一个容忍度

#vim myphp.yaml
===容忍 k=v1:NoSchedule 污点===
kind: Pod
apiVersion: v1
metadata: 
  name: myphp
spec:
  tolerations:
  - operator: Equal    # 精确匹配
    key: k    # 为空代表任意键值对
    value: v1
    effect: NoSchedule    # 为空代表所有污点效果
  containers:
  - name: myphp
    image: myos:php-fpm
#vim myphp.yaml
===容忍 k=*:NoSchedule 污点===
kind: Pod
apiVersion: v1
metadata: 
  name: myphp
spec:
  tolerations:
  - operator: Exists    # 模糊匹配,存在即可
    key: k
    effect: NoSchedule
  containers:
  - name: myphp
    image: myos:php-fpm

 

posted on 2025-09-17 10:08  Karlkiller  阅读(9)  评论(0)    收藏  举报

导航