是否存在副本集和守护程序集之间的混合体。 我想指定我总是想要2个吊舱。但是那些豆荚必须 永远不要在同一节点上。 (我有10个节点) 有办法可以实现吗?
答案 0 :(得分:1)
在部署或副本集中,您可以使用podAffinity和podAntiaffinity。
Pod间亲和力和反亲和力使您可以基于节点上已经运行的Pod上的标签(而不是基于节点上的标签)来约束Pod可以调度哪些节点。
规则的形式为“如果该X已经运行了一个或多个符合规则Y的Pod,则该Pod应该(或者,在反亲和性的情况下不应该)在X中运行”。 Y表示为LabelSelector,带有可选的关联名称空间列表。
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginx
topologyKey: "kubernetes.io/hostname"
上面的示例nginx pod1和pod2永远不会在同一节点上调度。
在官方docs中查找更多详细信息。