K8S工作节点的演变:由Docker到CRI-O

随着K8S的崛起,OCI的推出,容器和云架构逐渐发展完善,一个纯开源的、社区的,完美的和高效的容器生态体系正在形成和在各个企业生产环境中使用。而生态体系中最重要的一环就是其Node,工作节点的演变,本文我们我说说K8S工作节点的演变和OCI标准下生态体系。

工作节点的演化

我们回顾一下K8S体系架构的发展,其中工作节点的运行时容器的已经发了重大的变化和调优,有以Docker为主导的容器发展成了有OCI标准的的CRI-O工具链形式。

docker主导

该阶段主要以简单的kubelet体系结构作为工作节点代理开始,作为工作节点代理通过api-server从主节点接收来管理的命令。Kubelet使用Docker运行时来启动Docker容器(包括从注册表中拉镜像)。

CRI(容器运行时接口)

容器运行时接口(CRI)规范是在K8s 1.5中引入的。CRI规范还包括协议缓冲区,gRPC API和库。通过在kubelet中运行的gRPC客户端和在CRI Shim中运行的gRPC服务器。该规范给K8S架构体系带来抽象层,并充当了适配器。这允许以更简单的方式运行各种容器运行时。

这些功能分为2个层次:

高级别功能:镜像管理,传输,镜像解压缩和API,发送命令来运行容器,网络,存储(例如:rkt,docker,LXC等)。

低级别功能: 运行容器。

这些功能可以拆分独立出各个部分来,各个部分可以选用各种开源组件,并搭配成更合理更高效的组合。

OCI、CRI-O 和工具链生态

OCI(开放容器倡议)提出了明确的容器运行时和镜像规范,该规范有助于实现多平台支持(Linux,Windows,VM等)。Runc是OCI的默认实现,它是容器运行时的底层。代的容器运行时基于该分层体系结构,其中Kubelet通过CRI-gRPC与容器运行时进行通信,而容器运行时通过OCI运行容器。CRI有多种实现,例如Docker shim,CRI-O,containerD。

podman

无守护程序容器引擎,用于开发管理和运行OCI容器,在一定程度上可以取代Docker CLI语言,可以docker命令大多数命令(RUN,PUSH,PULL等),甚至可以将其直接作为docker别名使用即可。

buildah

buuildah帮助构建OCI镜像的工具。用户不必关注象镜像的组成,也不用编写复杂的Dockerfile。相反,可以一次只构建一层镜像,对其进行测试,然后回滚(如果需要),知道满意,然后提交它到注册表。

skopeo

完整的容器管理CLI工具。skopeo功能之一就是可以直接在远程注册表中无需下载或者解压,就可以检查镜像。skopeo目前已经发展成为用于远程注册表的功能完善的镜像管理工具,包括对镜像进行签名,在注册表之间复制并保持远程注册表同步。这大大加快了容器构建,管理和部署管道速度。

CRI-O

CRI-O提供了可在OCI标准下一致的运行时和kubelet集成方式,提供一个kubelet容器运行时的接口:

支持更多镜像的格式包括docker镜像格式;

支持更多的方式来下载和验证镜像包;

容器镜像管理(管理image的层,文件系统);

容器进程的生命周期管理;

CRI所需求的监控和日志;

CRI需求的资源隔离;

OpenShift

OpenShift包括整个生态链工具的。红帽去年发布的Red Hat OpenShift 4.x系统,其容器运行时默认为CRI-O。可以使用CoreOS构建不可变的基础架构,并在该基础架构上运行OpenShift4.x。CRI-O以CoreOS为基础是好处显而易见的,最更重要的一点是CRI-O由k8s社区控制,完全开源,非常精简,直接实现k8s容器运行时接口。

