我有一个配置有两个相当小的VM工作程序节点的AKS集群,然后是一个使用ACI的虚拟节点。我真正想做的是让pod在两个VM节点上进行调度,直到它们装满,然后再使用虚拟节点,但是我无法使它工作。
我已经尝试使用节点亲和力,如建议的here一样,但这是行不通的,首先在虚拟节点上调度了pod。如果我使用必需的节点关联性,那么它们只会在VM节点上进行调度,但这不是我想要的。我猜这里的问题是我的VM节点上的资源可用性大大低于虚拟节点(如您所料),因此虚拟节点的权重大大提高,这抵消了相似性规则,但是我不知道我真的不知道,因为我看不到任何方法可以看到这个重量。
那么,有没有人能使这种情况奏效?
答案 0 :(得分:1)
https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/遍历了调度程序使用的不同计分选项,https://github.com/kubernetes/examples/blob/master/staging/scheduler-policy/scheduler-policy-config.json显示了如何自定义它们。
我怀疑您想要的是preferred
亲和力,并增加了NodeAffinityPriority
的得分因子。
答案 1 :(得分:0)
nodeAffinity
是正确的方法,但是必须正确使用requiredDuringSchedulingIgnoredDuringExecution
和preferredDuringSchedulingIgnoredDuringExecution
参数。
例如:
apiVersion: v1
kind: Pod
metadata:
name: node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY-FOR-ALL-THREE-NODES
operator: In
values:
- VALUE-FOR-ALL-THREE-NODES
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: KEY-FOR-THE-TWO-SMALL-NODES
operator: In
values:
- VALE-FOR-THE-TWO-SMALL-NODES
containers:
- name: nginx
image: nginx
该Pod只能在声明为key: value
的节点上运行(因此,这三个节点都是如此),但是您希望它在具有重量的小节点(如果有空间)上运行100。权重是一个主观的东西,因此它应该与+1然后+100相同。
此外,由于您具有三个节点,因此您可以跳过需求部分,而仅设置首选项。