有没有什么我可以告诉Kuberbetes如何调度statefulset中的副本的?例如,我将节点划分为3个不同的可用区(AZ)。我已经相应地标记了这些节点。现在我希望K8s根据节点标签在每个AZ中放置一个副本。谢谢
发布于 2020-05-07 03:13:55
Pods将总是尝试在不同的节点上进行调度,为了实现您正在寻找的目标,您可以尝试使用DaemonSet,它将在每个节点中只允许其中一种pods。
此外,您还可以基于该节点中已调度的pod使用反亲和性。
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
发布于 2020-05-07 03:17:48
您要查找的功能名为Pod Anti-Affinity,可以这样指定:
apiVersion: apps/v1
kind: StatefulSet
[..]
spec:
template:
spec:
affinity:
nodeAffinity: {}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app: myapp
topologyKey: az
weight: 100
[..]从Kubernetes1.18开始,还有Pod Topology Spread Constraints,它是指定这些反亲和性规则的一种更好的方式。
https://stackoverflow.com/questions/61643239
复制相似问题