我有一个GKE集群v1.19,它的部署只能在GPU或CPU节点上运行。
我有两个节点池,这两个池都是抢占性的,因此节点可以不可用:
只要GPU节点可用,我希望使用GPU节点池。如果没有可用的GPU节点,我希望将这些吊舱分配给一个只有CPU的节点。
我当前部署的yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: NAME
namespace: NAMESPACE
spec:
selector:
matchLabels:
app: NAME
template:
metadata:
labels:
app: NAME
spec:
nodeSelector:
cloud.google.com/gke-preemptible: "true"
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: cloud.google.com/gke-accelerator
operator: In
values:
- nvidia-tesla-t4
containers:
- name: NAME
image: IMAGE
resources:
requests:
memory: 28.0Gi
cpu: 3000m
limits:
cpu: 4000m
nvidia.com/gpu: 1
tolerations:
- effect: NoSchedule
key: nvidia.com/gpu
operator: Exists上述yaml允许将pod分配给GPU节点,但不分配给CPU节点。如果我错了,我必须设置limits: nvidia.com/gpu: 1才能使用gpu,但这需要节点有nvidia.com/gpu,这样就不能将它分配给CPU唯一的节点。
我怎样才能做到这样的行为?
发布于 2021-10-15 02:29:59
我假设您的问题是在使用limits命令之前如何设置GPU。请检查下面的步骤和指南库本特斯与GPU。
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
使用GPU的节点自动配置\
gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \ --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute
要了解有关自动配置的更多信息,请参见自动配给页面。
有关GPU的更多指南,您可以参考此链接。
发布于 2021-10-15 10:13:42
你不能这么做。GKE使用nvidia.com/gpu和NoSchedule自动污染GPU节点。因此,如果没有公差,吊舱就不能安排在GPU节点上。(请注意,GKE会自动将公差添加到对nvidia.com/gpu设置限制的豆荚中)。
这里最好的选择是启用集群自动分词器或启用节点自动配置。至少这样,新节点将根据需要(并可用)添加到集群中。当然,可以添加的节点数量取决于您的GPU配额。
https://stackoverflow.com/questions/69571788
复制相似问题