本篇博客涉及到的问题:
1、容器需要分为两个部分,这两个部分指的是什么? 本博客已解答
2、K8S的诞生源于”Brog系统”的设计和经验,Brog系统的什么特点是K8S需要继承的?本博客已解答
3、K8S在容器云兴起后需要解决什么问题?本博客已解答
4、“我有一个容器镜像。服务商帮我在这个集群中运行起来吧!” 想要运行这个容器到集群中,服务商需要分析到哪些方面?本博客已解答
5、K8S的架构组成图 CRI、OCI、CSI、CNI、GRPC 都是指的什么?本博客已解答
6、基于k8s的架构组成图,Brog系统对k8s的诞生的指导意义体现在哪里?本博客已解答
7、linux和容器在面对集群中”关系”时,都是怎样处理的?本博客已解答
8、K8S和linux 对于“关系”的处理原理做出表格比对 本博客已解答
9、Compose的本质原理是什么?本博客已解答
10、K8S的核心功能 “全景图” 以及解释 本博客已解答
11、声明式 API指的是什么?本博客已解答

容器:有隔离环境的特殊的进程

知识点1:容器可以分为两部分:

(1)容器运行时:动态视图-隔离环境 :NameSpace+Cgroups
(2)静态视图:容器镜像rootfs /var/lib/docker/aufs/mnt/rootfs文件

知识点2:容器编排技术:

(1)容器组织
(2)容器管理

知识点3:Brog系统 :是Google公司的 “ 整个基础设施的核心依赖 ”,是最不可能来源的项目

K8S :核心特性来源于”Brog系统的设计 和 经验 ”
K8S特点:先进性 + 完备性
先进性 + 完备性,其实Paas可以实现 ,Compose+Swarm项目也能实现,K8S的独特优势又是什么?往下看!

问题:K8S要解决什么问题? 编排?调度?集群管理?容器云?

在不同的发展阶段需要解决的问题是不同的,并不能特定在一个特点
K8S需要解决的问题 : 官方回答
运行在大规模集群中的各种任务之间,实际上存在各种各样的 关系
这些关系的处理,才是作业编排 和 管理系统 最困难的地方

站在用户的立场:我有一个容器镜像rootfs,帮我在集群中把这个应用运行起来!
分析下这个容器需要实现哪些?

(1)K8S应该配置好路由网关
(2)容器有水平扩展的能力
(3)K8S能监控到这个容器的各个方面
(4)能备份这个容器
(5)能灾难恢复这个容器

知识点4:K8S的组成结构图


k8s部署springcloud项目实战 k8s springcloud架构图_Docker :定义了容器运行时的各项核心操作

  栗子:定义了启动容器需要的所有的参数

k8s部署springcloud项目实战 k8s springcloud架构图_微服务_02

k8s部署springcloud项目实战 k8s springcloud架构图_kubernetes_03 : 调用存储插件为容器配置持久化存储
k8s部署springcloud项目实战 k8s springcloud架构图_linux_04 : OCI 包含了 容器运行时的规范
  OCI负责和linux操作系统进行交互,把CRI请求翻译成 对 操作系统的调用(操作linux NameSpace 和 Cgroups)

k8s部署springcloud项目实战 k8s springcloud架构图_Docker_05 :是协议 ,负责和Device插件进行交互
   Device插件:管理cpu等宿主机物理设备的主要的组件

知识点5:现在来看知识点3的问题:

Brog系统没有CNI CRI CSI OCI gRPC ,Brog系统不需要管理Docker ,也不需要和Docker进行交互,Brog系统对K8S项目的诞生,起到了什么指导性的意义呢
:其实 master节点起到了指导性的意义
Brog系统 以及 K8S项目 在编写的时候 注重点是一样的,都是注重 编排、管理、调度用户提交的作业
K8S项目是把Docker镜像作为最底层的一个容器运行
换句话说,在K8S的角度,它看待Docker镜像看做是一种新的应用的打包方式。

知识点6:现在来看知识点3问题中提及的 “容器之间的关系”

(1)web应用和数据库的访问关系
(2)负载均衡器和后端服务的代理关系
(3)门户应用和授权组件间的调用关系
(4)web应用和日志收集组件间的文件交换关系
对于Linux来说,它是如果来处理“容器之间的关系的”
   1、因为这些应用需要互相发HTTP请求,所以 应用都需要部署在一个虚拟机上面
   2、手动维护其他服务和守护进程 (处理日志收集 、灾难恢复、数据备份)
K8S是如何处理 “容器之间的关系的”
   上述在一个虚拟机的多个应用 /组件/守护进程等,都可以做成镜像。运行在专属的容器中
   这些专属的容器,都可以拥有特定的各自的资源配额
   这些专属容器,可以被调度在整个集群里面的任何一台机器上面,就像是 “微服务”的效果

知识点7:K8S并不仅仅 “封装微服务,调度单容器”

封装微服务 :Docker Swarm 可以做到,并非K8S不可
调度单容器 :Docker Compose 可以做到,并非K8S不可

Compose是怎样实现调用容器的呢?或者说是怎样调度“关系”的呢?


k8s部署springcloud项目实战 k8s springcloud架构图_Docker_06

**问题**:但是如果 关系很多,并且需要整个集群架构需要 具有 应对未来的能力,这种Compose 项目的Link的能力不是很好 K8S从更加宏观的角度,用统一的方式定义“任务之间的各种的关系”,为将来支持更多种类的关系 留有余地 (1)对于频繁交互访问的,以及需要通过本地文件进行信息交换的

k8s部署springcloud项目实战 k8s springcloud架构图_kubernetes_07

(2)对于WEB应用需要访问数据库的关系

k8s部署springcloud项目实战 k8s springcloud架构图_linux_08

知识点8:俯视K8S的工作原理图:


k8s部署springcloud项目实战 k8s springcloud架构图_kubernetes_09

知识点9:K8S的声明式API

编排对象 :通过一个编排对象 (Pod、Job、Crontab)来描述试图去管理的应用
服务对象 : 为上面的 编排对象定义 Service、Secret、Horizontal Pod、AutoScaler ,主要负责具体的平台化的功能