Docker 在不同的节点上运行两个kubernetes吊舱
有没有办法告诉Kubernetes永远不要在同一个节点上运行两个POD,例如我有两个POD副本,我希望它们始终分布在Docker 在不同的节点上运行两个kubernetes吊舱,docker,kubernetes,high-availability,Docker,Kubernetes,High Availability,有没有办法告诉Kubernetes永远不要在同一个节点上运行两个POD,例如我有两个POD副本,我希望它们始终分布在zone1/zone2上,并且永远不要在同一个区域中 apiVersion: app/v1 kind: Deployment metadata: name: testApp labels: app: testApp-front namespace: spec: replicas: 2 selector: matchLabels: a
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不驻留在一个工作节点上。
非常简单您可以使用deamon set运行不同节点中的每个pod,或者正如其他人所说,您可以使用pod anti-affinityk8s调度程序是一款智能软件
如果您不希望pod的两个副本位于同一节点上,请定义反关联规则。您可以创建两个
部署
对象吗?每个节点都使用不同的节点选择器,但我更喜欢让kubernetes动态管理pods位置的调度