【K8S】亲和、反亲和、污点、容忍
K8s调度
- 调度器通过kubernetes的list-watch机制来发现集群中新创建且尚未被调度到Node上的Pod。调度器会将发现的每一个未调度的Pod调度到一个合适的Node上来运行
- kube-scheduler是Kubernetes集群的默认调度器,并且是集群控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler在设计上是允许你自己写一个调度组件并替换原有的kube-scheduler
- 在做调度决定时需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和要求、数据局域性、负载间的干扰等
亲和与反亲和
Pod和Node
- 从pod出发,可以分成亲和性和反亲和性,分别对应podAffinity和podAntiAffinity
- 从node出发,也可以分成亲和性和反亲和性,分别对应nodeAffinity和nodeAntiAffinity
- 从操作指令来讲,可以有ln、Notln、Exists、DoesNotExist等
针对亲和性来讲,in代表我要调度到有这个标签的位置
针对反亲和性来讲,in代表我不要调度到有这个标签的位置
硬亲和和软亲和
preferredDuringSchedulingIgnoredDuringExecution 软亲和
软策略:结合下面的 “operator: NotIn”,意思就是尽量不要将 pod 调度到匹配到的节点