kubernetes中kubelet运行机制的示例分析

70次阅读
没有评论

共计 2580 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章给大家分享的是有关 kubernetes 中 kubelet 运行机制的示例分析的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

一:简介

在 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 配置参数

## 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=10.116.82.28

#

## 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.116.82.28

#

## location of the api-server

#KUBELET_API_SERVER= –api-servers=http://10.116.137.196:8080

#

## pod infrastructure container

#KUBELET_POD_INFRA_CONTAINER= –pod-infra-container-image=sz-pg-oam-docker-hub-001.tendcloud.com/library/pod-infrastructure:rhel7

KUBELET_POD_INFRA_CONTAINER= –pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure

#

## Add your own!

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 容器,采集并分析该节点的全面使用情况。

感谢各位的阅读!关于“kubernetes 中 kubelet 运行机制的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2580字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)