【问题标题】:How to get image name in Google Cloud Platform Kubernetes Pod如何在 Google Cloud Platform Kubernetes Pod 中获取图像名称
【发布时间】:2017-10-19 22:50:58
【问题描述】:

如何获得在pod 上运行的容器映像的摘要

根据下面的屏幕截图,我希望能够从 pod 中检索 d976aea36eb5(日志、YAML 等。无论是通过何种方式获取它)

我可以从YAML://Deployment/spec/template/spec/containers/image 得到的是mysolution.host,这是图像的通用名称。

【问题讨论】:

    标签: kubernetes docker kubernetes google-cloud-platform google-kubernetes-engine google-container-registry


    【解决方案1】:

    如果通过 kubernetes API 无法做到这一点,您可以通过 docker registry API 来实现。

    您要查找的是图像的摘要,它是其manifest 的sha256 哈希。 GCR 的 UI 屏幕截图中的“名称”列是图像的截断摘要。

    字符串us.gcr.io/my-project-37111/mysolution.host 代表一个存储库,它只是一个图像的集合。这些图像可以通过它们的摘要或标签来引用。

    您可以使用 gcloud 列出存储库中的所有标签:

    $ gcloud container images list-tags us.gcr.io/my-project-37111/mysolution.host
    

    这也会显示截断的摘要。对于完整的摘要,您可以使用--format=json 标志:

    $ gcloud container images list-tags --format=json us.gcr.io/my-project-37111/mysolution.host
    

    如果您碰巧知道标签(突出显示的图像为0.0.5-linux),您可以直接调用注册表API:

    $ curl \
      -H "Accept: *" \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -I https://us.gcr.io/v2/my-project-37111/mysolution.host/manifests/0.0.5-linux |
      grep "digest"
    

    【讨论】:

    • 感谢您提供详细信息。我可能会错过解释我正在尝试做的事情。我需要获取正在运行的 pod 的 digest 信息。假设我在 0.0.5 上设置了 active 标签并运行 pod,然后更改 active 标签并添加到 0.0.6。我想知道当时正在运行的 pod 是 0.0.5 还是 0.0.6。
    • 这行得通吗? kubectl get pod $POD -o jsonpath="{...imageID}"
    • 是的,它确实有效,status/containerStatuses/imageID 包含该信息。非常感谢
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 2023-04-10
    • 2022-08-23
    • 1970-01-01
    • 2017-05-24
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多