Kubelet

简介

kubelet 是运行在每个 Nodo 上的主要“节点代理”。它可以使用以下之一向 apiserver 注册:hostname;一个替换 hostname 的参数;或 cloud provider 的特定逻辑。

kubelet 是基于 PodSpec 来工作的。 PodSpec 是一个描述 Pod 的 YAML 或 JSON 对象。kubelet 通过各种机制(主要通过 apiserver)获取一组 PodSpec,并确保这些 PodSpec 中描述的容器处于运行状态且健康。kubelet 不能管理不是由 Kubernetes 创建的容器。

除了来自 apiserver 的 PodSpec 之外,有两种容器 manifest 可以提供给 Kubelet。 - File:kubelet 周期性地监视此路径下的文件以进行更新。默认情况下,监视周期为 20 秒,可通过标志进行配置。 - HTTP endpoint:此端点每 20 秒监视一次(也可以使用标志配置)。

监听端口

  • 10250: 对应参数 –port ,kubelet server 的端口,默认值 10250

  • 10248: 对应参数 –healthz-port,kubelet 的本地健康检查端口,默认值 10248,设置 0 禁用

  • 10255: 对应参数 –read-only-port: kubelet 的只读端口,不需要身份验证/授权即可提供服务,默认值 10255,设置 0 禁用

主要文件

/cmd/kubelet/kubelet.go kubelet 入口文件

/cmd/kubelet/app/server.go kubelet 服务文件

/pkg/kubelet/kubelet.go kubelet 逻辑

目录结构

/cmd/kubelet

├── app
│   ├── auth.go
│   ├── init_others.go
│   ├── init_windows.go
│   ├── init_windows_test.go
│   ├── options
│   │   ├── container_runtime.go
│   │   ├── globalflags.go
│   │   ├── globalflags_linux.go
│   │   ├── globalflags_other.go
│   │   ├── globalflags_providerless.go
│   │   ├── globalflags_providers.go
│   │   ├── options.go
│   │   ├── options_test.go
│   │   ├── osflags_others.go
│   │   └── osflags_windows.go
│   ├── plugins.go
│   ├── plugins_providerless.go
│   ├── plugins_providers.go
│   ├── server.go
│   ├── server_bootstrap_test.go
│   ├── server_linux.go
│   ├── server_others.go
│   ├── server_test.go
│   ├── server_unsupported.go
│   └── server_windows.go
└── kubelet.go

/pkg/kubelet

主流程图

Kubelet

最后更新于

这有帮助吗?