我有一些Kubernetes集群,每个集群中都有不同的#of个节点。而且我的config部署具有“副本:#nodes”。没有设置用于调度该容器的特定配置,但是在部署之后,就节点上容器的分布而言,我看到了奇怪的行为。
示例:
对于30个节点群集(30个副本),所有30个pod副本仅分布在25个节点上,而其他5个节点在群集中处于理想状态。对于许多其他不同的集群,情况相似,并且在每个新的/重新部署中,此计数都不同。
问题:
我想在所有节点上分发我的Pod副本。如果我设置“ replicas:#nodes”,则每个节点中应该有一个Pod副本。如果我将副本数量增加/增加一倍,那么它应该平均分配。Kubernetes部署yaml中是否有任何特定配置?
具有节点AntiAffinity的配置,但此行为仍如上所述。尝试了“ requiredDuringSchedulingIgnoredDuringExecution”,并且确实在每个节点中部署了一个Pod,但是如果我在部署期间增加副本或任何节点出现故障,则整个部署将失败。
metadata:
labels:
app: test1
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- test1
topologyKey: kubernetes.io/hostname
如果每个节点部署需要1个Pod,则应使用daemonSet而不是副本集。或者,如果每个节点需要超过1个容器,并且仍然希望容器分布基本均匀,则可以使用容器抗亲和力,如我所讨论的in this post