Kubernetes污點(taints)與容忍(tolerations)

一、概述

Taint(污點)和 Toleration(容忍)可以作用於 node 和 pod 上,其目的是優化 pod 在集羣間的調度,這跟節點親和性類似,只不過它們作用的方式相反,具有 taint 的 node 和 pod 是互斥關係,而具有節點親和性關係的 node 和 pod 是相吸的。另外還有可以給 node 節點設置 label,通過給 pod 設置 nodeSelector 將 pod 調度到具有匹配標籤的節點上。

Taint 和 toleration 相互配合,可以用來避免 pod 被分配到不合適的節點上。每個節點上都可以應用一個或多個 taint ,這表示對於那些不能容忍這些 taint 的 pod,是不會被該節點接受的。如果將 toleration 應用於 pod 上,則表示這些 pod 可以(但不要求)被調度到具有相應 taint 的節點上。

二、node節點設置污點和容忍

1、設置taint

NoSchedule: 一定不能被調度
PreferNoSchedule: 儘量不要調度
NoExecute: 不僅不會調度, 還會驅逐Node上已有的Pod

kubectl taint nodes node1 key1=value1:NoSchedule
kubectl taint nodes node1 key1=value1:NoExecute
kubectl taint nodes node1 key2=value2:NoSchedule

2、查看taint

kubectl describe node node1

3、刪除taint:

kubectl taint node node1 key1:NoSchedule-  # 這裏的key可以不用指定value
kubectl taint node node1 key1:NoExecute-
kubectl taint node node1 key1-             # 刪除指定key所有的effect
kubectl taint node node1 key2:NoSchedule-

三、Pod設置污點和容忍

詳細使用方法請參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章