前言
随着kubernetes的生态不断完善,它的入门门槛也越来越低。越来越多的企业也开始进行容器化改造。作为容器化改造的主力,如果只是凭借已有的开源工具对其搭建部署使用,那是远远不够的。毕竟是应用于生产的架构,如果连运维人员自己都无法把控,那谁来为线上系统的稳定负责呢。所以,学习k8s不仅仅要知道怎么用好,还要懂得其运行原理,架构。出现问题时能够及时溯源,解决问题。
今天就跟大家分享一下我对k8s架构的理解,欢迎大家拍砖。
架构
kubernetes是用于容器集群管理的平台。既然是管理集群,那么就存在管理端与被管理端,在k8s体系架构中,我们称管理端为管理节点,整个集群由一个master负责管理和控制集群节点。被管理端称为计算节点。架构图如下(借用网上的图):
如图所示,我们通常通过kubectl
对 k8s 进行操作,它通过apiserver
去调用各个进程完成对Node的部署和控制。
简易流程说明
1、kubectl通过Apiserver 创建pod
2、Scheduler将调度的Pod绑定到Node,并将绑定信息写入etcd
3、Controller manager包含了8个Controller,分别对应副本,节点,资源,命名空间等。
4、Schduler调度到node 的pod由kubelet负责维护,kubelet进程也会在APIServer上注册Node信息,定期向Master汇报Node信息,并通过cAdvisor监控容器和节点资源。
API架构
APIServer的架构从上到下分为四层:
- API层:主要以REST方