首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列出Kubernetes集群中容器镜像的大小(如docker镜像ls)

列出Kubernetes集群中容器镜像的大小(如docker镜像ls)
EN

Stack Overflow用户
提问于 2020-06-01 11:40:03
回答 4查看 5.4K关注 0票数 5

在Kubernetes文档List All Container Images Running in a Cluster中,我们可以通过以下方式列出所有容器:

代码语言:javascript
复制
kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

以下是输出的示例:

代码语言:javascript
复制
  1 cdkbot/addon-resizer-amd64:1.8.1
  1 cdkbot/hostpath-provisioner-amd64:1.0.0
  1 cdkbot/registry-amd64:2.6
  1 coredns/coredns:1.6.6
  1 docker.io/cdkbot/addon-resizer-amd64:1.8.1
  1 docker.io/cdkbot/hostpath-provisioner-amd64:1.0.0
  1 docker.io/cdkbot/registry-amd64:2.6
  1 docker.io/coredns/coredns:1.6.6
  1 docker.io/grafana/grafana:6.4.3
  2 docker.io/istio/citadel:1.5.1
  2 docker.io/istio/examples-bookinfo-details-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
  2 docker.io/istio/galley:1.5.1
  4 docker.io/istio/kubectl:1.5.1
  4 docker.io/istio/mixer:1.5.1
  2 docker.io/istio/pilot:1.5.1
 34 docker.io/istio/proxyv2:1.5.1
  2 docker.io/istio/sidecar_injector:1.5.1
  2 docker.io/jaegertracing/all-in-one:1.16
  1 docker.io/kubernetesui/dashboard:v2.0.0
  1 docker.io/kubernetesui/metrics-scraper:v1.0.4
  2 docker.io/library/nginx:latest
  2 docker.io/prom/prometheus:v2.12.0
  1 docker.io/radial/busyboxplus:curl
  1 grafana/grafana:6.4.3
  2 k8s.gcr.io/metrics-server-amd64:v0.2.1
  1 kubernetesui/dashboard:v2.0.0
  1 kubernetesui/metrics-scraper:v1.0.4
  2 nginx
  2 quay.io/kiali/kiali:v1.9
  1 radial/busyboxplus:curl

不幸的是,缺少docker图像的大小。有没有办法获取容器镜像的大小?很像docker image ls。为方便起见,复制此example的输出:

代码语言:javascript
复制
$ 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
EN

回答 4

Stack Overflow用户

发布于 2020-11-20 06:22:06

如果您拥有正确的权限,则获取节点而不是pod。

代码语言:javascript
复制
kubectl get nodes -o json | jq '.items[].status.images[] | .names[1], .sizeBytes'
票数 8
EN

Stack Overflow用户

发布于 2020-06-01 12:04:55

在我的k8s系统上,kubectl describe pod ABC没有显示图像大小,但是您可以创建一个脚本:

  1. 获取图像的名称(我假设您在pod中有一个容器,否则脚本将根据您实际要打印的内容而稍微复杂一些)
  2. 在同一台计算机上运行docker图像ls。这里假设您在运行此命令的机器上实际具有该docker映像。
  3. 您稍微格式化该命令的输出以“捕捉”图像大小

总而言之,它看起来像这样:

代码语言:javascript
复制
docker image ls `kubectl get pod YOUR_POD_NAME_GOES_HERE  -o jsonpath='{.spec.containers[0].image}'` --format='{{println .Size}}'
票数 1
EN

Stack Overflow用户

发布于 2020-06-02 20:03:27

Kubernetes在其输出中不提供图像大小信息。即使我们能够获得集群中运行的映像的列表,但要获得多节点集群中映像的大小并不是一个直接的过程。但是在我们运行单节点集群的情况下,我们可以通过在Kubernetes集群中运行docker或DinD (Docker in Docker)容器来实现这一点。尽管如此,它仍然是一种仅用于测试目的的好方法。对于在关键环境中运行它,我没有什么可说的。那得看情况。

通过将主机的/var/lib/docker.sock文件挂载到内部并执行来启动pod,如下所示。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: dind
  name: dind
spec:
  containers:
  - image: docker:dind
    name: dind
    command: ["cat"]
    tty: true
    resources: {}
    volumeMounts:
    - mountPath: /var/run/docker.sock
      name: docker
      readOnly: true
  volumes:
  - name: docker
    hostPath:
      path: /var/run/docker.sock
      type: File
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

代码语言:javascript
复制
$ kubectl exec -i dind -n dev sh -- docker images nginx 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4571e56e27f0        11 hours ago        132MB

$kubectl exec -i dind -n dev sh -- docker image ls
REPOSITORY                                                       TAG                 IMAGE ID            CREATED             SIZE
nginx                                                            latest              4571e56e27f0        21 hours ago        132MB
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62125346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档