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 的端口,默认值1025010248: 对应参数
–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
├── apis
├── cadvisor
├── certificate
├── checkpointmanager
├── client
├── cloudresource
├── cm
├── config
├── configmap
├── container
├── cri
├── envvars
├── events
├── eviction
├── images
├── kubeletconfig
├── kuberuntime
├── leaky
├── lifecycle
├── logs
├── metrics
├── network
├── nodeshutdown
├── nodestatus
├── oom
├── pleg
├── pluginmanager
├── pod
├── preemption
├── prober
├── qos
├── runtimeclass
├── secret
├── server
├── stats
├── status
├── sysctl
├── token
├── types
├── util
├── volumemanager
├── winstats
├── OWNERS
├── active_deadline.go
├── active_deadline_test.go
├── doc.go
├── errors.go
├── kubelet.go
├── kubelet_getters.go
├── kubelet_getters_test.go
├── kubelet_network.go
├── kubelet_network_linux.go
├── kubelet_network_others.go
├── kubelet_network_test.go
├── kubelet_node_status.go
├── kubelet_node_status_others.go
├── kubelet_node_status_test.go
├── kubelet_node_status_windows.go
├── kubelet_pods.go
├── kubelet_pods_linux_test.go
├── kubelet_pods_test.go
├── kubelet_pods_windows_test.go
├── kubelet_resources.go
├── kubelet_resources_test.go
├── kubelet_test.go
├── kubelet_volumes.go
├── kubelet_volumes_linux_test.go
├── kubelet_volumes_test.go
├── pod_container_deletor.go
├── pod_container_deletor_test.go
├── pod_workers.go
├── pod_workers_test.go
├── reason_cache.go
├── reason_cache_test.go
├── runonce.go
├── runonce_test.go
├── runtime.go
├── userns_manager.go
├── userns_manager_test.go
└── volume_host.go主流程图

最后更新于
这有帮助吗?