k8s:区分docker和containerd

区分docker和containerd;

1.区分docker和containerd

Containerd的管理工具是crictl;

Crictl ps查找的是查找本节点containerd容器运行时管理的容器

(因为crictl ps所查找的pod并不位于当前节点上,所以并没有对应输出,只有在qfusion2上才能看到)

Docker的管理工具是docker;

Docker ps查找的是由本节点docker容器运行时管理的容器。(在之后的一些版本中还需要docker的原因是docker的一些其他功能如镜像拉取还需要使用,如下可以看到由docker管理的容器运行情况)

在k8s中pod是一个逻辑概念,在k8s中是一个集群,所以可以使用ks get pod查看所有pod

怎么理解Docker是包含containerd的?

Docker的实际创建容器是用的containerd,只不过docker上层还多了build,dockerfile这些功能,所以在1.24版本后k8s将docker其他部分给剔除了,只保留了containerd容器进行时,然后因为有些docker功能还需要使用,例如镜像推送和拉取,所以还用到了docker。

所以,总的来说,1.24版本后的k8s并不是不再支持docker,而是不再使用docker作为容器运行时,而是使用contained,如果想要在k8s中继续使用docker需要在kubelet和docker之间加一层docker-shim,但这样就远不如kubelet之间和contained通信效率高。(而kubelet和contained通信之间使用的是CRI接口)具体文件存放在/usr/local/bin

2.验证同一个pod中的容器共享网络,并且说明在事实上并不存在一个pod作为边界来隔离容器,pod只是一个逻辑概念,pod的本质是一组共享网络的容器,并且可以共享存储。

·docker inspect --format '{{ .State.Pid }}' [容器ID]

命令:查看由docker管理的容器在实际操作系统上对应的PID


·crictl inspect --output go-template --template '{{.info.pid}}' [容器ID]

命令:查看由contained管理的容器在实际操作系统上对应的PI

(1)查找同一pod下的容器

(2)查找A和B容器的实际PID

(3)可以看到这两个容器是共享同一个network namespace

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值