k8s pod污点与污点容忍

1. k8s-pod污点与污点容忍

  • Taints:避免Pod调度到特定Node上

  • Tolerations:允许Pod调度到持有Taints的Node上

  • 应用场景:

    • 专用节点:根据业务线将Node分组管理,希望在默认情况下不调度该节点,只有配置了污点容忍才允许分配
    • 配备特殊硬件:部分Node配有SSD硬盘、GPU,希望在默认情况下不调度该节点,只有配置了污点容忍才允许分配
    • 基于Taint的驱逐
  • 示例:给节点添加污点

    • 格式:

      kubectl taint node [node] key=value:[effect] 
      
    • 例如:

      kubectl taint node k8s-node1 gpu=yes:NoSchedule
      
    • 验证:

      kubectl describe node k8s-node1 |grep Taint 
      
  • 其中[effect] 可取值:

    • NoSchedule :一定不能被调度
    • PreferNoSchedule:尽量不要调度,非必须配置容忍
    • NoExecute:不仅不会调度,还会驱逐Node上已有的Pod
  • 如果希望Pod可以被分配到带有污点的节点上,要在Pod配置中添加污点容忍(tolrations)字段

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-taints
    spec:
      containers:
      - name: pod-taints
        image: busybox:latest
      tolerations:
      - key: "gpu"
        operator: "Equal"      # Equal等于 下面的值就
        value: "yes"
        effect: "NoSchedule"
    
  • 去掉污点

    kubectl taint node [node] key:[effect]-
    
原文地址:https://www.cnblogs.com/scajy/p/15481766.html