kubernetes剖析(九)-Kubernetes的本质

一个正在运行的Linux容器

  1. 一组联合挂载在/var/lib/docker/aufs/mnt上的rootfs,也就是"容器镜像",容器的静态视图
  2. 一个由Namespace+Cgroup构成的隔离环境,这一部分称为"容器运行时",容器的动态视图

真正承载着容器信息进行传递的,是容器镜像,而不是容器运行时

kubernetes的由来

  • 核心特性都基于Borg/Omega系统的设计与经验
  • 在开源社区落地过程中,修复了很多当年遗留在Borg体系中的缺陷和问题

架构图

kubernetes剖析(九)-Kubernetes的本质
和原型项目Borg非常类似,都由Master和Node两种节点组成,分别对应着控制节点和计算节点

控制节点,Master节点

  • 负责API服务的kube-apiserver
  • 负责调度的kube-scheduler
  • 负责容器编排的kube-controller-manager
  • 整个集群的持久化数据,由kube-apiserver处理后保存在Etcd中

计算节点,Node节点

  • kubelet主要负责和容器运行时打交道
  • 而这个交互依赖的是CRI(Container Runtime Interface)的远程调用接口
  • 这个接口定义了容器运行时的各项核心操作,比如启动一个容器所需要的所有参数
  • 不需要关心是什么容器运行时,用到的什么基础
  • 只要这个容器能够运行标准的容器镜像,他就可以通过实现CRI接入到kubernetes项目当中

容器运行时

  • 例如Docker项目,一般通过OCI这个容器运行时规范通底层的Linux操作系统进行交互
  • 即:把CRI请求翻译成对Linux操作系统的调用(操作Linux Namespace和Cgroups等)

kubelet

  • kubelet还通过gRPC协议同一个叫做Device Plugin的插件进行交互
  • 这个插件是Kubernetes项目用来管理GPU等宿主机物理机设备的主要组件
  • 也是基于kubernetes项目进行机器学习,高性能作业支持等工作必须关注的功能
  • 调用网络插件和存储插件为容器配置网络和持久化存储
  • 这两个插件和kubelet交互的接口,分别是CNI(Container Networking Interface)和CSI(Container Storage Interface)

Borg项目对kubernetes的指导作用

  • 体现在Master节点之上
  • 虽然在Master实现的细节上和Borg有所不同
  • 但是出发点却高度一致:即如何编排,管理,调用用户提交的作业
  • 将Docker仅仅作为最底层的一个容器运行时实现
  • 着重解决的问题:运行在大规模集群中的各种任务之间,实际上存在着各种各样的关系
  • 处理这些关系,才是作业编排和管理系统最困难的地方

kubernetes项目最主要的设计思想

从宏观的角度,以统一的方式来定义任务之间的各种关系,并且为将来支持更多种类的关系留有余地

紧密关系的应用

  • 这些应用之间需要非常频繁的交互和访问,或者直接通过本地文件系统进行信息交换
  • 在常规环境下,这些应用往往会直接部署在同一台机器上,通过localhost通信,通过本地磁盘交换文件
  • 但在kubernetes项目中,这些容器会被划分为一个Pod
  • Pod里的容器共享同一个Network Namespace ,同一数据卷,从而达到高效交换信息的目的

类似Web应用和数据库之间的访问关系

  • kubernetes提供了一种叫做Service的服务
  • 给Pod绑定一个Service服务,而Service服务声明的IP地址等信息是终生不变的
  • 这个Service服务的主要作用,就是作为Pod的代理入口
  • 从而代替Pod对外暴露一个固定的网络地址

Secret对象

  • 其实是保存在Etcd里的键值对数据
  • 可以把Credential信息以Secret的方式存在Etcd里
  • kubernetes就会在你指定的Pod启动时,自动把Secret里的数据以Volume的方式挂载刀片容器里

kubernetes的推崇做法

  • 通过一个"编排对象",比如PodmJob,CronJob等,来描述你试图管理的应用
  • 再为它定义一些"服务对象",比如Service,Secret, HPA等.这些对象会负责具体的平台级功能
版权声明

1 本网站名称:诺言博客
2 本站永久网址:https://nuoyo.cn
3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长 QQ2469329338进行删除处理。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7 如无特别声明本文即为原创文章仅代表个人观点,版权归《诺言》所有,欢迎转载,转载请保留原文链接。

给TA打赏
共{{data.count}}人
人已打赏
云原生

kubernetes剖析(四)-容器大战之后尘埃落定

2023-9-13 20:41:03

云原生

手动部署k8s(四)-部署kubectl命令行工具

2023-9-13 20:41:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索