Kubernetes 与 dockershim
文章插图
从Kubernetes的架构图中 , 可以看到 Kubelet 下面还有一层Contianer runtime (容器运行时)是作为真正和OS去交互的 , 这个容器运行时是真正地管理容器的整个生命周期的以及拉取镜像等操作的 。
当前支持的 CRI 后端我们最初在使用 Kubernetes 时通常会默认使用 Docker 作为容器运行时 , 其实从 Kubernetes 1.5 开始已经支持 CRI , 通过 CRI 接口可以指定使用其它容器运行时作为 Pod 的后端 , 目前支持 CRI 的后端有:
- cri-o:cri-o 是 Kubernetes 的 CRI 标准的实现 , 并且允许 Kubernetes 间接使用 OCI 兼容的容器运行时 , 可以把 cri-o 看成 Kubernetes 使用 OCI 兼容的容器运行时的中间层 。
- cri-containerd:基于 Containerd 的 Kubernetes CRI 实现 , Containerd是一个进程,是CRI-Containerd的实现
- rkt:由 CoreOS 主推的用来跟 docker 抗衡的容器运行时
- frakti:基于 hypervisor 的 CRI
- docker:Kuberentes 最初就开始支持的容器运行时 , 目前还没完全从 kubelet 中解耦 , Docker 公司同时推广了 OCI 标准
文章插图
在这个阶段 dockershim组件在Kubelet 的代码中 , 这也就意味着Dockershim是由K8S组织进行开发和维护!由于Docker公司的版本发布K8S组织是无法控制和管理 , 所以每次Docker发布新的Release , K8S组织都要集中精力去快速地更新维护Dockershim 。Kubernetes1.24版本正式删除和弃用dockershim 。这件事情的本质是废弃了内置的 dockershim 功能 , 直接对接Containerd(后续已经支持 CRI) 。这种方式更加标准 , 调用的链路更加的简洁 。
文章插图
调用关系对比runtime 是 docker 时的调用链:调用关系为:kubelet --> dockershim (在 kubelet 进程中) --> dockerd --> containerd runtime 是 containerd 时的调用链:调用关系为:kubelet --> cri plugin(在 containerd 进程中) --> containerd 总结:从k8s的角度看 , 选择 Containerd 作为运行时组件更胜一筹 , 因为 Containerd 调用链更短 , 组件更少 , 更稳定 , 占用节点资源更少调用链
常用命令ctr 是 containerd 的一个客户端工具 。crictl 是 CRI 兼容的容器运行时命令行接口 , 可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序 。ctr -v 输出的是 containerd 的版本 , crictl -v 输出的是当前 k8s 的版本 , 从结果显而易见你可以认为 crictl 是用于 k8s 的 。
docker
ctr(containerd)
crictl(kubernetes)
查看运行的容器
docker ps
ctr task ls/ctr container ls
crictl ps
查看镜像
docker images
ctr image ls
crictl images
查看容器日志
docker logs
无
crictl logs
查看容器数据信息
docker inspect
ctr container info
crictl inspect
查看容器资源
docker stats
无
crictl stats
启动/关闭已有的容器
docker start/stop
ctr task start/kill
crictl start/stop
运行一个新的容器
docker run
ctr run
无(最小单元为 pod)
修改镜像标签
docker tag
ctr image tag
无
创建一个新的容器
docker create
ctr container create
crictl create
导入镜像
推荐阅读
- 关于接口测试,你了解多少?
- 如何从一个小细节了解一个人的内心世界?
- 秋刀鱼为什么那么便宜?秋刀鱼的害处是啥?先了解一下 秋刀鱼为什么那么便宜
- 贴对联的风俗与讲究 贴对联的风俗与讲究了解怎么写
- 了解编制,到底啥是备案制?
- 婚车租赁注意事项大全
- 一文搞懂Redis架构演化之路
- 减肥适合吃的7种主食,玉米排在第6,第一个建议常吃,不妨了解
- 了解饮料才能喝出健康
- 一文搞懂二叉搜索树、B树、B+树、AVL树、红黑树