我在k8s中运行一个部署,它有2个副本和hpa,这取决于它可以扩展的使用情况,我为pod设置了一个反亲和力以确保HA,但当hpa扩展时,它将需要更多的节点,这不是我的愿望。我希望在任何节点上调度任何副本2+,而不注意反亲和力,我可以使用拓扑约束和maxskew来实现这一点吗?如果可以,有人可以帮助我吗?我没能成功
m1m5dgzv1#
没有任何函数允许你按你说的去做,但是你可以将反亲和规则从 requiredDuringSchedulingIgnoredDuringExecution 更改为 preferredDuringSchedulingIgnoredDuringExecution。
apiVersion: v1 kind: Pod metadata: name: with-pod-affinity spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: topology.kubernetes.io/zone podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: security operator: In values: - S2 topologyKey: topology.kubernetes.io/zone containers: - name: with-pod-affinity image: registry.k8s.io/pause:2.0
此示例定义了一个Pod关联规则和一个Pod反关联规则。Pod关联规则使用“硬”requiredDuringSchedulingIgnoredDuringExecution,而反关联规则使用“软”preferredDuringSchedulingIgnoredDuringExecution。关联规则表示,调度器只能将一个Pod调度到一个节点上,如果该节点与一个或多个标签为security=S1的现有Pod位于同一个区域。更准确地说,调度器必须将Pod放置在具有www.example.com标签的节点上topology.kubernetes.io/zone=V,只要该区域中至少有一个节点当前具有一个或多个Pod标签为security=S1的Pod。反亲合规则是指调度器应该尽量避免将Pod调度到与一个或多个标签为security=S2的Pod位于同一个zone的节点上。更准确地说,如果同一个zone中有其他节点正在运行标签为Security=S2的Pod,则调度器应该尽量避免将Pod放置在标签为www.example.com的节点上topology.kubernetes.io/zone=R。https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#an-example-of-a-pod-that-uses-pod-affinity这样,每次配置新VM时,都会配置Pod。当“even”节点启动时,您只需安排重新启动。
1条答案
按热度按时间m1m5dgzv1#
没有任何函数允许你按你说的去做,但是你可以将反亲和规则从 requiredDuringSchedulingIgnoredDuringExecution 更改为 preferredDuringSchedulingIgnoredDuringExecution。
此示例定义了一个Pod关联规则和一个Pod反关联规则。Pod关联规则使用“硬”requiredDuringSchedulingIgnoredDuringExecution,而反关联规则使用“软”preferredDuringSchedulingIgnoredDuringExecution。
关联规则表示,调度器只能将一个Pod调度到一个节点上,如果该节点与一个或多个标签为security=S1的现有Pod位于同一个区域。更准确地说,调度器必须将Pod放置在具有www.example.com标签的节点上topology.kubernetes.io/zone=V,只要该区域中至少有一个节点当前具有一个或多个Pod标签为security=S1的Pod。
反亲合规则是指调度器应该尽量避免将Pod调度到与一个或多个标签为security=S2的Pod位于同一个zone的节点上。更准确地说,如果同一个zone中有其他节点正在运行标签为Security=S2的Pod,则调度器应该尽量避免将Pod放置在标签为www.example.com的节点上topology.kubernetes.io/zone=R。
https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#an-example-of-a-pod-that-uses-pod-affinity
这样,每次配置新VM时,都会配置Pod。
当“even”节点启动时,您只需安排重新启动。