Kubernetes
应用部署运营模式变迁
1.物理单机:单机为基础计算单元对计算机资源进行管理和协调控制。程序直接在物理机上构建,部署,运行。
2.虚拟机:基础单元变为了VM,服务器端应用的构建,部署和运行逐渐迁移到虚拟机的VM上了。IssS(基础设施即服务)实现了自助的,按需租用的以VM为基本计算单元的计算资源。
3.容器化(Docker):形成一种标准镜像格式。与VM相比,容器具有开发交付流程操作对象同步,执行更为高效,资源占用更为集约等优势,
4.云原生模式:云原生逐渐成为一种应用云化开发,部署和运行的主流方式
基础前提:应用的容器化和微服务化。容器作为应用部署运行和管理的基本单元。
Kubernetes定义
Kubernetes是以Google内部容器编排管理平台Borg为原型的开源实现。
一个容器编排管理平台,一个微服务支撑平台,一个可移植的“云平台”。
容器编排管理平台
Kubernetes作为容器管理平台提供:
- 以Pod(容器组)为基本的编排和调度单元以及声明式的对象配置模型(控制器,configmap,secret等)
- 资源配额与分配管理
- 健康检查,自愈,伸缩与滚动升级
Kubernetes架构与组件:
Kubernetes由一系列的节点组成,每个节点都包括node组件,而包括了master组件的节点称为master node,其余节点都称为node/节点(真正运行工作负载的节点)。
node通过node节点中的kubelet与master组件交互,维护该node上的pod的生命周期。
etcd是高效稳定的数据库,存储着所有集群中的对象和状态。
kubectl:超级命令行工具,实现所有的集群管理和控制功能。
Master组件
kubernetetes集群大脑,控制平面。
1.所有集群的控制命令都传递给Master组件并在其上执行。
2.每个kubernetes集群至少有一套master组件。
API Server:集群控制的唯一入口,是Kubernetes集群控制RESTful API的核心组件;集群内各个组件之间数据交互和通信的中枢;提供了集群控制的安全机制。
ControllerManager:
集群内各种资源controller的核心管理者;针对每种具体的资源都有相应的controller;保证其下管理的每个controller所对应的资源始终处于"期望状态"。
Node组件
Node节点是集群中真正的工作负载节点。
集群由多个Node共同承担工作负载,Pod被分配到某个具体的Node上执行。
kubelet:
位于集群中每个Node上的非容器形式的服务进程组件,Master和Node之间的桥梁;
处理Master下发到本Node上的Pod创建,启停等管理任务;向API Server注册node信息;
监控本Node上容器和节点资源情况,并定期向Master汇报节点资源占用情况。
Kube-proxy:运行在每个Node上
Service抽象概念的实现,将到Service的请求按策略(负载均衡)算法分发到后端的Pod上。
Pod:
集群调度基本单元
一个有特定关系的容器集合
1.Pod 是集群中可以创建和部署的最小且最简的Kubernetes对象单元
2.Pod也是一种封装。它封装了应用容器,存储资源,独立的网络IP以及决定容器如何运行的策略选项。
3.每个pod中预置一个Pause容器,其名字空间,IPC资源,网络和存储资源被Pod内其他容器共享。Pod中所有容器紧密协作,并且作为一个整体被管理,调度和运行。