摘要:Kubernetes 是现代云原生的核心,学习、和掌握它是掌握云技术的关键一步,下满我就全面详解Kubernetes以及原理@mikechen
Kubernetes 是现代云原生的核心,学习、和掌握它是掌握云技术的关键一步,下满我就全面详解Kubernetes以及原理@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Kubernetes
Kubernetes,简称: “K8S”,是一个“Google”开发的的容器编排平台,目前由云原生计算基金会(CNCF)维护。
Kubernetes ,主要用于自动化容器化应用的部署、扩展、和管理。
Kubernetes 支持跨云、或本地环境运行,成为现代微服务架构的重要基础。
如下图所示:
Kubernetes,可以结合代码管理、Docker仓库管理、容器部署、编排...等等,是构建云原生的核心技术底层。
Kubernetes工作原理
Kubernetes 采用主从架构,也就是大家经常说的“Master”和“Node”的主从架构。
如下图所示:
通过上图,你可以很清楚的看见整个Kubernetes的架构,涉及上面的:“Master”,和下面的“Node”部分。
所以,你要搞清楚“Kubernetes ”,最核心的就是要搞懂:“Master”,和“Node”是如何工作的。
首先,我们先看“Kubernetes Master”。
在 Kubernetes 的架构中,Master 控制平面 ,是整个系统的核心部分。
Maseter负责:管理、和协调集群的所有组件/和节点。
主要会包含如下组件:
API Server
API Server是“Kubernetes Master”的核心组件,是API Server 是集群的“通信中心”。
API Server ,提供 Kubernetes 集群的统一接口,支持通过 RESTful API 、与其他组件、或用户交互。
如下图所示:
如果 API Server 不可用,集群管理操作将无法进行,是核心入口,这里的关键是需要保证高可用。
API Server ,还会处理所有集群管理命令(如:创建、更新、删除资源...等等)。
Controller Manager
"Controller Manager ",负责执行 :Kubernetes 的控制循环,维护集群...的期望状态。
运行各种控制器,如下图所示:
常见控制器包括:
Replication Controller/ReplicaSet Controller:确保 Pod 副本数量、与用户定义一致;Deployment Controller:确保指定“数量”的 Pod 副本运行;Node Controller:监控节点状态,处理节点故障;Endpoint Controller:维护服务、与 Pod 的映射;Horizontal Pod Autoscaler Controller:根据负载动态调整 Pod 数量...等等Scheduler
Scheduler(调度器),决定新创建的 Pod ,应该运行在哪个节点(Node)。
以及,根据资源需求、节点状态、和调度策略选择最佳节点,也是"Master"的核心组件。
调度流程,大致如下:
首先, 监控 API Server 中的待调度 Pod;
其次,根据节点的 资源情况(比如:CPU、内存...等等)和 调度策略 计算适合的节点;
最后,将调度结果写回 API Server。
Node (工作节点)
在 Kubernetes 中,Node(工作节点) ,是实际运行应用程序、和服务的基础单元。
每个 Node ,都包含:容器运行时环境、以及多个关键组件,以支持容器化工作负载的执行和管理。
如下图所示:
工作流程,大致如下:
首先,运行工作负载
每个 Node 上运行的 Pod ,负责:托管用户的应用程序和服务。
Pod 是 Kubernetes 中的最小部署单元,通常包含一个、或多个容器。
其次,提供计算资源
Node 提供计算资源,比如:CPU、内存、存储...等,这些资源通过 Kubernetes 调度程序(Scheduler)分配给 Pod。
然后,监控和报告
Node 持续监控自身状态,比如:资源使用率、Pod 运行状态...等等,并将数据上报给控制平面。
在大规模集群中,工作节点的数量,是可以弹性扩展的。
通过这些组件协作,实现了 Kubernetes 的核心功能,比如:容器部署编排、扩展性以及自动化管理。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
来源:顺子说