美文网首页
518.【kubernetes】kubelet 之 Pod 管理

518.【kubernetes】kubelet 之 Pod 管理

作者: 七镜 | 来源:发表于2022-12-13 05:55 被阅读0次

kubelet 监听 etcd,所有针对 pod 的操作都会被 kubelet 监听。如果发现有新的绑定到本节点的 Pod,则按照 Pod 清单的要求创建该 Pod。

如果发现本地的 Pod 需要被修改,则 kubelet 会做出对应的修改,比如在删除 Pod 中的某个容器时,会删除该容器。如果发现本地的 Pod 需要被删除,则 kubelet 会删除相应的 Pod,并删除 Pod 里的容器。

kubelet 读取监听到的信息,如果是创建和修改 Pod 任务,则做如下处理。

  1. 为该 Pod 创建一个数据目录
  2. 从 API Server 中读取该 Pod 清单
  3. 为该 Pod 挂载外部卷(External Volume)
  4. 下载 Pod 用到的 Secret
  5. 检查已经运行在节点上的 Pod,如果该 Pod 没有容器或 Pause 容器(kubernetes/pause镜像创建的容器)没有启动,则先停止 Pod 里所有容器的进程。如果在 Pod 中有需要删除的容器,则删除这些容器。
  6. 用 kubernetes/pause 镜像为每个 Pod 都创建一个容器。该 Pause 容器用于接管 Pod 中所有其他容器的网络。每创建一个新的 Pod,kubelet 都会先创建一个 Pause 容器,然后创建其他容器。kubernetes/pause 镜像大概有 200 KB,是个非常小的容器镜像。
  7. 为 Pod 中的每个容器做如下处理
  • 为容器计算一个 hash 值,然后用容器的名称去查询对应的容器的哈希值。若找到容器,且二者的哈希值不同,则停止容器的进程,并停止与之关联的 Pause 容器的进程,若二者相同,则不做任何处理。
  • 如果容器被终止,且容器没有指定的 restartPolicy(重启策略),则不做任何处理。
  • 调用 containerd 下载容器镜像,调用 containerd 运行容器。

相关文章

网友评论

      本文标题:518.【kubernetes】kubelet 之 Pod 管理

      本文链接:https://www.haomeiwen.com/subject/juvifdtx.html