kubernetes - 有什么区别。Kubernetes 中的注释和标签?
问题描述
我正在努力解决注释和标签之间的区别。
我对注解的理解是,它是添加键值对的元数据,Kubernetes 无法使用它来识别/过滤资源。
另一方面,标签是元数据键值对,Kubernetes 可以使用它来识别/过滤资源。
这是正确的吗?如果是这样,那么注释的实际用途是什么?跟性能有关系吗?标签在 Kubernetes 的扫描仪下用于过滤器和注释纯粹是为了添加只是信息的元数据?
但我见过部署需要 Nginx 或使用注释的入口功能的情况。那么如何搜索或使用它。为什么这里不使用标签?
我们什么时候在标签上使用注释,反之亦然?各自的优缺点是什么?
我的理解在这里相当有限,但是阅读官方文档并没有真正帮助我理解何时使用注释与标签的用例。
解决方案
标签是可以附加到 Kubernetes 对象(例如 Pod 和 ReplicaSet)的键/值对。它们可以是任意的,并且对于将识别信息附加到 Kubernetes 对象很有用。标签为对象分组提供了基础。
另一方面,注释提供了一种类似于标签的存储机制:注释是键/值对,旨在保存可被工具和库利用的非识别信息。
-- Kubernetes 启动并运行,第 6 章
标签用于标识资源
标签可以做什么的例子:
查找具有与该键关联的值的所有 pod
kubectl get pods -l key=val,key2=val2
合并和流式传输共享相同标签的各种 pod 的日志
kubectl logs -l key=val
之所以将标签用作选择器而不是注释,是因为大多数 Kubernetes 实现在 etcd 中索引标签。
注释用于存储有关资源本身的数据
这通常由机器生成的数据组成,甚至可以以 JSON 格式存储。
例子:
- 最近更新时间
- 由管理
- Sidecar 注入配置等