kubernetes实践之五十:kubelet运行机制分析

一:简介

在Kubernetes集群中,每个Node节点 上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程会在API SERVER上注册节点自身信息,定期向Master 节点汇报节点资源的使用情况,并通过cAdvise监控容器和节点资源。

二:节点管理

节点通过设置kubelet的启动参数“–register-node”,来决定是否向API Server注册自己,默认为true。可以通过kubelet –help查看该参数。

kubelet在启动时通过API Server注册节点信息,并定时向API Server发送节点的新信息,API Server在接收到这些消息后,将这些消息写入etcd. 通过kubelet的启动参数"--node-status-update-frequency"设置每隔多长时间向API Server报告节点状态,默认10s.

kubelet配置参数

点击(此处)折叠或打开

  1. ## kubelet (minion) config
  2. #
  3. ## The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
  4. KUBELET_ADDRESS="--address=10.116.82.28"
  5. #
  6. ## The port for the info server to serve on
  7. #KUBELET_PORT="--port=10250"
  8. #
  9. ## You may leave this blank to use the actual hostname
  10. KUBELET_HOSTNAME="--hostname-override=10.116.82.28"
  11. #
  12. ## location of the api-server
  13. #KUBELET_API_SERVER="--api-servers=http://10.116.137.196:8080"
  14. #
  15. ## pod infrastructure container
  16. #KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=sz-pg-oam-docker-hub-001.tendcloud.com/library/pod-infrastructure:rhel7"
  17. KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure"
  18. #
  19. ## Add your own!
  20. KUBELET_ARGS="--cgroup-driver=systemd --cluster-dns=10.254.0.2 --experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --require-kubeconfig --cert-dir=/etc/kubernetes/ssl --cluster-domain=cluster.local. --hairpin-mode promiscuous-bridge --serialize-image-pulls=false --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice"
三:Pod管理
1.kubelet通过API Server Client使用Watch+List的方式监听“/registry/nodes/$当前节点的名称 ”和“/registry/pods ”目录,将获取的信息同步到本地缓存中。
2.kubelet 监听etcd,所有针对Pod的操作将会被kubelet监听到。如果发现有新的绑定到本节点的Pod,则按照Pod清单的要求创建该Pod.
kubelet读取监听到的信息,则做如下处理:
a.为该Pod创建一个数据目录
b.从API Server读取该Pod清单
c.为该Pod挂载外部卷
d.下载Pod用到的Secret
e.创建pause容器
f.创建应用容器

四:容器健康检查

对Pod的健康状态检查可以通过两类探针来检查:LivenessProbe和ReadinessProbe
1.LivenessProbe探针: 用于判断容器是否存活,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针返回值永远是“Success”.

2.ReadinessProbe探针:  用于判断容器是否启动完成,可以接收请求。如果ReadinessProbe 探针检测到失败,则Pod的状态将被修改。Endpoint Controller将从Service的Endpoint中删除包括该容器所在Pod的Endpoint.

五:cAdvisor资源监控

在Kubernetes集群中,应用程序的执行情况可以在不同的级别上监测到,这些级别包括:容器,Pod,Service和整个集群。

1.Heapster项目为Kubernetes提供了一个基本的监控平台,它是集群级别的监控。

2.cAdvisor是一个开源的分析容器资源使用率和性能特性的代理工具。cAdvisor被集成到Kubernetes代码中,cAdvisor自动查找所有在其节点上的容器,自动采集CPU,内存,文件系统和网络使用的统计信息。cAdvisor通过它所在节点机的Root容器,采集并分析该节点的全面使用情况。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2155366/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28624388/viewspace-2155366/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值