runtimeclass是k8s对一种内置的全局域资源,是容器运行时,解决了集群里有哪些可用的容器运行时,让pod选择合适的容器运行时,让pod调度到安装有指定的容器运行时的节点上,统计容器运行时产生的业务运行以外的开销,还有scheduling和overhead功能。
它的核心是handler,表示一个接受创建容器请求的程序,同时也对应一个容器运行时。
runtimeclass工作流程:首先k8s-master接受到创建pod的请求,方格表示三种类型的节点,每个节点上都有label标识当前节点容器运行时,节点内会有一个或多个handler,每个handler对应一种容器运行时,根据scheduling.nodeselector,pod最终会调度到中间节点上,最终有runv handler来创建pod。
pod中引用runtimeclass非常简单,只有在runtimeclassname字段中配置好runtimeclass的名字,就可以引入了。
pod overhead使用场景:pod调度,resourcequota,kubelet pod驱逐。
注意:pod overhead会永久注入到pod内并且不可手动更改,即便是将runtimeclass删除或者更新,依然存在,pod overhead只能由runtimeclass admission自动注入,不可手动,hpa和vpa是基于容器级别指标数据做聚会,pod overhead不会对它们造成影响。