簡體   English   中英

kubernetes調度昂貴的資源

[英]kubernetes scheduling for expensive resources

我們有一個Kubernetes集群。

現在,我們想用GPU節點擴展它(因此,它將是Kubernetes集群中唯一具有GPU的節點)。

我們希望避免Kubernetes在這些節點上調度Pod,除非它們需要GPU。

並非我們所有的管道都可以使用GPU。 絕對多數仍然只占用大量CPU。

具有GPU的服務器可能非常昂貴(例如,Nvidia DGX可能高達每台服務器$ 150 / k)。

如果我們僅將DGX節點添加到Kubernetes集群中,那么Kubernetes也會在那里安排非GPU工作負載,這會浪費資源(例如,其他稍后安排的作業確實需要GPU,那里可能還有其他非GPU資源像CPU和內存一樣用盡,因此他們將不得不等待非GPU作業/容器完成)。

有沒有一種方法可以在Kubernetes中自定義GPU資源調度,以便僅在需要GPU的昂貴節點上調度Pod? 如果沒有,他們可能不得不等待其他非GPU資源的可用性,例如非GPU服務器上的CPU和內存...

謝謝。

您可以為此使用標簽和標簽選擇器。 kubernates文檔

更新:示例

apiVersion: v1
kind: Pod
metadata:
  name: with-gpu-antiAffinity
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: resources
              operator: In
              values:
              - cpu-only

為節點使用標簽和標簽選擇器是正確的。 但是您需要在NodeAffinity上使用NodeAffinity

像這樣:

apiVersion: v1
kind: Pod
metadata:
  name: run-with-gpu
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/node-type
            operator: In
            values:
            - gpu
  containers:
  - name: your-gpu-workload
    image: mygpuimage

另外,將標簽粘貼到您的GPU節點上:

$ kubectl label nodes <node-name> kubernetes.io/node-type=gpu

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM