K8s 是什么? 基本元件、核心功能、4 大优点一次看!
K8s 解决了什么问题?
介绍 K8s 前,我们应先了解它被用来解决什么问题。
K8s 旨在帮助开发者构建大型服务时,有效管理成百上千台主机上容器间的通讯。
K8s 尚未问世前,想通过 Docker 快速启动由容器组成的微服务,可以在单一服务器上使用 Docker Compose 。 开发者只需写出一份yaml文件,将参数设置好后直接执行设置文件,就能启动或终止一组相依的服务。
这虽然有效降低了测试和部署的难度,但 Docker Compose 的运行范围受限于单一主机。 在面对需要跨越多台主机协同工作的大规模服务时,就显得力不从心。 K8s 的容器自动化部署、扩展功能也就此展露头角,成为大规模管理容器通讯的最佳解决方案。
K8s 是什么?
K8s 是一种容器资源调度平台,能够将部署流程自动化、扩展并管理不同容器间的工作负载。 它的构想理念是「Automated container deployment, scaling, and management」,意即通过自动化功能提升应用程序的可靠性和减轻维运负担,让开发人员专注于软件开发任务。
K8s 的微服务管理群集,能够达成 Docker Compose 的所有功能,例如:启动容器,管理网络以及容器间的通讯。 除此之外,它还能将多个 Container 分派到多台主机上,并监控每个 Container 的运行状态。
如果 K8s 检测到某个 Container 或 Pod 故障,它会启动 Replica Set 来确保服务持续运行。 除了能够监控节点状态,K8s 的自动扩展功能(Auto Scaling)可以帮助开发团队自动调整 K8s 的节点数量来配合开发和运营时所需的资源用量。
在部署方面,K8s 的容器自动部署 (Automated deployment) 功能让用户能通过一个描述状态的文件(通常是 yaml 格式)指定服务所需的容器和设置,让 K8s 根据这份文件建立所需的资源或配置。
K8s 的架构和工作流程
下图为一个 K8s 平台的 Cluster(集群),K8s Cluster [1] 中的成员统称为 Node,这些 Node 会依照其工作角色,被区分成 Worker 或 Master。
我们能将 Worker Node 想象成人体的躯干,并将 Master Node 想象成人体的大脑,负责发号命令。
- 图中右边为 Worker Node,通常会被配置较多的运算资源,因为它们要负责成百上千的应用程序。
- 图中左边的为 Master Node。 Master 上面执行的管理程序叫做 Control Plane,它们负责整个 Cluster 的日程安排和状态维护。
- Worker Node 里运行着数个 Pod[2],Pod 是 K8s 里运行和部署的基本单位,而一个 Pod 内允许多个 Container 并存。 Kubernetes 通过 Pod 来包装管理 Container,增加调度部署的弹性。
K8s 两大基本元件
元件一、Master Node(Control Plane)
Control plane 又叫控制平台,是 K8s 的运作的指挥中心,负责下达指挥命令。 例如: 容器日程日程(Scheduling Containers)、服务管理(Managing Services)和响应API请求(Serving API Re