kubernetes 中的容器标签

sam*_*sam 8 docker kubernetes

我正在使用 jenkins 构建我的 docker 镜像:

docker build --build-arg VCS_REF=$GIT_COMMIT \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
--build-arg BUILD_NUMBER=$BUILD_NUMBER -t $IMAGE_NAME\ 
Run Code Online (Sandbox Code Playgroud)

我之前使用的是 Docker,但我正在迁移到 k8。

使用 docker,我可以通过以下方式访问这些标签:

docker inspect --format "{{ index .Config.Labels \"$label\"}}" $container
Run Code Online (Sandbox Code Playgroud)

如何使用 Kubernetes 访问这些标签?

我知道在我的 yaml 文件的 .Metadata.labels 中添加这些标签,但我不太喜欢它,因为 - 它将这些信息链接到部署而不是容器本身
- 可以随时修改
......

kubectl describe pods
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*aze 2

Kubernetes 不会公开该数据。如果确实如此,它将成为PodStatus API 对象(及其嵌入的ContainerStatus )的一部分,该对象是将被 转储的Pod数据的一部分kubectl get pod deployment-name-12345-abcde -o yaml

您可能会考虑在 Docker 镜像标签中编码一些数据;例如,如果 CI 系统正在构建标记提交,则使用源代码控制标记名称作为映像标记,否则使用提交哈希或序列号。另一种典型的路径是使用像Helm这样的部署管理器作为部署的主要事实来源,如果您这样做,就可以有一条从 CD 系统到 Helm 到 Kubernetes 的路径,可以传递标签或注释。您还可以经常将软件设置为在构建时了解其自己的构建日期和源代码控制提交 ID,然后通过仅供参考的 API(例如 HTTP 调用GET /_version等)公开该信息。