Kubernetes与Docker和Containerd是个什么关系

文章目录

  • 小结
  • 描述
  • 实例
  • 参考

小结

Kubernetes 在不停地迭代演进,Kubernetes停止使用Docker做为Container Runtime,改为Containerd或者CRI-O等与与Container Runtime Interface (CRI)更兼容的Container Runtime,进行了小结。

容器组(Pod)-> 一个Pod封装一个或多个容器(container)
容器(container)
存储资源(volume)
仓库(repository)
镜像(image)
Container Runtime Interface (CRI)
CRI-O: OCI (Open Container Initiative) conformant runtimes.

描述

运行Kubernetes环境需要Container Runtime的支持,最熟知的CRI就是Docker了,Docker是最早被Kubernetes使用的Container Runtime之一,除了Docker以外,还有很多其它的Container Runtime。由于Kubernetes整个环境和它所使用的Container Runtime都在不停地迭代演进,早期Docker的Container Runtime与Kubernetes耦合过紧,不利于模块化。后来Kubernetes引入了Container Runtime Interface (CRI),也就是一个Plug-In API,这样就优先使用了与Container Runtime Interface (CRI)兼容的Container Runtime,例如ContainerdCRI-O,并停止了使用Docker的Container Runtime

一直以来,用户对Docker的使用很熟悉,也就是Docker与直接用户很友好,但它对Kubernetes的融合并不友好。 想要与Kubernetes整合,必须要使用到额外的叫作Dockershim的工具模块,也就是Docker + Dockershim 功能上成为了 Containerd,而Containerd可以用于Kubernetes的CRI. 既然Containerd支持了Docker + Dockershim的功能, Kubernetes在后面的发布版本中就去掉了Dockershim,这也就是Kuberntes停止使用Docker作为Container Runtime

虽然Kubernetes停止使用Docker的Container Runtime,但是Docker依然有其它用途,例如docker build,由Docker编译出来的镜像是OCI (Open Container Initiative)兼容的镜像,兼容于Containerd和CRI-O(OCI (Open Container Initiative) conformant runtimes)。

实例

以上的描述比较复杂, 用实际部署的Kubernetes的环境实例演示一下。

以下是Containerd的镜像:

[root@Master ~]#  crictl  --runtime-endpoint=unix:///run/containerd/containerd.sock images
IMAGE                                     TAG                 IMAGE ID            SIZE
docker.io/flannel/flannel-cni-plugin      v1.1.2              7a2dcab94698c       8.25MB
docker.io/flannel/flannel                 v0.22.0             38c11b8f4aa19       70.9MB
docker.io/weaveworks/weave-kube           latest              62fea85d60522       30.9MB
docker.io/weaveworks/weave-npc            latest              690c3345cc9c3       12.8MB
quay.io/metallb/speaker                   v0.13.10            191b3797a6626       50.3MB
registry.k8s.io/coredns/coredns           v1.10.1             ead0a4a53df89       16.2MB
registry.k8s.io/etcd                      3.5.7-0             86b6af7dd652c       102MB
registry.k8s.io/kube-apiserver            v1.27.3             08a0c939e61b7       119MB
registry.k8s.io/kube-apiserver            v1.27.4             e7972205b6614       33.4MB
registry.k8s.io/kube-apiserver            v1.27.6             19b9246d37c8b       33.4MB
registry.k8s.io/kube-controller-manager   v1.27.3             7cffc01dba0e1       111MB
registry.k8s.io/kube-controller-manager   v1.27.4             f466468864b7a       31MB
registry.k8s.io/kube-controller-manager   v1.27.6             7810e6aed9778       31MB
registry.k8s.io/kube-proxy                v1.27.3             5780543258cf0       60.8MB
registry.k8s.io/kube-proxy                v1.27.4             6848d7eda0341       23.9MB
registry.k8s.io/kube-proxy                v1.27.6             ec57bbfaaae73       23.9MB
registry.k8s.io/kube-scheduler            v1.27.3             41697ceeb70b3       56.9MB
registry.k8s.io/kube-scheduler            v1.27.4             98ef2570f3cde       18.2MB
registry.k8s.io/kube-scheduler            v1.27.6             993d768b9b96e       18.2MB
registry.k8s.io/pause                     3.6                 6270bb605e12e       298kB
registry.k8s.io/pause                     3.9                 e6f1816883972       319kB
[root@Master ~]# 

