在Kubernetes文档列出集群中运行的所有容器映像中,我们可以按以下方式列出所有容器:
kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c
下面是一个输出示例:
不幸的是,docker图像的大小丢失了。有没有办法获得容器图像的大小?非常类似于docker image ls
。为了方便起见,复制example的输出:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu latest 3556258649b2 7 days ago 64.2 MB
docker.io/alpine latest b7b28af77ffe 2 weeks ago 5.58 MB
docker.io/centos latest 9f38484d220f 4 months ago 202 MB
docker.io/hello-world latest fce289e99eb9 7 months ago 1.84 kB
5条答案
按热度按时间qgzx9mmu1#
如果您有正确的权限,请获取节点而不是pod。
o4hqfura2#
在我的k8s系统上,kubectl describe pod ABC不显示图像大小,但您可以创建一个脚本:
1.获取图像的名称(我假设pod中有一个容器,否则脚本会稍微复杂一些,这取决于实际要打印的内容)
1.在同一台机器上运行docker image ls。这里假设你在运行这个命令的机器上有这个docker image。
1.您可以稍微格式化该命令的输出以“捕捉”图像大小
总而言之,它看起来是这样的:
qyswt5oh3#
Kubernetes在其输出中不提供映像大小信息。即使我们能够获得集群中运行的映像的列表,但要获得多节点集群中映像的大小并不是一个简单的过程。但在运行单节点集群的情况下,我们可以通过运行docker或DinD来实现这一点(Docker in Docker)容器在Kubernetes集群中。尽管如此,它仍然是一个仅用于测试目的的好方法。关于在关键环境中运行这个我没什么可说的。这要看情况而定。
通过在内部装载主机的
/var/lib/docker.sock
文件并执行命令,启动Pod,如下所示。5m1hhzi44#
检查Kubernetes平台中是否使用了哪个容器运行时。例如,如果使用“microk8s”,则命令如下:
uyhoqukh5#
我需要类似的东西(但主要是列出图像和哪些pod正在使用它们)。所以我创建了kubectl插件,它列出了图像(和它们的大小以及)和使用它们的pod/容器。这是链接-https://github.com/pete911/kubectl-image