在Kubernetes文档List All Container Images Running in a Cluster中,我们可以通过以下方式列出所有容器:
kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c以下是输出的示例:
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的输出:
$ 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发布于 2020-11-20 06:22:06
如果您拥有正确的权限,则获取节点而不是pod。
kubectl get nodes -o json | jq '.items[].status.images[] | .names[1], .sizeBytes'发布于 2020-06-01 12:04:55
在我的k8s系统上,kubectl describe pod ABC没有显示图像大小,但是您可以创建一个脚本:
总而言之,它看起来像这样:
docker image ls `kubectl get pod YOUR_POD_NAME_GOES_HERE -o jsonpath='{.spec.containers[0].image}'` --format='{{println .Size}}'发布于 2020-06-02 20:03:27
Kubernetes在其输出中不提供图像大小信息。即使我们能够获得集群中运行的映像的列表,但要获得多节点集群中映像的大小并不是一个直接的过程。但是在我们运行单节点集群的情况下,我们可以通过在Kubernetes集群中运行docker或DinD (Docker in Docker)容器来实现这一点。尽管如此,它仍然是一种仅用于测试目的的好方法。对于在关键环境中运行它,我没有什么可说的。那得看情况。
通过将主机的/var/lib/docker.sock文件挂载到内部并执行来启动pod,如下所示。
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: {}$ 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 132MBhttps://stackoverflow.com/questions/62125346
复制相似问题