![](/img/trans.png)
[英]Can Assign two Pods in Replication Controller to the two Different Nodes on Kubernetes?
[英]Running two kubernetes pods on differents nodes
有没有办法告诉Kubernetes永远不会在同一个节点上运行两个pod,例如我有两个pods副本,我希望它们总是分布在zone1/zone2
而不是在同一个区域中。
apiVersion: app/v1
kind: Deployment
metadata:
name: testApp
labels:
app: testApp-front
namespace:
spec:
replicas: 2
selector:
matchLabels:
app: testApp-front
template:
metadata:
labels:
app: testApp-front
spec:
nodeSelector:
failure-domain.beta.kubernetes.io/zone: zone1
似乎可以通过Interpod Affinity完成,你可以看到:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-server
spec:
selector:
matchLabels:
app: testApp-front
replicas: 3
template:
metadata:
labels:
app: testApp-front
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- testApp-front
topologyKey: "kubernetes.io/hostname"
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- store
topologyKey: "kubernetes.io/hostname"
containers:
- name: web-testApp-front
image: nginx:1.12-alpine
我认为你需要pod反亲和力的概念。 这是在一个集群内,以确保pod不驻留在一个工作节点上。 https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
非常简单,你可以使用deamon set来运行不同节点中的每个pod,或者其他人说你可以使用pod反关联
k8s调度程序是一个智能软件。
kubernetes调度程序将首先根据您的亲和力/反关联性/资源限制/等确定可以部署pod的所有可能节点。
之后,调度程序将找到可以部署pod的最佳节点。 如果可能的话,调度程序将自动将pod安排在单独的可用区域和单独的节点上。
PS如果您从不希望pod的2个副本位于同一节点上,请定义反关联性规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.