[TOC]
简要介绍
发展历史
公有云类型说明
基础设施及服务 (IaaS)
平台及服务(PaaS)
软件即服务(SaaS)
部署时代变迁
传统部署时代 (早期传统IT企业、单机部署、资源利用率较低)
虚拟化部署时代 (近现代IT企业使用较多)
容器化部署时代 (现代企业从传统企业向数据信息化建设转型)
资源管理器对比
Apache MESOS 分布式的资源管理框架 (早期)
Docker Swarm Docker官方容器编排项目 (中期)
Borg(博格) Google的10年的容器化基础架构它是Kubernetes前身 (后期-现在)
K8S 简要说明
Kubernetes 介绍
定义
含义
完成工作 (快速部署、迁移、运行分布式的应用、扩缩容、故障迁移恢复)
设计理念(微服务架构:一切以服务为中心,一切围绕服务运转)
Kubernetes 特性
Pod 容器、存储编排
服务发现和负载均衡
自动发布和回滚
故障迁移
密钥及配置管理
安全角色权限绑定
Kubernetes 不是什么
不限制应用程序的类型:广泛支持不同类型的工作负载
不部署源码、不编译或构建应用程序(只要镜像)
不提供应用程序级服务
不提供或者限定配置语言
不提供或限定任何机器的配置、维护、管理或自愈的系统
不限定日志、监控、报警的解决方案
Kubernetes 优缺点
优点
缺点
Kubernetes 版本号
一般 Kubernetes 项目会维护最近的三个小版本分支
系统架构
Borg 结构说明
BorgMaster : 各组件的请求访问入口
Borglet : 工作节点实时与Paxos联系
Persistent Store : Paxos 它是Google的一个键值对数据库
Scheduler : 调度器将任务调度的数据写入Persistent Store(Paxos)
Borgcfg(Config File), Command-line Tools, Web Browsers : 提供三种访问方式;
K8S 结构说明
Kubernetes Master - 主节点
Kube-APIServer : 各组件的请求访问入口
Controller Manager :资源对象的控制器管理中心
Kube-Shecduler : 任务调度选择合适的节点进行分配任务
ETCD : 一致性的、可信赖的(自身支持集群化)的分布式(扩容缩方便)键值对存储服务数据库
Kubernetes Nodes - 工作节点
Kubelet :通过CRI与容器引擎通信实现容器的声明周期管理,同时与Master节点密切协作,实现集群管理的基本功能;
Kube-Proxy :实现SVC负责写入规则至 IPtables、IPVS 实现服务映射访问以及负载均衡
Cloud :共有云、私有云 (访问它的组件是Cloud-Controller-Manager)
常用插件
CoreDNS :它为 Kubernetes 服务提供 DNS 记录 便于集群中的SVC创建一个域名IP的对应关系解析;
Metrics Server :集群各项性能指标采集
Prometheus : 提供K8S集群的监控与预警
ELK / EFK :提供 K8S 集群日志统一分析接入平台并可以以图表的形式展现数据
Federation :提供一个可以跨集群中心多K8S统一管理功能
Ingress Controller :提供一个实现七层代理的前端代理,例如Ingress-Nginx 、 Ingress-traefik;
Dashboard :提供了 Web UI 方式访问 k8s 集群,并能管理在集群中运行的应用程序
ETCD Storage 扩充 说明
版本 (V3 、V2)
组件
HTTP SERVER : 与K8S一样也是采用HTTP协议进行服务请求提交入口
Raft : 实时读写的信息
WAL : 预写日志
Entry : 实体信息
Snapshot : 快照信息(按照一定的时间将某个时间节点的大版本与其后的增量子版本进行整合备份便于后期数据恢复)
Store : 将数据存入到本地存储中进行数据的持久化
Docker Engine : 负责本机容器创建和管理工作
基础概念
节点
Master : 集群的控制节点负责整个集群的管理和控制;
Node :集群的工作(负载)节点负责完成Master分配的工作负载;
Pod
简单介绍
定义:Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元;
特征:通常运行在Node节点,它类似用于特定应用的逻辑主机其中可包含一个或多个容器, 注意内部服务端口不能重叠;
实现:每个Pod都有一个特殊的被称为根容器的Pause容器;
简单分类
自主式 Pod : 被Delete后将不会被重新构建
管理器管理 Pod :被Delete后将会根据期望值数量进行重新构建;
ReplicationController : 简称 RC,确保容器应用的副本数始终保持在用户定义的副本数(`期望值`)
ReplicaSet : 简称 RS,它与RC没有本质上的不同由于其支持标签(Labels)所以在新的K8S版本建议使用它;
Deployment :它为Pod和ReplicaSet提供了一个声明式的定义(Declaratice);
StatefullSet:为了`解决有状态服务的问题`(前面所说的`Deployments与ReplicaSets是为了无状态服务而设计`)
DaemonSet : 确保在全部或者一部分Node节点上运行一个Pod的副本
Job :负责批处理任务即仅执行一次的任务,它保证批处理任务的在一个或者多个Pod成功结束
Cronjob :管理基于时间的Job即在给定的时间点只运行一次,周期性地在给定时间点运行
HPA :水平自动扩容缩根据定义的阈值进行自定的操作
Pod 周边对象
Pause容器、业务容器
EndPoint : Pod IP + Container Port
Volume : 存储卷
Event :事件发生记录
Pod 资源配额
每个Pod都可以对其能使用的服务器上的计算机资源比如CPU和Memory进行设置限额,其值都为绝对值
CPU常以千分之一的CPU配额作为最小的单元通常用`m`表示,而Memory配额单位是内存字节数通常用`Mi`表示;
Pod 异常处理调度机制
当Pod里的某个容器停止工作时 ,动检测到该问题将会重新启动该Pod(即重启Pod里的所有容器);
工作节点宕机的情况下,则会将该Node上的所有Pod重新调度到其它节点之上。
服务发现
Pod 协同
网络通讯模式
网络通讯模式说明
组件通讯模式说明
本章Xmind脑图下载(持续更新):点击下载