以上crictl是CRI的客户端指令, --runtime-endpoint指定了Endpoint of CRI container runtime service,指向了unix:///run/containerd/containerd.sock

而Docker指令所看到的镜像为空:

[root@Master ~]# docker images ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@Master ~]# 

也就是Kubernetes的镜像是放在Containerd下的,并不是放在docker下的。在Kubernetes的使用过程中,Docker被使用为进行镜像的编译。

查看docker服务设置vim /lib/systemd/system/docker.service

可以看到以下设置:

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

参考51CTO: docker查看远程仓库 docker 远程 ,进行如下设置可以对Docker的镜像进行远程访问:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

访问指令如下,registry在本机的/etc/hosts文件里有设置:

docker -H  192.168.238.130:2375 images
docker -H  registry:2375 images

查看daemon.json设置:/etc/docker/daemon.json,如下:

{"exec-opts":["native.cgroupdriver=systemd"],"insecure-registries":["http://registry:80"]
}

参考

51CTO: docker查看远程仓库 docker 远程
Kubernetes: Don’t Panic: Kubernetes and Docker
Kubernetes is deprecating Docker as a container runtime after v1.20.
Introducing Container Runtime Interface (CRI) in Kubernetes
Open Container Initiative

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress网站部署了ssl证书之后就排版混乱了

刚给自己的小网站部署了SSL证书,之后就发现https访问主页竟然乱套了。在手机上访问却是正常的。 直接上解决方案: 编辑网站根目录下的wp-config.php文件 在自定义文本处添加以下代码: if ($_SERVER[HTTP_X_FORWARDED_PROTO] https) $_SE…

PHP-FFMpeg 操作音视频

✨ 目录 🎈 安装PHP-FFMpeg🎈 视频中提取一张图片🎈 视频中提取多张图片🎈 调整视频大小🎈 视频添加水印🎈 生成音频波形🎈 音频转换🎈 给音频添加元数据🎈 拼接多个音视…

利用ArcGIS获取每一个冰川的中心位置经纬度坐标:要素转点和要素折点转点的区别

问题概述:下图是天山地区的冰川的分布,我们可以看到每一条冰川是一个面要素,要求得到每一个冰川(面要素)的中心经纬度坐标。 1.采用要素转点功能 选择工具箱的【数据管理工具】-【要素】-【要素转点】。完成之后再采用…

计算机基础知识36

数据库数据的演变史 ATM:1. 把数据都存在了文件中,文件名不规范 kevin|123 kevin123 kevin*123 2. 存储数据的文件越来越多,放在db文件夹,占用空间,查询存储不方便,速度慢 # 数据库软件能解…

lnmp架构部署Discuz论坛并配置重定向转发

lnmp架构部署Discuz论坛并配置重定向转发 文章目录 lnmp架构部署Discuz论坛并配置重定向转发环境说明部署Discuz论坛系统下载Discuz论坛系统代码包,官网地址如下:部署Discuz论坛系统步骤:解压安装Discuz源码包配置虚拟主机进入Discuz安装界面…

Janus: 逆向思维,以数据为中心的MoE训练范式

文章链接:Janus: A Unified Distributed Training Framework for Sparse Mixture-of-Experts Models 发表会议: ACM SIGCOMM 2023 (计算机网络顶会) 目录 1.背景介绍all-to-allData-centric Paradigm 2.内容摘要关键技术Janus细粒度任务调度拓扑感知优先级策略预取…

Android推送问题排查

针对MobPush智能推送服务在使用过程中可能出现的问题,本文为各位开发者们带来了针对MobPush安卓端推送问题的解决办法。 TCP在线推送排查 排查TCP在线收不到推送时,我们先通过客户端的RegistrationId接口获取设备的唯一标识 示例: MobPush…

