每个Kubernetes节点一个Pod/作业

f0ofjuux  于 2022-12-26  发布在  Kubernetes
关注(0)|答案(1)|浏览(152)

我想定期安排kubernetes作业(使用不同的图像)
这些作业需要在支持GPU的节点上运行(1个GPU设备)
目前,如果我同时创建两个作业-将在同一节点上调度两个pod-而只有一个pod可以访问GPU设备
是否有办法配置节点/pod,以便调度程序仅在每个节点上放置一个pod,并在完成后放置下一个作业?

6kkfgxo0

6kkfgxo01#

您可以设置一个pod间的反关联性,如此处文档中所述。
吊舱间亲和性和反亲和性规则采用“如果X已经运行满足规则Y的一个或多个吊舱,则该吊舱应当(或者,在反亲和性的情况下,不应当)在X中运行”的形式,其中X是拓扑域,如节点、机架、云提供商区域或地区等,而Y是Kubernetes试图满足的规则.
与节点亲和性类似,有两种类型的Pod亲和性和反亲和性,如下所示:

  • 需要调度期间忽略执行期间
  • 首选调度期间忽略执行期间

考虑以下Pod规格:

apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: security
            operator: In
            values:
            - S1
        topologyKey: topology.kubernetes.io/zone
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: security
              operator: In
              values:
              - S2
          topologyKey: topology.kubernetes.io/zone
  containers:
  - name: with-pod-affinity
    image: registry.k8s.io/pause:2.0

相关问题