Kubernetes 设置关联规则时,权重如何影响pod调度?
背景: 在对应用程序进行性能测试时,我在扩展我的Kubernetes 设置关联规则时,权重如何影响pod调度?,kubernetes,Kubernetes,背景: 在对应用程序进行性能测试时,我在扩展我的php fpm容器的副本时得到了不一致的结果,我意识到在同一个节点上调度了3/4个pod 然后,我将反关联规则配置为不在同一节点上调度POD。我很快意识到,使用requiredDuringSchedulingIgnoredDuringExecution不是一个选项,因为我无法拥有节点的#副本>#,所以我配置了preferredDuringSchedulingIgnoredDuringExecution 在大多数情况下,我的pod在我的所有节点上都是
php fpm
容器的副本时得到了不一致的结果,我意识到在同一个节点上调度了3/4个pod
然后,我将反关联规则配置为不在同一节点上调度POD。我很快意识到,使用requiredDuringSchedulingIgnoredDuringExecution
不是一个选项,因为我无法拥有节点的#副本>#,所以我配置了preferredDuringSchedulingIgnoredDuringExecution
在大多数情况下,我的pod在我的所有节点上都是均匀调度的,但是有时(通过滚动升级),我会在同一个节点上看到pod。我觉得当前设置为100的weight
值是一个重要因素
这是我正在使用的yaml(头盔):
问题: 按照我阅读文档的方式,将根据节点的繁忙程度(简化)将
权重
数字添加到节点的计算分数中,但我不明白的是,权重1与100有什么不同
为什么POD有时按此规则安排在同一节点上?是不是因为pod未计划的节点的总分太低(因为它太忙)
是否有办法查看pod在特定节点上的调度日志/事件?我希望
kubectl description pod
会有这些细节,但似乎没有(错误场景除外) 不保证首选DuringSchedulingIgnoredDuringExecution
两种类型的节点关联,称为requiredDuringSchedulingIgnoredDuringExecution和preferredDuringSchedulingIgnoredDuringExecution。您可以将它们分别视为“硬”和“软”,因为前者指定了pod调度到节点上所必须满足的规则(与nodeSelector类似,但使用了更具表现力的语法),而后者指定了调度程序将尝试执行但不保证执行的首选项
设置的权重提供了一条边,但还有其他参数(由用户和kubernetes设置)具有自己的权重。下面的示例应该可以更好地说明您设置的权重在哪里很重要
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: example.com/myLabel
operator: In
values:
- a
weight: 40
- preference:
matchExpressions:
- key: example.com/myLabel
operator: In
values:
- b
weight: 35
是的,事实上,当有多个条件时,你可以对它们进行不同的加权,这就更清楚了。我在考虑单一条件用例。
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: example.com/myLabel
operator: In
values:
- a
weight: 40
- preference:
matchExpressions:
- key: example.com/myLabel
operator: In
values:
- b
weight: 35