首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止吊舱在GPU实例上工作?

如何防止吊舱在GPU实例上工作?
EN

Stack Overflow用户
提问于 2019-08-16 03:35:45
回答 2查看 607关注 0票数 0

我在我的项目中使用Google平台。

现在,我有了一个具有4个节点池的集群:

  • “微池”:用于管理集群的最小机器。
  • “cpu池”:为不需要GPU的进程配置cpu专用机器。
  • 2“gpu-池”:两个带有带有gpu的机器的池。

现在,我需要的是我的CPU进程永远不会在GPU机器上工作,因为它们花费了太多的时间,而在GPU机器上这样做只是在白白花钱。

我使用

kubectl run dc-1 --image={image-name} --replicas=1 --restart=Never --limits="nvidia.com/gpu=0,cpu=4000m,memory=2Gi" -- bash -c "command to execute"

现在,如果没有从以前的GPU运行中创建的“GPU-机器”,这是很好的。但是,如果有一个最近的GPU运行,这个命令将运行在那个实例上,因为它有最小的cpu和内存需求。我原以为--limits="nvidia.com/gpu=0能做到这一点,但很明显它没有做到。

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-16 03:46:34

如果要在特定实例或节点上分配吊舱,可以使用kubernetes节点选择器。

例如:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd

在这里,它将根据节点选择器(即磁盘类型)分配pod。

您还可以查看这个url以获得更多的文档:https://kubernetes.io/docs/concepts/configuration/assign-pod-node

编辑1

由于您在GCP上,您也可以使用这种方式:

代码语言:javascript
复制
nodeSelector:
        #<labelname>:value
        cloud.google.com/gke-nodepool: pool-highcpu8 (poolname)

编辑2

如果您了解affinityanity-affinity,您也可以实现它。

代码语言:javascript
复制
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/node-type
            operator: In
            values:
            - gpu

cpu:

代码语言:javascript
复制
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: resources
              operator: In
              values:
              - cpu-only
票数 1
EN

Stack Overflow用户

发布于 2019-08-16 04:40:24

这是污点和容忍的一个很好的用例。您可以使用NoSchedule污染GPU节点。这将防止在GPU节点上无法容忍这种污染的荚(甚至是系统荚)。

代码语言:javascript
复制
kubectl taint nodes gpuNode1 nodetype=gpu:NoSchedule

然后,在您想要在这些节点上运行的吊舱上,您可以添加对污染的容忍:

代码语言:javascript
复制
tolerations:
- key: "nodetype"
  operator: "Equal"
  value: "gpu"
  effect: "NoSchedule"

我不确定GCP,但在Azure的AKS上,您可以在创建集群和节点池时配置污染。

编辑:

您将希望将其与Manvar对节点选择器和/或亲和力的建议结合起来。仅仅因为你的吊舱可以容忍污染,并不意味着它一定会被安排在GPU节点上,它只会确保其他事情不会。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57518631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档