当前位置:网站首页 > C++编程 > 正文

kubelet组件功能(kubelet config)



简单地说,kubelet的主要功能就是定时从某个地方获取节点上 pod/container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态。

集群状态下,kubelet 会从 master 上读取信息,但其实 kubelet 还可以从其他地方获取节点的 pod 信息。目前 kubelet 支持三种数据源:

kubelet architecture

  1. 本地文件
  2. 通过 url 从网络上某个地址来获取信息
  3. API Server:从 kubernetes master 节点获取信息

从管理的对象来说,kubelet 目前支持docker和rkt,默认情况下使用的 docker。

在 kubernetes 的设计中,最基本的管理单位是 pod,而不是 container。pod 是 kubernetes 在容器上的一层封装,由一组运行在同一主机的一个或者多个容器组成。如果把容器比喻成传统机器上的一个进程(它可以执行任务,对外提供某种功能),那么 pod 可以类比为传统的主机:它包含了多个容器,为它们提供共享的一些资源。

之所以费功夫提供这一层封装,主要是因为容器推荐的用法是里面只运行一个进程,而一般情况下某个应用都由多个组件构成的。

pod 中所有的容器最大的特性也是最大的好处就是共享了很多资源,比如网络空间。pod 下所有容器共享网络和端口空间,也就是它们之间可以通过localhost访问和通信,对外的通信方式也是一样的,省去了很多容器通信的麻烦。

除了网络之外,定义在 pod 里的 volume 也可以 mount 到多个容器里,以实现共享的目的。

最后,定义在 pod 的资源限制(比如 CPU 和 Memory) 也是所有容器共享的。

创建了容器之后,kubelet 还要查看容器是否正常运行,如果容器运行出错,就要根据设置的重启策略进行处理。检查容器是否健康主要有两种方式:在容器中执行命令和通过 HTTP 访问预定义的 endpoint。

先来说说执行命令的方式,简单来说就是在容器中执行某个 shell 命令,根据它的 exit code 来判断容器是否正常工作:

另外一种就是 HTTP 的方式,通过向某个 url 路径发送 HTTP GET 请求,根据 response code 判断容器是否正常工作:

不管用什么方式,如果检测到容器不健康,kubelet 会删除该容器,并根据容器的重启策略进行处理(比如重启,或者什么都不做)。

kubelet 还有一个重要的责任,就是监控所在节点的资源使用情况,并定时向 master 报告。知道整个集群所有节点的资源情况,对于 pod 的调度和正常运行至关重要。

kubelet 使用cAdvisor进行资源使用率的监控。cAdvisor 是 google 开源的分析容器资源使用和性能特性的工具,在 kubernetes 项目中被集成到 kubelet 里,无需额外配置。默认情况下,你可以在http://<host_ip>:4194地址看到 cAdvisor 的管理界面。

Analyzes resource usage and performance characteristics of running containers.

除了系统使用的 CPU,Memory,存储和网络之外,cAdvisor 还记录了每个容器使用的上述资源情况。

对于 kubelet 的配置,基本上都可以通过命令行启动时候的参数进行控制。因为 kubernetes 处于快速开发过程中,参数也可能会发生变化,这里给出1.4版本一些重要的参数含义:

参数 解释 默认值 –address kubelet 服务监听的地址 0.0.0.0 –port kubelet 服务监听的端口 10250 –read-only-port 只读端口,可以不用验证和授权机制,直接访问 10255 –allow-privileged 是否允许容器运行在 privileged 模式 false –api-servers 以逗号分割的 API Server 地址,用于和集群中数据交互 [] –cadvisor-port 当前节点 cadvisor 运行的端口 4194 –config 本地 manifest 文件的路径或者目录 ”” –file-check-frequency 轮询本地 manifest 文件的时间间隔 20s –container-runtime 后端容器 runtime,支持 docker 和 rkt docker –enable-server 是否启动 kubelet HTTP server true –healthz-bind-address 健康检查服务绑定的地址,设置成 0.0.0.0 可以监听在所有网络接口 127.0.0.1 –healthz-port 健康检查服务的端口 10248 –hostname-override 指定 hostname,如果非空会使用这个值作为节点在集群中的标识 ”” –log-dir 日志文件,如果非空,会把 log 写到该文件 ”” –logtostderr 是否打印 log 到终端 true –max-open-files 允许 kubelet 打开文件的最大值 –max-pods 允许 kubelet 运行 pod 的最大值 110 –pod-infra-container-image 基础镜像地址,每个 pod 最先启动的容器,会配置共享的网络 gcr.io/google_containers/pause-amd64:3.0 –root-dir kubelet 保存数据的目录 /var/lib/kubelet –runonce 从本地 manifest 或者 URL 指定的 manifest 读取并运行结束就退出,和--api-servers、--enable-server参数不兼容 –v 日志 level 0

在这篇教程中,我们会单独运行 kubelet,选择从本地目录中读取 pod manifest 信息去启动 pod。[Unit]

到此这篇kubelet组件功能(kubelet config)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • conda删除虚拟环境代码(conda虚拟环境列表)2026-03-08 23:36:11
  • ubuntu下安装qt(ubuntu下安装gcc详解)2026-03-08 23:36:11
  • upc-a和upc-e有什么区别(upc和asin区别)2026-03-08 23:36:11
  • kubelet作用(kubelet csi)2026-03-08 23:36:11
  • tcp工具下载(tcp工具包)2026-03-08 23:36:11
  • 柯美c7000代码大全(柯美c7000代码大全C-D0E1)2026-03-08 23:36:11
  • cond怎么读音发音(conduct怎么读音发音)2026-03-08 23:36:11
  • msvcp140.dll是干什么用的(msvcp140. dll)2026-03-08 23:36:11
  • can报文解析工具(can报文解析工具源码)2026-03-08 23:36:11
  • c++合并数组(c++怎么合并数组)2026-03-08 23:36:11
  • 全屏图片