vlambda博客
学习文章列表

k8s工作节点-CRI-O的演变


               优质文章,每日送达

k8s工作节点-CRI-O的演变

This browser does not support music or audio playback. Please play it in Weixin or another browser. k8s工作节点-CRI-O的演变

----------------------------------------------


🌛 "这个世界上并没有绝对的好与坏,适合你的就是最好的"

k8s工作节点-CRI-O的演变

「【只做懂你de云原生干货知识共享】」

k8s工作节点-CRI-O的演变

k8s工作节点-CRI-O的演变

仅仅几个月前,我从未将容器称为容器……我曾经将它们称为docker容器……当听说OpenShift转向CRI-O时,我认为有什么大不了……“大不了”……好吧,我必须了解k8s worker节点的演变。

进化

如果您看一下k8s架构的发展,工作节点运行容器的方式已经发生了重大变化和优化……这是我尝试捕获的发展的重要阶段…… 

阶段0:Docker是船长

k8s工作节点-CRI-O的演变

它以简单的kubelet体系结构作为工作节点代理开始,作为工作节点代理从主节点通过api-server接收来自管理员的命令。Kubelet使用Docker运行时来启动Docker容器(从注册表中拉出映像)。一切都很好……直到具有更好性能和独特优势的备用容器运行时开始出现在市场上,我们意识到,如果我们可以即插即用这些运行时将是一件好事……我们将使用的显而易见的设计模式解决此问题是???“适配器/代理”模式…对吗?导致了下一个阶段。

进化就是要适应生态系统的变化


阶段1:CRI(容器运行时界面)

k8s工作节点-CRI-O的演变

容器运行时接口(CRI)规范是在K8s 1.5中引入的。CRI还包括协议缓冲区,gRPC API和库。借助在kubelet中运行的gRPC客户端和在CRI Shim中运行的gRPC服务器,这带来了抽象层,并充当了适配器。这允许以更简单的方式运行各种容器运行时。在继续之前……我们需要了解容器运行时应具有的所有功能。容器运行时用于管理。下载镜像,解压缩它们,运行它们,并处理网络,存储。很好...直到我们开始意识到这就像一块巨石!!!让我将这些功能分为2个级别。高级别—镜像管理,传输,解压缩镜像和API,以发送命令来运行容器,网络,存储(例如:rkt,docker,LXC等)。低级别-运行容器。将这些功能拆分为可以与各种开源选项混合并匹配的组件更为合理,这些组件可以提供更多的优化和效率

阶段2:CRI-O和OCI

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

k8s工作节点-CRI-O的演变

在第1阶段快要结束时,我提到了创建端到端容器管理工具包的灵活性……这需要美国队长组装复仇者,以提供端到端容器平台……

k8s世界的复仇者-由“ OpenShift”船长领导

podman:无守护程序容器引擎,用于开发管理和运行OCI容器,并讲确切的Docker CLI语言,在某种程度上您可以使用别名 

skopeo:完整的容器管理CLI工具。我最喜欢skopeo的功能之一就是能够在远程仓库上检查镜像,而无需下载或拆包!!!……它已成熟为远程镜像仓库的成熟镜像管理工具,包括对镜像进行签名,在仓库之间进行复制,并使远程仓库保持同步。这显着提高了容器构建,管理和部署管道的速度。

buildah:逐步帮助构建OCI镜像的工具!我不必想象镜像的组成,也不必编写复杂的Dockerfile。相反,我一次只构建镜像一层,对其进行测试,然后回滚(如果需要),一旦我满意,就可以提交它到镜像仓库...那太酷了!!!

cri-o:k8s的轻量级容器运行时…将在下一节中对此进行详细介绍。

OpenShift:端到端的集装箱平台……真正的船长!红帽OpenShift适用于CRI-O [Red Hat OpenShift 4.x作为容器运行时默认为CRI-O。这个决定中的很多(我认为)可以归结为选择基于CoreOS构建不可变的基础架构,并在该基础架构上运行OpenShift4.x。CRI-O以CoreOS为基础是显而易见的,并且更重要的是,CRI-O由k8s社区控制,完全开源,非常精简,直接实现k8s容器运行时接口,下面图片显示了CRI-O如何在Red Hat OpenShift 4.x中工作。

参考

https://www.projectatomic.io/blog/2017/06/6-reasons-why-cri-o-is-the-best-runtime-for-kubernetes/ https://www.redhat.com/zh-CN/blog/red-hat-openshift-container-platform-4-now-defaults-cri-o-underlying-container-engine# https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/ https://www.redhat.com/zh-CN/blog/red-hat-openshift-container-platform-4-now-defaults-cri-o-underlying-container-engine -kubernetes-with-trimaran-a8efe14d51e2 https://faun.pub/evolution-of-k8sworker-nodes-cri-o-ea58762e7629