创建和删除 pod 的步骤

Steps of creating and deleting a pod

我正在研究kubernetes的主要组件。 我暂时对创建(删除)一个 pod 的概念感到困惑。在许多图表或图形中,pods 都描绘在工作节点内部,因此我确信它们是直接在工作节点中创建的对象。

为了深入了解这个概念,我发现一些页面将 pod 视为 API 服务器中的一个简单占位符。

在此引用 link 中,据说在第一点创建了 pod,在第四点中 pod 与来自 API 服务器的节点相关联。
在此参考文献中 link 据说 "a new Pod object is created on API server but is not bound to any node."
在这个参考 link 中说 "A Pod has one container that is a placeholder generated by the Kubernetes API"

这一切让我觉得pod实际上并不是在工作节点中创建的。 有人可以给我一个解释来为我澄清这个想法吗?

简单来说运行ning pod的过程如下:

  1. 用户发出 API 请求在命名空间中创建 pod。
  2. API 服务器验证请求,确保用户具有在给定命名空间中创建 pod 的必要授权,并且该请求符合 PodSpec。
  3. 如果请求有效API 服务器在其 Etcd 数据库中创建 API 种类 "Pod" 的对象。
  4. Kube-scheduler watches Pods 发现有新的 Pod 对象。然后它会评估 Pod 的资源、亲和性规则、nodeSelectors、容忍度等,并最终决定 pod 应该 运行 哪个节点。如果由于缺乏资源或其他限制而没有可用的节点 - Pod 保持在 Pending 状态。 Kube-scheduler 定期重试未决 pods 的调度决策。
  5. Pod 调度到节点后 kube-scheduler 将作业传递给选定节点上的 kubelet。
  6. 然后 Kubelet 负责实际启动 pod。

@Vasily Angapov 对 pod 的创建和调度有很好的解释,但我认为添加一些关于 Pods 和容器实际是什么的上下文也很重要 - 如果您愿意要阅读更多相关信息,您可以找到很好的附加信息 here

本质上 Pods 已创建,稍后将按计划进行。所以它们不是在工作节点上创建的,而是在节点上 运行 并且它们被认为是易于替换的而不是持久的实体。因此,每当他们发生某些事情导致他们终止或删除时,由于 Vasilys 回答中提到的原因,他们可能会在不同的节点上再次启动。

更多信息here