副本集和守护程序集之间的混合

时间:2020-02-19 14:48:04

标签: kubernetes

是否存在副本集和守护程序集之间的混合体。 我想指定我总是想要2个吊舱。但是那些豆荚必须 永远不要在同一节点上。 (我有10个节点) 有办法可以实现吗?

1 个答案:

答案 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中查找更多详细信息。