列出从k8s worker节点拉出的所有docker镜像

时间:2019-08-12 11:53:13

标签: kubernetes

我有带有三个工作程序节点的EKS群集。现在,我想列出所有拉出的Docker映像,该怎么办?

我搜索了所有文档,但找不到直接访问它的任何直接方法。我可以为工作节点附加密钥对并尝试对其进行ssh加密,但是我想避免这种情况。

2 个答案:

答案 0 :(得分:1)

对于所有节点

kubectl get node  -o json | jq -r '.items[].status.images[].names'

对于“工人​​节点”

kubectl get node worker-node -o json | jq -r '.status.images[].names'

答案 1 :(得分:1)

I made a python script,用于解析kubectl get node -o json的输出,并以类似于docker images的格式显示,但仅带有 repository tag < / em>和 size (缺少 image_id created )。

#!/usr/bin/python
# Usage: kubectl get node [optional: name of node] -o json | python k8s_node_images.py
import sys
import json
data = json.load(sys.stdin)
try:
    nodes = data['items']
except KeyError:
    nodes = [data]
for node in nodes:
    node_name = node['metadata']['name']
    print("\nNODE {}".format(node_name))
    print("REPOSITORY".ljust(48)+"  "+TAG".ljust(16)+"  "+SIZE")
    images = node['status']['images']
    for image in images:
        if len(image['names'])<2:
            continue
        names = image['names'][1].rsplit(":",1)
        name = names[0]
        tag = names[1]
        size = image['sizeBytes']
        size_mb = "{0:.1f}MB".format(size/1000000.)
        print(name.ljust(48)+"  "+tag.ljust(16)+"  "+size_mb)

在我的测试中,输出显示的存储库与在每个节点上运行docker images的存储库相同(存在我的旧映像)。