我在k8s中有3个从节点,并且我正在运行kafka(3个集群)。 在部署zk / broker / rest-proxy时,不会将其部署在所有可用节点中。我如何确保所有Pod都部署在不同的节点上。我需要使用nodeaffinity或podaffinity吗?
答案 0 :(得分:1)
如果要使所有Pod在不同的节点上运行-必须使用PodAntiAffinity。如果这是硬性要求,则必须使用requiredDuringSchedulingIgnoredDuringExecution
规则。如果不是,请使用preferredDuringSchedulingIgnoredDuringExecution
。
topologyKey
应该是kubernetes.io/hostname。
在labelSelector
中,放置您的广告连播的标签。
答案 1 :(得分:1)
我建议使用看起来像这样的柔和的反亲和力
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- <your app label>
topologyKey: kubernetes.io/hostname
weight: 100
在这里,我通过应用到实时集群的示例说明了反亲和类型之间的区别: https://blog.verygoodsecurity.com/posts/kubernetes-multi-az-deployments-using-pod-anti-affinity/