ttreeview 只展开一层节点_K8S工作节点的演变:由Docker到CRI-O相关推荐

  1. Spark RDD的运行机制 工作节点分布关系

    1.分区及分区与工作结点(Worker Node)的分布关系 • 通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本质上是一个只读的分区记录集合.每个 RDD可以分成多个分区,每个分区就是一个数 ...

  2. 【剑指offer】完全二叉树最后一层的最右节点(二叉树,二分查找)

    题目 给定一棵完全二叉树,返回最后一层的最右边的节点. 思路 层次遍历,用一个last变量记录每次出队列的值,遍历结束之后last变量记录的就是所求节点.时间.空间复杂度都是O(N). 递归,求子树的 ...

  3. 使用DaemonSet定制AKS工作节点

    很多时候我们需要在AKS (Azure Kubernetes Service)工作节点上运行支持软件,例如,恶意软件扫描程序,Policy Enforcer等.目前AKS的工作节点只能使用云平台指定的 ...

  4. Citus数据分片分布研究(一 在工作节点直接操作表)

    (本文中凡是未显式指出的SQL,均在协调节点上执行) 工作节点 mydb1=# SELECT * FROM master_get_active_worker_nodes();node_name | n ...

  5. 每天一道LeetCode-----为二叉树增加next节点,指向同一层的下一个节点

    Populating Next Right Pointers in Each Node 原题链接Populating Next Right Pointers in Each Node 将完全二叉树每个 ...

  6. zookeeper中展示所有节点_zookeeper工作原理与节点使用

    目录 zookeeper集群的搭建: 配置解释: 特点: 常规搭建方式,进行操作: A.关闭防火墙(测试环境) B.启动 服务,每个规划的 zookeeper 节点都要进行启动 C.启动客户端 D.命 ...

  7. 【Docker之Swarm详细讲解Swarm集群搭建管理节点工作节点Raft一致性协议overlay网络Docker结合Swarm部署WordPress个人博客实战】

    一.知识回顾 之前的内容都帮你整理好了,在这里哟! [0.Docker相关目录文章整理,可自行查看,包含多节内容] [1.Docker详细安装部署&阿里镜像地址配置] [2.Docker架构& ...

  8. 全手动搭建Kubernetes集群——Master管理节点和Node工作节点部署

    目录 前言 一.Master管理节点需要安装的组件介绍 二.配置Master管理节点各组件模块 1.配置kube-apiserver组件 2.配置kube-controller-manager组件 3 ...

  9. 新的工作节点加入k8s集群

    在初始设置 Kubernetes 集群后,最常见的操作是通过添加更多运行工作负载(容器和 Pod)的节点来扩展集群. 扩展集群的方式取决于最初在集群引导期间使用的工具. 本指南演示如何使用 kubea ...

最新文章

  1. Java项目:家庭财务管理系统(java+Springboot+ssm+mysql+maven)
  2. 2021年JVM生态中哪些是流行的、热门的、趋势是什么
  3. javaweb带父标签的自定义标签
  4. array_fill_PHP array_fill()函数与示例
  5. 商务计算机的购置方案,电子采购方案的实施.ppt
  6. HBase写性能优化策略
  7. 通过html备份数据库文件,备份网站文件和数据库
  8. 推荐几款好用的电脑定时执行软件 - 定时执行专家
  9. E24系列电阻 阻值表
  10. 猿创征文 | 国产数据库之人大金仓数据库详解安装和使用
  11. ExDirectUI 5.0 项目重构正式启动
  12. cortex M3/4 内部总线
  13. MvcPager分页控件
  14. Win10怎么安装Apache服务
  15. NGINX反向代理缓存
  16. 高效上网教程---资源软件搜索技巧(搜索好用软件或者app去哪些网站)
  17. 一、Oracle数据库的安装和配置
  18. IDEA插件系列(92):Rainbow Fart插件——吹彩虹屁
  19. iptables基于域名的本机流量控制
  20. 2【源码】数据可视化:基于 Echarts + Java SpringBoot 实现的动态实时大屏范例-物流大数据

热门文章

  1. 例子---PHP与Form表单之三
  2. python创建字典和包的区别_python之路—模块和包
  3. shell命令删除昨日的日志_linux定时自动清理日志文件
  4. mysql alter event_MYSQL ALTER EVENT介绍
  5. 惠普暗影精灵3清灰_如何评价惠普笔记本这几年的表现?尤其是暗影精灵系列。...
  6. .mvn 需要放git上吗_汽车行李架上可以放东西吗?放了东西可以跑高速吗?
  7. android view 点击变暗,Android应用开发Android ImageView点击变暗效果
  8. 全民果园为什么服务器在维修中,你在果园管理中遇到的问题这里可以解决
  9. PHP删除排序数组中的重复项,每日一道算法:删除排序数组中的重复项
  10. 可以方便的将SQL语句的执行结果显示成表格结果的JAVA类,可以用于不同的数据显示