2

我了解它kubelet负责获取 PodSpecs(通常来自 API 服务器)并运行 Pod。

Kubernetes 组件 > 节点组件 > kubelet

“kubelet 采用一组通过各种机制提供的 PodSpec,并确保这些 PodSpec 中描述的容器运行且健康。”

但是 API Server 如何跟踪每个 Pod 的状态(例如运行/失败)?是否kubelet定期向 API 服务器发送请求?还是 API Serverkubelet定期轮询?还是其他机制?

4

1 回答 1

7

kubelet 在节点上做所有事情。创建 pod 的典型过程如下:

  1. 默认情况下,kubelet 通过这个名为watch的“东西”连接到 api-server 。这是一种发布/订阅。因此 kubelet 将订阅“create pod”事件,并且 api-server 会在需要创建 pod 时通知它。
  2. kubelet 将获取容器运行时(docker 或 rkt)以及其他 pod 规范,并创建 pod。

注意:这里涉及更多组件,例如调度程序和控制器管理器(在您的帖子中作为各种机制提到),但我将跳过它们。

  1. kubelet 将进行必要的 liveness 和 readiness 探测,并将状态报告回 api-server。说成功!
  2. api-server 将更新 etcd(通过添加 pod 的元数据)以跟踪集群中正在发生的事情。

此时 kubelet 将负责这个 pod。如果 pod 宕机,kubelet 会报告 api-server,api-server 会下令杀死 pod,然后启动一个新的,然后再次更新 etcd 服务器。

需要指出的一点是,k8s 中的所有组件都直接与 api-server 对话。所以,控制器管理器或调度器不要说 kubelet 做什么。相反,他们对 api-server 说,而 api-server 对 kubelet 说。

于 2018-06-04T23:04:32.233 回答