有一个集群Kubernetes和IBM Cloud Private,有两个工作人员。 我有一个部署,创建两个pod。如何强制部署将其pod安装在两个不同的工作人员上?在这种情况下,如果我失去了一个icp工作者,我总是有另外一个需要pod。
答案 0 :(得分:2)
如果您希望pods不在同一节点上进行计划,那么您要使用的正确概念是pod间反关联。 https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature
观察:
spec:
replicas: 2
selector:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: kubernetes.io/hostname
答案 1 :(得分:0)
您可以将您的pod创建为kubernetes DaemonSet。 DaemonSet确保所有(或某些)节点运行Pod的副本。您可以访问以下链接查看详细信息。 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
答案 2 :(得分:0)
除@Santiclause关于亲和模式下的调度策略的答案外,还有两个different mods亲和力:
requiredDuringSchedulingIgnoredDuringExecution
preferredDuringSchedulingIgnoredDuringExecution。
使用 requiredDuringSchedulingIgnoredDuringExecution 亲和度调度程序时,我们需要确保满足所有规则以便安排pod。
如果您没有足够的节点来生成所有pod,则调度程序将永远等待,直到有足够的节点可用。
如果您使用 preferredDuringSchedulingIgnoredDuringExecution 亲和度调度程序,它将尝试根据节点从已定义规则及其权重的组合获得的最高分数生成所有副本
权重是与规则一起使用的参数,每个规则可以具有不同的权重。为了计算节点的分数,我们使用以下逻辑:
对于每个节点,我们遍历配置中定义的规则(即资源请求,requiredDuringScheduling,关联表达式等)。如果规则匹配,我们将权重值添加到该节点的分数。处理完所有节点的所有规则后,我们将列出所有节点及其最终得分。具有最高分数的节点是最优选的。
总而言之,较高的权重值会增加规则的重要性,并有助于调度程序决定选择哪个节点。