docker 标签和 kubernetes 标签的区别?

Difference between docker labels and kubernetes labels?

我看到带有命令 "docker inspect" 的标签比 "kubectl describe" 或 "kubectl get pods --show-labels" 中显示的 kubernetes 标签多得多。是否可以使用 kubectl 命令查看所有相同的 docker 标签,或者这是不可能的,因为 docker 标签与 kubernetes 中的 pod 标签无关?

两个标签都只包含键值对。

在 Kubernetes 中,标签附加到对象上,例如 pods。标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接暗示核心系统的语义。标签可用于组织 select 个对象子集。因此,例如,如果您使用在特定节点上调度 pod 的规则来标记部署,则可以使用它。或者说,例如,如果一个 pod 可以有来自一个具有标签 XYZ 的特定服务的入口流量,它是使用标签完成的。您可以通过多种方式使用它。

另一方面,Docker 支持将标签添加到图像中作为添加自定义元数据的一种方式。所以在 Docker 文件中你提到它是:

LABEL <key>=<value> <key>=<value> <key>=<value>

它将数据存储为:

LABEL multi.label1="value1" \
      multi.label2="value2" \
      other="value3"

您可以将其检查为:

docker inspect \
       --format "{{ index .Config.Labels \"multi.label2\"}}"
       <your image>

根据 docker 文档指南是:https://docs.docker.com/config/labels-custom-metadata/

link http://label-schema.org/rc1/ 对标签也很有用。构建时间标签在此处定义明确:

http://label-schema.org/rc1/#build-time-labels

我认为访问 docker 的标签是不可行的,因为它没有通过 Kubernetes API.

公开