修改 Stable Diffusion 使 api 接口增加模型参数

参考:https://zhuanlan.zhihu.com/p/644545784 1、修改 modules/api/models.py 中的 StableDiffusionTxt2ImgProcessingAPI 增加模型名称 StableDiffusionTxt2ImgProcessingAPI PydanticModelGenerator("StableDiffusionProcessingTxt2Img",StableDiff…

代码随想录算法训练营第五十六天 | 1143.最长公共子序列、1035.不相交的线 、53. 最大子序和 动态规划

1143.最长公共子序列 视频讲解:动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列_哔哩哔哩_bilibili 代码随想录 (1)代码 1035.不相交的线 视频讲解:动态规划之子序列问题,换汤不换药 | Leet…

高数二阶导数例子

例子: 当 x 0 x 0 x0时 f(x) 1,当 x ≠ 0 x \ne 0 x0时, f ( x ) sin ⁡ x x f(x) \frac{\sin x}{x} f(x)xsinx​, 求f’(x)。 解: 二阶导数是导数的导数,按照定义为: f ′ ′ ( x ) lim ⁡ x →…

基于Java的垃圾分类管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【常用的Git命令】

Git是一个版本控制系统,它拥有众多的命令。以下是一些常用的Git命令: 配置相关命令: git config --global user.name "Your Name":设置用户姓名git config --global user.email "youremailexample.com":设置用…

安卓逆向之抽象函数public abstract的hook定位处理

一、抽象类调用过程 1、定义接口 public abstract class AbsNetHelper{public abstract int X(int x,int y); }2、其他类调用 public class f extends AbsNetHelper {public abstract int X(int x,int y){ return xy;} }二、如何HOOK 想hook调用AbsNetHelper类的X抽…

linux uboot kenerl filesystem关系

每次烧写都是uboot,image,roots,为什么不整一套,为什么分开 什么是uboot 什么是内核,三者为什么分开 如果你上网去搜一下,你会发现这样的答案 另注:本文含有大量的错误和意测成份&#xff0c…

Linux系统编程04

进程的概念 进程(动态)是一个正在运行的程序(静态) 多道程序设计缺点: (1)缺乏隔离,各个程序之间可以直接访问,使用对方的数据 (2)内存使用率低&a…

香港服务器在国内访问太慢怎么能提高?

​  一直以来,全球化业务需求的增长是跟随着蓬勃向上的互联网而发展的。有了网络,海外贸易就在鼠标的轻点中完成。而IDC市场中的香港服务器也因为免备案政策的特性,开始逐渐成为企业想要跨越地域壁垒而考虑的对象。但在使用过程中&#xff…

新手如何找到Docker容器(redis)中的持久化文件?

具体步骤 要查看Docker容器的dump.rdb和appendonly.aof文件(如果启用了AOF持久化)的位置,我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置。 这里是一般步骤: 查找容器的数据卷挂载位置 使用docker inspect命令…

内存爆炸、CPU100%问题定位

目录 一、内存爆炸相关1、关于-Xms(最小堆内存)和-Xmx(最大堆内存)2、JVM初始化时申请实际物理内存3、OutOfMemory问题排查(1) 堆内存溢出排查(2) 堆外内存溢出排查 二、CPU 100及死锁问题定位1、CPU 100问题排查(1) 找到程序对应进程号(2) 查找进程对应的线程编号(3)查看线程堆…

[Hive] if返回null和0的区别

count(if(pv>1000000,1,0))count(if(pv>1000000,1,null)) 区别 count(if(pv>1000000,1,0)) 和 count(if(pv>1000000,1,null)) 之间的区别在于对于不满足条件的情况下的处理方式。 count(if(pv>1000000,1,0)):这个表达式中,如果 pv 的值…

【Godot】给不规则的 TileMap 划分子区域块部分代码

4.1.beta2 给不规则的 TileMap 划分子区域块部分代码 ## 生成房间内部数据 func generate_room_inside_data():GLog.info("生成房间内部数据")# 划分房间的各个矩形块for room_coords in room_coords_to_data:var room_data room_coords_to_data[room_coords] as D…