Docker容器Golang 开发者Python 运维

kubelet 架构浅析

2018-12-16  本文已影响2人  田飞雨

一、概要

kubelet 是运行在每个节点上的主要的“节点代理”,每个节点都会启动 kubelet进程,用来处理 Master 节点下发到本节点的任务,按照 PodSpec 描述来管理Pod 和其中的容器(PodSpec 是用来描述一个 pod 的 YAML 或者 JSON 对象)。

kubelet 通过各种机制(主要通过 apiserver )获取一组 PodSpec 并保证在这些 PodSpec 中描述的容器健康运行。

二、kubelet 的主要功能

1、kubelet 默认监听四个端口,分别为 10250 、10255、10248、4194。

LISTEN     0      128          *:10250                    *:*                   users:(("kubelet",pid=48500,fd=28))
LISTEN     0      128          *:10255                    *:*                   users:(("kubelet",pid=48500,fd=26))
LISTEN     0      128          *:4194                     *:*                   users:(("kubelet",pid=48500,fd=13))
LISTEN     0      128    127.0.0.1:10248                    *:*                   users:(("kubelet",pid=48500,fd=23))
  $ curl http://127.0.0.1:10248/healthz
  ok
  $ curl  http://127.0.0.1:4194/metrics
  //  获取 pod 的接口,与 apiserver 的 
  // http://127.0.0.1:8080/api/v1/pods?fieldSelector=spec.nodeName=  接口类似
  $ curl  http://127.0.0.1:10255/pods

  // 节点信息接口,提供磁盘、网络、CPU、内存等信息
  $ curl http://127.0.0.1:10255/spec/

2、kubelet 主要功能:

三、kubelet 组件中的模块

kubelet 组件中的模块

上图展示了 kubelet 组件中的模块以及模块间的划分。

在 v1.12 中,kubelet 组件有18个 manager:

certificateManager
cgroupManager
containerManager
cpuManager
nodeContainerManager
configmapManager
containerReferenceManager
evictionManager
nvidiaGpuManager
imageGCManager
kuberuntimeManager
hostportManager
podManager
proberManager
secretManager
statusManager
volumeManager   
tokenManager

其中比较重要的模块后面会进行一一分析。

参考:
微软资深工程师详解 K8S 容器运行时
kubernetes 简介: kubelet 和 pod
Kubelet 组件解析

上一篇下一篇

猜你喜欢

热点阅读