Amazon web services K8S吊舱在不同节点上具有两个副本
我有两个副本的POD,k8s会同时重新安排两个副本的时间吗? 如果是,有没有办法避免 我猜(根据@Henry的回复)我需要使用或 拓扑学 但不确定如何配置以下内容:Amazon web services K8S吊舱在不同节点上具有两个副本,amazon-web-services,azure,kubernetes,Amazon Web Services,Azure,Kubernetes,我有两个副本的POD,k8s会同时重新安排两个副本的时间吗? 如果是,有没有办法避免 我猜(根据@Henry的回复)我需要使用或 拓扑学 但不确定如何配置以下内容: 1应用程序,其中包含2副本,例如 副本A在nodefo上运行 Replica B在NodeBar中运行假设您指的是部署,是的,Pod对象几乎同时创建和调度。如果希望按顺序创建内容,请使用StatefulSet。将副本配置为在不同节点上运行,可以使用。例如,在部署规范中: spec: template: meta
1
应用程序,其中包含2
副本,例如
副本A
在nodefo
上运行
Replica B
在NodeBar
中运行假设您指的是部署,是的,Pod对象几乎同时创建和调度。如果希望按顺序创建内容,请使用StatefulSet。将副本配置为在不同节点上运行,可以使用。例如,在部署规范中:
spec:
template:
metadata:
labels:
name: my-app-label
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
name: my-app-label
topologyKey: kubernetes.io/hostname
这基本上意味着,所有与标签
name=my app label
匹配的pod都应该在节点标签kubernetes.io/hostname
不同的主机上运行。通常,除非发生了不好的情况(OOM,节点死亡,…),否则不会重新调度它们。找出他们被重新安排的原因。@Henry-谢谢,我们正在检查。是否有方法告诉应用程序在两个不同节点上使用两个副本运行?为了最大限度地降低同时重新调度的风险,“在两个不同的节点上运行两个副本”:查看POD模板规范中的affinity:podAntiAffinity:。@Henry-谢谢我读了它,但是我在这里遗漏了什么,对于特定的应用程序
如何告诉它两个不同的节点,您能提供一个例子作为答案吗?我相信在这种情况下,如果您希望在每个节点上运行一个副本,这可能是一个更好的选择。你怎么看?谢谢你的回答,我想我需要使用“affinity:podAntiAffinity”,但不确定一个应用程序如何指定两个不同的节点,每个应用程序副本都将转到不同的节点…有很多方法可以控制pod的分布方式。反亲和力是其中之一,pod拓扑扩展是另一个。这取决于您的需要和Kubernetes版本。如果您能提供一个pod拓扑/关联示例,即在两个不同节点中有两个副本的1个pod,那就太好了…谢谢,我不确定我是否理解它,您是如何告诉我在两个不同节点上运行的,你只放了“podAntiAffinity:”,但你没有告诉它在节点X
和节点Y
上运行,你能解释一下吗?你不需要定义拓扑预设约束
?谢谢,只是为了验证我完全理解它。如果有10个节点
,我使用podAntiAffinity:
和topologyKey
以及一个带有5个副本的应用程序,那么5个pod的每个
实例将被安排在不同的
节点中,因为每个节点都有不同的kubernetes.io/hostname
,对吗?@JennyM是的,没错。没有两个吊舱将在同一个节点上运行。