而在 Kubernetes 中,默认的调度策略有如下三种。
第一种类型,叫作 GeneralPredicates。
顾名思义,这一组过滤规则,负责的是最基础的调度策略。比如,PodFitsResources 计算
的就是宿主机的 CPU 和内存资源等是否够用。
当然,我在前面已经提到过,PodFitsResources 检查的只是 Pod 的 requests 字段。需要
注意的是,Kubernetes 的调度器并没有为 GPU 等硬件资源定义具体的资源类型,而是统
一用一种名叫 Extended Resource 的、Key-Value 格式的扩展字段来描述的。比如下面这
个例子:
可以看到,我们这个 Pod 通过alpha.kubernetes.io/nvidia-gpu=2这样的定义方
式,声明使用了两个 NVIDIA 类型的 GPU。
而在 PodFitsResources 里面,调度器其实并不知道这个字段 Key 的含义是 GPU,而是直
接使用后面的 Value 进行计算。当然,在 Node 的 Capacity 字段里,你也得相应地加上
这台宿主机上 GPU 的总数,比如:alpha.kubernetes.io/nvidia-gpu=4。这些流
程,我在后面讲解 Device Plugin 的时候会详细介绍到。
而 PodFitsHost 检查的是,宿主机的名字是否跟 Pod 的 spec.nodeName 一致。
1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Pod
metadata:
name: extended-resource-demo
spec:
containers:
- name: extended-resource-demo-ctr
image: nginx
resources:
requests:
alpha.kubernetes.io/nvidia-gpu: 2
limits:
alpha.kubernetes.io/nvidia-gpu: 2
文档被以下合辑收录
评论