监控系统的设计 工欲善其事必先利其器,根据对一些监控产品的调研以及对监控的分层介绍、所需解决的问题,可以发现监控系统从收集到分析的流程架构:采集-存储-分析-展示-告警。
监控系统的前世今生 随着互联网的发展,监控系统也得到了发展。从最早期的网络监控、系统监控,发展到现在的业务监控、日志监控、性能监控、代码监控、全链路监控等,并在监控数据的基础上,逐步发展出了APM(应用性能管理)、AIOps(智能运维)等。
分布式系统中服务端会通过心跳机制确认客户端是否存活,在 k8s 中,kubelet 也会定时上报心跳到 apiserver,以此判断该 node 是否存活,若 node 超过一定时间没有上报心跳,其状态会被置为 NotReady,宿主上容器的状态也会被置为 Nodelost 或者 Unknown 状态。kubelet 自身会定期更新状态到 apiserver,通过参数 --node-status-update-frequency 指定上报频率,默认是 10s 上报一次,kubelet 不止上报心跳信息还会上报自身的一些数据信息。
上篇文章介绍了 kubelet 的启动流程,本篇文章主要介绍 kubelet 创建 pod 的流程。
当集群中的 node 或 pod 异常时,大部分用户会使用 kubectl 查看对应的 events,那么 events 是从何而来的?其实 k8s 中的各个组件会将运行时产生的各种事件汇报到 apiserver,对于 k8s 中的可描述资源,使用 kubectl describe 都可以看到其相关的 events,那 k8s 中又有哪几个组件都上报 events 呢?
一、概要 kubelet 是运行在每个节点上的主要的“节点代理”,每个节点都会启动 kubelet进程,用来处理 Master 节点下发到本节点的任务,按照 PodSpec 描述来管理Pod 和其中的容器(PodSpec 是用来描述一个 pod 的 YAML 或者 JSON 对象)。
Kubernetes源码kubectl kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。 kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。 kubectl -h 查看子命令列表 kubectl options 查看全局选项 kubectl –help 查看子命令的帮助 kubectl [command] [PARAMS] -o= 设置输出格式(如 json、yaml、jsonpath 等) kubectl explain [RESOURCE] 查看资源的定义
本篇文章没有接上篇继续更新 kube-controller-manager,kube-controller-manager 的源码阅读笔记也会继续更新,笔者会同时阅读多个组件的源码,阅读笔记也会按组件进行交叉更新,交叉更新的目的一是为了加深印象避免阅读完后又很快忘记,二是某些代码的功能难以理解,避免死磕,但整体目标是将每个组件的核心代码阅读完。