一·、概述
在k8s当中,“亲和性”分为三种,节点亲和性、pod亲和性、pod反亲和性;
亲和性分类 | 名称 | 解释说明 |
nodeAffinity | 节点亲和性 | 通过【节点】标签匹配,用于控制pod调度到哪些node节点上,以及不能调度到哪些node节点上;(主角node节点) |
podAffinity | pod亲和性 | 通过【节点+pod】标签匹配,可以和哪些pod部署在同一个节点上(拓扑域);(主角是pod) |
podAntiAffinity | pod反亲和性 | 通过【节点+pod】标签匹配,与pod亲和性相反,就是和那些pod不在一个节点上(拓扑域); |
二、nodeAffinity-节点亲和性
1,给k8s节点创建标签
查看标签
2,编辑资源清单设置节点亲和性
3,创建资源
4,查看pod所在节点,验证亲和性
三、podAffinity-pod的亲和性
基于“节点标签”进行设置,第一个pod副本创建在了哪个节点上,那么其余副本也会创建在这个节点上;
拓扑域:节点机器的标签的key和value都相等的机器,就是同一个拓扑域;
1,编辑资源清单设置pod亲和性
2,创建资源
3,查看pod所在节点
四、podAntAffinity-pod的反亲和性
pod的亲和性:符合拓扑域的范围,指定标签的pod创建在哪里,其他pod就创建在哪里;
pod的反亲和性:与之相反,符合拓扑域的范围,指定标签的pod创建在哪里,其他pod就不能创建在哪里;
1,编辑资源清单设置pod的反亲和性
2,创建资源
3,查看pod
结论:
1,由于第一pod创建在了k8s232中,所以第二个pod就无法再k8s232中创建;
2,第二个pod就再k8s233中创建了;
3,由于我们是4个副本,k8s231还设置了污点,无法创建pod;
4,所以,我们4个副本,最后只能创建成功2个,剩下两个pending;
至此,亲和性,学习完毕