明确需求
我们想让 k8s 纳入一个硬件设备,假如是 GPU,那接下来怎么管理呢 —— 答:k8s device plugin 机制
由下图其实可以简单看出几个步骤
- 将硬件设备信息注册到 k8s 中,也就是由 kubelet 管理,与 kubelet 通信
- k8s 如何知道该硬件资源的变化呢 —— ListWatch 机制,但 k8s 只知道此硬件,不明白其中原理 —— 所以需要该硬件自行开发一个 ListWatch 接口,来满足 k8s 的 ListWatch 机制
- k8s 如何分配此硬件资源给 Pod 等使用呢 —— 因为k8s 只知道此硬件,不明白其中原理 —— 所以同样有该硬件自行开发一个资源分配管理接口 Allocate,到时候进行资源的分配
注意上述其实都是,该硬件和 kebelet 打交道,因为 kubelet 负责容器的生命周期(创建、删除等)还有资源的监控,所以该硬件资源通过与 kubelet 交互,才能完成接入到 k8s 中
而 device plugin 就是 中间商,帮忙将硬件设备注册到 kubelet 中