我有带有三个工作程序节点的EKS群集。现在,我想列出所有拉出的Docker映像,该怎么办?
我搜索了所有文档,但找不到直接访问它的任何直接方法。我可以为工作节点附加密钥对并尝试对其进行ssh加密,但是我想避免这种情况。
答案 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
的存储库相同(存在我的旧映像)。