kubenetes-kubelet组件

一、kubelet架构

kubenetes-kubelet组件_第1张图片
每个节点都运行一个kubelet进程,默认监听10250端口,kubelet作用非常重要,是节点的守护神。

  • 接收并执行 master发来的指令。
  • 管理Pod及Pod中的容器。
  • 每个kubelet进程会在API Server 上注册节点自身信息,定期向master
    节点汇报节点的资源使用情况,并通过cAdvisor监控节点和容器的资源。

二、节点管理

节点管理主要是节点自注册和节点状态更新:

  • kubelet 可以通过设置启动参数–register-node 来确定是否向API Server 注册自己;
  • 如果kubelet没有选择自注册模式,则需要用户自己配置Node资源信息,同时需要告知 kubelet集群上的API
    Server的位置;
  • kubelet 在启动时通过API Server 注册节点信息,并定时向API Server发送节点新消息,API
    Server在接收到新消息后,将信息写入etcd。

三、pod管理

kubenetes-kubelet组件_第2张图片
接收APIServer请求,由syncLoop和PodWorker处理请求调用CRI接口,PLEG完成pod状态的上报。

3.1 Pod启动流程

kubenetes-kubelet组件_第3张图片
kubelet启动pod主进程之前会先启动一个沙箱进程,用于配置网络namespace,配置pod网络。因为kubelet并不确定主进程是否是安全的,会不会异常退出,配置网络属于操作系统级的操作,比较消耗资源。举个例子:
kubenetes-kubelet组件_第4张图片
其中k8s.gcr.io/pause就是沙箱进程,是一个不消耗资源永远sleep的进程,用来配置pod网络,提供稳定的网络基座。

kubenetes-kubelet组件_第5张图片
这张图描述了CSI、CRI、CNI的关系,以及创建pod调用的先后顺序。

你可能感兴趣的:(云原生,云原生,kubernetes)