这是昨天晚上阅读园子里的2篇 k8s 博文时产生的想法,在随笔中记录一下。
这2篇博文是 K8S调度之节点亲和性 与 K8S调度之Taints and Tolerations 。
如果我们把 node 当作女方,pod 当作男方,scheduler 当作媒人,从相亲的角度理解这3个概念,不仅豁然开朗,而且很容易记住。
node affinity
就是女方告诉媒人自己喜欢什么类型的男生,介绍这些类型的男生给她。
taints
就是女方告诉媒人自己有哪些缺点,不能容忍这些缺点的男生请走开。
tolerations
就是男方告诉媒人自己可以容忍女生的哪些缺点,有这些缺点的女生可以帮他介绍。
比如 k8s master 节点默认的 taints 是 NoSchedule ,联系到相亲场景就是女方告诉媒人不要介绍任何男生给她。
$ kubectl describe node k8s-master0 | grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
而有些男生偏偏明知山有虎,偏上虎山行,告诉媒人就帮他找不需要媒人介绍的女生。
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
如果一个 deployment 配置添加了上面的声明,就可以部署 pod 到 master 节点上。