1. 程式人生 > 其它 >k8s pod汙點與汙點容忍

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]-