汙點:主體是node,在node上標記特定的鍵值對,以此來標識該node的特殊屬性
容忍度:主體是pod,當pod被排程到有汙點的node時,該pod能否容忍node的汙點標記
在檢視master節點的資訊
~]# kubectl describe node master-node | grep taints
taints: node-role.kubernetes.io/master:noschedule
可以看到master的節點集群在建立時已經被自動標記了taint,保證了建立未經指定容忍度的pod時,不會排程到master節點
三種型別:
汙點設定:
kubectl taint nodes node2 test=sl**e:noschedule
撤銷汙點:
kubectl taint nodes node2 test:noschedule-
當node已經設定了汙點,通過設定容忍度將pod排程到相應的節點上
示例:
...
tolerations:
- key: "key"
operator: "equal"
value: "value"
effect: "noscheduale"
...
operator: 沒指定預設為equal,當為equal時value必須指定並且key的值和vaule的值匹配才能執行,當為exists時可以不寫value
此外,空的 key(是指key沒有指定,而不是指key為空字串) 如果再配合operator exists 就能匹配所有的 key 與 value,也是能容忍所有 node 的所有 taints,空的 effect 匹配所有的 effect
當配置noexecute時,pod可以通過設定tolerationseconds(秒),表示pod可以容忍該節點並在該節點繼續執行指定的時間
比如,乙個使用了很多本地狀態的應用程式在網路斷開時,仍然希望停留在當前節點上執行一段較長的時間, 願意等待網路恢復以避免被驅逐。在這種情況下,pod 的容忍度可能是下面這樣的:
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "exists"
effect: "noexecute"
tolerationseconds: 6000
在k8s的集群中,當某種條件為真時,節點控制器會自動給節點新增乙個汙點。包括如下:
daemonset 控制器自動為所有守護程序新增如下 noschedule 容忍度(不同版本有差別)以防 daemonset 崩潰:
另外:在集群執行的過程中當節點由於資源的緊缺,會出現集群自動將資源緊缺的節點標記汙點,讓無法忍受的pod自動剝離該node
k8s 節點親和性和汙點容忍
1 檢視標籤 kubectl get nodes show labels 2 打標籤 kubectl label nodes node1.com kong true kubectl label nodes node2.com kong true kubectl label nodes node3.c...
親和性 反親和性 汙點 容忍
在預設的k8s排程中,一般經過預選和優選即可完成排程,但是生產的實際使用中,考慮到部分業務的特殊性,一般會手動進行一些 指定 k8s 把這些 指定 分為nodeaffinity 節點親和性 podaffinity pod 親和性 以及 podantiaffinity pod 反親和性 這在排程過程中...
騰訊馬化騰 要容忍失敗和適度浪費
需求度 研究使用者不要想當然 產品速度 小步快跑 快速迭代 談及產品的更新速度,馬化騰認為,快速實現單點突破,角度 銳度尤其是速度,是產品在生態中存在發展的根本。比如一些產品經理在研發一款產品之初,有些人一上來就把攤子鋪得很大 恨不得面面俱到地布好局 有些人習慣於追求完美,總要把產品反覆打磨到自認為...