内容目录
概述
kubelet可以视作node agent,它运行在k8s集群中的每个Node之中,用来将Node通过API Server注册到k8s集群中。kubelet将Node注册到k8s集群之后,kubelet的主要工作就是创建Pod,监控容器,并与API Server进行实时通信根据API Server的指令来对Pod进行变更。
kubelet在创建新Pod的时候,同时会持续监控Pod和容器的状态,并将这些信息定时同步到API Server。
综上所述, kubelet的主要职责是:
- k8s Node管理
- Pod生命周期管理
kubelet是k8s控制平台和Node之间的一个重要桥梁,之所以说是一个是因为另一个重要桥梁是kube-proxy。kubelet和kube-proxy组成了k8s Node的计算存储和网络通信的完备集合。
kubelet要保证Pod处于用户要求的状态,这些状态包括:Pod数量, 运行状态等等。
Node管理
Kubelet是Kubernetes中的一个关键组件,负责管理节点上的容器化应用。在Node管理中,kubelet具有以下功能:
- 注册节点:当新节点加入Kubernetes集群时,kubelet会自动注册该节点。它通过在启动时接收master的URL参数来自动将当前节点注册到API Server中。
- 节点状态更新:kubelet会定时向API Server发送节点状态消息,包括节点的资源使用情况、健康状态等信息。这些信息被写入etcd,用于监控和调度。
Pod生命周期管理
Kubelet是Kubernetes中的一个关键组件,负责管理容器化应用在节点上的生命周期。以下是kubelet的Pod生命周期管理的主要步骤:
- 创建Pod:当用户创建一个Pod资源对象时,Kubernetes API Server会将其存储在etcd中,并通知给kubelet进行创建。
- 调度:kubelet会根据调度策略(例如资源请求、容忍度、亲和度等)选择一个节点进行调度。
- 创建容器:调度完成后,kubelet会通过CRI(容器运行时接口)调用容器运行时,创建主容器(Main Container)和初始化容器(Init Container)。
- 启动容器:主容器和初始化容器创建完成后,kubelet会通过CRI启动这些容器。同时,还会执行容器的post start和pre stop钩子函数。
- 容器存活性检测:kubelet通过容器的存活性探测(liveness probe)和就绪性探测(readiness probe)来检查容器的运行状态,决定是否可以对外提供服务。
- 终止Pod:当用户删除Pod时,kubelet会立即将Pod置于终止状态。它会停止容器进程、删除网络、卸载目录挂载,并执行容器的finalizer。
- 清理:在删除所有与Pod相关的对象后,kubelet完成Pod的清理工作。
在整个生命周期中,Pod可能会经历挂起(Pending)、运行中(Running)、成功(Succeeded)、失败(Failed)等状态。