深入K8s:守护进程DaemonSet及其源码分析( 三 )
如果要移除这个污点 , 可以这么做:
kubectl taint nodes node1 key:NoSchedule-
如果我们想让pod运行在有污点的node节点上 , 我们需要在pod上声明Toleration , 表明可以容忍具有该Taint的Node 。
比如我们可以声明如下pod:
apiVersion: v1kind: Podmetadata:name: pod-taintsspec:tolerations:- key: "key"operator: "Equal"value: "value"effect: "NoSchedule"containers:- name: pod-taintsimage: busybox:latest
operator在这里可以是Exists表示无需指定value , 值为Equal表明需要指明和value相等 。
NoSchedule表示如果一个pod没有声明容忍这个Taint , 则系统不会把该Pod调度到有这个Taint的node上 。 除了NoSchedule外 , 还可以是PreferNoSchedule , 表明如果一个Pod没有声明容忍这个Taint , 则系统会尽量避免把这个pod调度到这一节点上去 , 但不是强制的 。
在上面的fluentd-elasticsearch DaemonSet 里 , 我们加上了
tolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule
【深入K8s:守护进程DaemonSet及其源码分析】是因为在默认情况下 , Kubernetes 集群不允许用户在 Master 节点部署 Pod 。 因为 , Master 节点默认携带了一个叫作node-role.kubernetes.io/master的“污点” 。 所以 , 为了能在 Master 节点上部署 DaemonSet 的 Pod , 我就必须让这个 Pod“容忍”这个“污点” 。
推荐阅读
- 全新8核国产CPU深入探秘:马上能买到
- 16G运存+256G内存,专业骁龙865旗舰,性价比深入人心
- 深入理解Netty编解码、粘包拆包、心跳机制
- 海信时光机心意T50 给与长辈更多的关注和守护
- 绿色骑行深入校园,共享单车长途长时需求量提升
- 惠州惠城供电局:智慧“云”监工守护一线安全防线
- 深入调查SolarWinds黑客事件 微软已查封一个核心服务器
- 《深入理解Java虚拟机》:Java内存区域
- 深入探讨 JavaScript 逻辑赋值运算符
- 木吉他的守护神,高颜值温湿度计精准监测