调度何时应用于 pod?

When does scheduling get applied to a pod?

作为博士论文的一部分,我正在考虑使用 Kubernetes 作为测试平台来尝试调度算法。这将需要以调度程序的形式编写 Kubernetes 的扩展。让我对 Kubernetes 感到困惑的是 pod 生命周期的问题。

我了解 pod 在部署和启动之前会经历调度过程。我不明白的是,当 (1) 我们杀死一个 pod 的实例和 运行 一个新的实例时会发生什么,类似于我们杀死的那个,或者 (2) 物理节点本身变得无法 运行 我们的 pod,(3) 或者 pod 的实例被压碎了?

特别是,我试图证明或反驳我的怀疑,即在这种情况下,Kubernetes 会创建 pod 的新实例,并将它们推送到与启动期间相同的管道中,这将保证我还没有已实施的自定义调度程序被触发。这里没有使用会跳过调度过程的快捷方式。

一个参考。到相关规范。将不胜感激。

提前致谢!

(1) ... run a new one, similar to the one we killed

一个新的 pod 将被一个调度器调度到一个节点(你可以有一个自定义调度器)。

(2) the physical node itself becomes unable to run our pod

如果 pod 是托管的(例如,由 Deployment 创建),最终将创建一个新的 pod 并将其调度到另一个节点。但是如果 pod 只是一个 stand-alone pod,它就被终止了。

(3) or the instance of the pod crashes?

与上述 (2) 相同,如果实例崩溃。 如果只是 Pod 崩溃,它将在同一节点上重新启动(不是 re-scheduled)。