kubernetes的Kubelet
1. kubelet简介
在kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源。可以把kubelet理解成【Server-Agent】架构中的agent,是Node上的pod管家。
更多kubelet配置参数信息可参考kubelet –help
2. 节点管理
节点通过设置kubelet的启动参数“–register-node”,来决定是否向API Server注册自己,默认为true。可以通过kubelet –help或者查看kubernetes源码【cmd/kubelet/app/server.go中】来查看该参数。
kubelet的配置文件
[root@216 ~]# cat /etc/kubernetes/kubelet
###
# kubernetes kubelet (minion) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=127.0.0.1"
# The port for the info server to serve on
# KUBELET_PORT="--port=10250"
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname_override=10.8.216.26"
# location of the api-server
KUBELET_API_SERVER="--api-servers=http://10.8.216.25:8080 --kubeconfig=/etc/kubernetes/kubeconfig"
# Add your own!
KUBELET_ARGS="--pod-infra-container-image=registry.wae.haplat.net/kube-system/pause:0.8.0 --docker-exec-handler=nsenter"
默认配置文件在/etc/kubernetes/kubelet中,其中
- –api-servers:用来配置Master节点的IP和端口。
- –kubeconfig:用来配置kubeconfig的路径,kubeconfig文件常用来指定证书。
- –hostname-override:用来配置该节点在集群中显示的主机名。
- –node-status-update-frequency:配置kubelet向Master心跳上报的频率,默认为10s。
3. Pod管理
kubelet有几种方式获取自身Node上所需要运行的Pod清单。但本文只讨论通过API Server监听etcd目录,同步Pod列表的方式。
kubelet通过API Server Client使用WatchAndList的方式监听etcd中/registry/nodes/${当前节点名称}和/registry/pods的目录,将获取的信息同步到本地缓存中。
kubelet监听etcd,执行对Pod的操作,对容器的操作则是通过Docker Client执行,例如启动删除容器等。
kubelet创建和修改Pod流程:
- 为该Pod创建一个数据目录。
- 从API Server读取该Pod清单。
- 为该Pod挂载外部卷(External Volume)
- 下载Pod用到的Secret。
- 检查运行的Pod,执行Pod中未完成的任务。
- 先创建一个Pause容器,该容器接管Pod的网络,再创建其他容器。
- Pod中容器的处理流程:
1)比较容器hash值并做相应处理。
2)如果容器被终止了且没有指定重启策略,则不做任何处理。
3)调用Docker Client下载容器镜像,调用Docker Client运行容器。
4. 容器健康检查
Pod通过探针的方式来检查容器的健康状态。
5. cAdvisor资源监控
kubelet通过cAdvisor获取本节点信息及容器的数据。cAdvisor为谷歌开源的容器资源分析工具,默认集成到kubernetes中。
cAdvisor自动采集CPU,内存,文件系统,网络使用情况,容器中运行的进程,默认端口为4194。可以通过Node IP+Port访问。
kubernetes的Kubelet的更多相关文章
- kubernetes之kubelet运行机制分析
kubernetes集群中,每个Node节点工作节点上都会启动一个kubelet服务进程.用于处理master节点下发到本节点的任务,管理pod和pod中的容器.每个kubelet进程都会在API S ...
- kubernetes 之kubelet客户端证书过期问题处理 KubeClientCertificateExpiration apiserver (monitoring/k8s warning) Kubernetes API certificate is expiring in less than 7 days.
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4gAAAKMCAYAAAAZj+XuAAABfGlDQ1BJQ0MgUHJvZmlsZQAAKJFjYG ...
- kubernetes下kubelet无法启动
错误如下: 09:58:45 kubernetes-node01 kubelet[6248]: F0124 09:58:45.902571 6248 server.go:265] failed to ...
- 高可用Kubernetes集群-9. 部署kubelet
十一.部署kubelet 接下来两个章节是部署Kube-Node相关的服务,包含:kubelet,kube-proxy. 1. TLS bootstrap用户授权 # kubelet采用TLS Boo ...
- K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署
摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...
- 二进制安装kubernetes(五) kubelet组件安装
概述资料地址:https://blog.csdn.net/bbwangj/article/details/81904350 Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kube ...
- kubernetes实践之一:kubernetes二进制包安装
kubernetes二进制部署 1.环境规划 软件 版本 Linux操作系统 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18 ...
- Centos7 二进制安装 Kubernetes 1.13
目录 1.目录 1.1.什么是 Kubernetes? 1.2.Kubernetes 有哪些优势? 2.环境准备 2.1.网络配置 2.2.更改 HOSTNAME 2.3.配置ssh免密码登录登录 2 ...
- kubernetes 部署
kubernetes 部署(Centos 7) 一个或者多个兼容 deb 或者 rpm 软件包的操作系统,比如 Ubuntu 或者 CentOS 每台机器 2 GB 以上的内存,内存不足时应用会受限制 ...
随机推荐
- 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
实验现象: 核心代码: int main(void) { system_clock.initialize(); //ϵͳʱÖÓ³õʼ»¯ led.initialize(); //LED³õʼ ...
- SwingWorker
Swing应用程序员常见的错误是误用Swing事件调度线程(Event DispatchThread,EDT).他们要么从非UI线程访问UI组件:要么不考虑事件执行顺序:要么不使用独立任务线程而在ED ...
- Android自动化测试之Monkeyrunner从零开始
最近由于公司在组织一个Free CoDE的项目,也就是由大家自己选择研究方向来做一些自己感兴趣的研究.由于之前我学过一点点关于android的东西,并且目前android开发方兴未艾如火如荼,但自动化 ...
- TCP/IP模型及OSI七层参考模型各层的功能和主要协议
注:网络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,而工业标准TCP/IP模型有四层.后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层. 1.TC ...
- No service of type Factory<LoggingManagerInternal> available in ProjectScopeService
导入GitHub上下载的项目时报错 No service of type Factory<LoggingManagerInternal> available in ProjectScope ...
- C# 验证给定的字符串形式的日期是否合法
用于验证日期的有效性,对于用户输入的不规则日期也作了简单处理,比如用户输入了“今天”,则代码会认为用户要返回的是今天的日期,另外可以对纯数字的日期进行解析,比如:20130906 /// <su ...
- Service 中的 onStart 和 onStartCommand
在自定义的service中,写了onStart和onStartCommand, public class HttpWebService extends Service { @Override publ ...
- [UI] 04 - Bootstrap: layout & navigation
前言 一.资源 From: http://www.imooc.com/code/2881 Ref: http://www.runoob.com/try/bootstrap/layoutit/[拖拽布局 ...
- jenkins 部署问题
1. 怀疑 jenkins 没有拉到最新的包解决:清除 jenkins 工作空间 2. jenkins 自动构建时, start.sh 脚本已经执行成功,但是应用总是启动后自动退出了进程没有起来,从 ...
- swagger netframework webapi
参考:https://blog.csdn.net/wjk343977868/article/details/47086137