在Kubernetes中实现GPU亲和性调度可以通过配置Pod的nodeAffinity
来实现。nodeAffinity
允许你定义节点选择规则,以确保Pod被调度到具有特定GPU的节点上。以下是一个基本的示例,展示了如何在Pod配置中设置GPU亲和性调度。
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
containers:
- name: my-container
image: my-image
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: nvidia.com/gpu.product
operator: In
values:
- "nvidia-a100" # 指定需要nvidia a100类型的GPU
resources:
limits:
nvidia.com/gpu: 1 # 限制使用1个GPU
requests:
nvidia.com/gpu: 1 # 请求1个GPU
requiredDuringSchedulingIgnoredDuringExecution
: 这是一个硬性调度规则,表示Pod必须满足所有条件才能被调度。nodeSelectorTerms
: 定义了一组匹配条件。matchExpressions
: 定义了具体的匹配规则,这里指定了节点必须具有nvidia.com/gpu.product
标签,并且其值为nvidia-a100
。limits
: 限制了Pod可以使用的GPU数量为1个。requests
: 请求了1个GPU资源。nvidia.com/gpu.product=nvidia-a100
。通过这种方式,你可以确保需要GPU资源的Pod被调度到具备相应GPU的节点上,从而优化资源利用和提高应用性能。