k8s中汙點設定

2021-10-07 17:11:59 字數 1845 閱讀 6976

kubectl taint

ⅰ、 汙點 ( taint ) 的組成

使用 kubectl taint 命令可以給某個 node 節點設定汙點,node 被設定上汙點之後就和 pod 之間存在了一種相

斥的關係,可以讓 node 拒絕 pod 的排程執行,甚至將 node 已經存在的 pod 驅逐出去

每個汙點的組成如下:

key=value:effect

每個汙點有乙個 key 和 value 作為汙點的標籤,其中 value 可以為空,effect 描述汙點的作用。當前 taint

effect 支援如下三個選項:

noschedule :表示 k8s 將不會將 pod 排程到具有該汙點的 node 上

prefernoschedule :表示 k8s 將盡量避免將 pod 排程到具有該汙點的 node 上

noexecute :表示 k8s 將不會將 pod 排程到具有該汙點的 node 上,同時會將 node 上已經存在的 pod 驅

逐出去ⅱ、汙點的設定、檢視和去除

設定汙點

kubectl taint nodes node1 key1=value1:noschedule

節點說明中,查詢 taints 字段

kubectl describe pod pod-name

去除汙點減號

kubectl taint nodes node1 key1:noschedule-

設定了汙點的 node 將根據 taint 的 effect:noschedule、prefernoschedule、noexecute 和 pod 之間產生

互斥的關係,pod 將在一定程度上不會被排程到 node 上。 但我們可以在 pod 上設定容忍 ( toleration ) ,意思

是設定了容忍的 pod 將可以容忍汙點的存在,可以被排程到存在汙點的 node 上

pod.spec.tolerations

tolerations:

- key: 「key1」

operator: 「equal」

value: 「value1」

effect: 「noschedule」

tolerationseconds: 3600

- key: 「key1」

operator: 「equal」

value: 「value1」

effect: 「noexecute」

- key: 「key2」

operator: 「exists」

effect: 「noschedule」

其中 key, vaule, effect 要與 node 上設定的 taint 保持一致

operator 的值為 exists 將會忽略 value 值

tolerationseconds 用於描述當 pod 需要被驅逐時可以在 pod 上繼續保留執行的時間 #類似限期驅離

ⅰ、當不指定 key 值時,表示容忍所有的汙點 key:

tolerations:

- operator: 「exists」

ⅱ、當不指定 effect 值時,表示容忍所有的汙點作用

tolerations:

- key: 「key」

operator: 「exists」

ⅲ、有多個 master 存在時,防止資源浪費,可以如下設定,讓master也啟動pod

kubectl taint nodes node-name node-role.kubernetes.io/master=:prefernoschedule

k8s設定汙點taint

如果不想讓master節點參與到正常的pod排程,則需要對master進行打汙點標籤,這樣master就不會有pod建立 pod建立時可以進行容忍度設定,這樣master還是可以進行pod排程 汙點標記 prefernoschedule noschedule 的軟策略版本,表示盡量不排程到汙點節點上...

K8S汙點機制

汙點kubectl taint 汙點 taint 的組成 使用 kubectl taint 命令可以給某個 node 節點設定汙點,node 被設定上汙點之後就和 pod 之間存在了一種相 斥的關係,可以讓 node 拒絕 pod 的排程執行,甚至將 node 已經存在的 pod 驅逐出去 每個汙點...

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