采用微服务架构后,随着系统的发展,要管理的微服务应用会越来越多,这时候就需要一套机制管理每个服务的生命周期(部署、应用、更新、回收等)以及众多服务的编排和规划(在哪台机器部署,占用多少资源等)。
kubernetes把可用于部署服务的物理机器整合起来,抽象成一个部署平台,使得无论有多少再机器在底层支撑,在开发人员看来都好像是在一台机器上部署。
kubernetes的硬件被分成管理节点和工作节点。管理节点用于控制和管理整个系统,工作节点用于运行实际部署的应用。
管理节点主要包括四部分组件:
- Kubernetes API:用户和系统内的其他组件都通过API通信
- Scheduler:决定应用部署在哪台工作节点上
- Controller Manager:处理系统层级的事件,比如复制一个应用、回收失败的应用等
- etcd:分布式数据存储,用于记录系统的配置等信息
工作节点中包含以下组件: - 容器
- Kuberlet:和管理节点的Kubernetes API通信,管理所在工作节点中的容器
- Kubernetes Service Proxy / Kube-proxy:代理组件之间的通信