kubernetes - 有什么区别。 Kubernetes 中的注释和标签?

标签 kubernetes deployment devops admin kubernetes-apiserver

我正在努力解决注释和标签之间的区别。
我对注解的理解是,元数据添加了 Kubernetes 无法用于识别/过滤资源的键值对。
另一方面,标签是元数据键值对,Kubernetes 可以使用它来识别/过滤资源。
这是正确的吗?如果是这样,那么注解的实际用途是什么?和性能有关系吗? Kubernetes 的过滤器和注释扫描仪下的标签纯粹用于添加仅提供信息的元数据吗?
但我已经看到部署需要 Nginx 或使用注释的入口功能的情况。那么如何搜索或使用它。为什么这里不使用标签?
我们什么时候在标签上使用注释,反之亦然?各自的优缺点是什么?
我的理解在这里相当有限,但是阅读官方文档并没有真正帮助我理解何时使用注释与标签的用例。

最佳答案

Labels are key/value pairs that can be attached to Kubernetes objects such as Pods and ReplicaSets. They can be arbitrary, and are useful for attaching identifying information to Kubernetes objects. Labels provide the foundation for grouping objects.

Annotations, on the other hand, provide a storage mechanism that resembles labels: annotations are key/value pairs designed to hold nonidentifying information that can be leveraged by tools and libraries.

-- Kubernetes up & running, Chapter 6


标签用于识别资源
标签可以做什么的示例:
  • 查找具有与键关联的值的所有 podkubectl get pods -l key=val,key2=val2
  • 合并和流式传输共享相同标签的各种 pod 的日志kubectl logs -l key=val

  • 标签被用作选择器而不是注释的原因是因为 etcd 中的大多数 Kubernetes 实现索引标签。
    注释用于存储有关资源本身的数据
    这通常由机器生成的数据组成,甚至可以以 JSON 形式存储。
    例子:
  • 最后更新
  • 管理
  • sidecar注入(inject)配置等
  • 关于kubernetes - 有什么区别。 Kubernetes 中的注释和标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67223202/

    相关文章:

    amazon-web-services - AWS 上的 Kubernetes 1.3.x 只有一个工作 Minion

    docker - 在 kubernetes 中运行的命令挂起

    Meego 中的部署因大型 Deb 文件而崩溃

    azure-devops - 如何在 Azure DevOps 中按用户和日期报告记录的任务时间?

    amazon-web-services - 节点未加入 aws eks

    kubernetes - Airflow kubernetes pod 运算符(operator)和任务之间共享文件?

    kubernetes - 我们在opsgenie中收到KubepiLatencyHigh错误

    .net - 为什么某些特定于 Azure 的程序集不存在于 Azure 实例上?

    ruby-on-rails - 我应该如何在生产环境中运行 delay_job?

    mysql - 如何在 devops 管道中持续交付数据库更改