如何在 Kubernetes 中将用于容器的 Docker 映像的摘要作为环境变量传递

Mit*_*tar 5 docker kubernetes

我正在使用 Kubernetes 运行 Docker 映像。我想将正在使用的图像的摘要传递给容器。这样容器内的代码就可以使用它来调试/记录日志。问题是,如果不将图像摘要硬编码到 Pod 配置中,我似乎无法找到一种方法来做到这一点。

有没有办法定义 pod 配置方式,以便它动态地将摘要作为环境变量传递给最终使用的 Docker 映像版本?

Dav*_*aze 5

无论 Kubernetes 知道什么,都可以使用向下的 API注入。该数据集位于Pod 对象的 API 参考中。

看起来这应该有效:

env:
  - name: DOCKER_IMAGE_ID
    valueFrom:
      fieldRef:
        fieldPath: status.containerStatuses[0].imageID
Run Code Online (Sandbox Code Playgroud)

您可能更喜欢注入spec.containers[0].image名称,这样事后会更容易理解。如果您使用Helm这样的工具来生成配置,您还可以使用它的值系统:

image: {{ .Values.image }}:{{ .Values.tag }}
env:
  - name: DOCKER_IMAGE_TAG
    value: {{ .Values.tag }}
Run Code Online (Sandbox Code Playgroud)

  • 看来这实在是不可能的。Downward API [在它可以公开的内容方面]是有限的-api)并且存在与此相关的开放问题:https://github.com/kubernetes/kubernetes/issues/50309 和 https://github.com/kubernetes/kubernetes/issues/80346 (4认同)