Label 概述

Label 是 Kubernetes 系统中另一个核心概念。一个 Label 是一个 key=value 的键值对,其中 key 与 value 由用户自己指 定。Label 可以附加到各种资源对象上,如 Node、Pod、 Service、RC,一个资源对象可以定义任意数量的 Label, 同一个 Label 也可以被添加到 任意数量的资源对象上,Label 通常在资源对象定义时确定,也可以在对象创建后动态添加或删除。
Label 的最常见的用法是使用 metadata.labels 字段,来为对象添加 Label,通过 spec.selector 来引用对象。

Label 示例

  1. apiVersion: v1
  2. kind: ReplicationController metadata:
  3. name: nginx spec:
  4. replicas: 3 selector:
  5. app: nginx template:
  6. metadata:
  7. labels: app: nginx spec:
  8. containers:
  9. - name: nginx
  10. image: nginx
  11. ports:
  12. - containerPort: 80
  13. -------------------------------------
  14. apiVersion: v1
  15. kind: Service
  16. metadata:
  17. name: nginx
  18. spec:
  19. type: NodePort
  20. ports:
  21. - port: 80
  22. nodePort: 3333
  23. selector:
  24. app: nginx

Label 附加到 Kubernetes 集群中各种资源对象上,目的就是对这些资源对象进行分组管理, 而分组管理的核心就 是 Label Selector。Label 与 Label Selector 都是不能单独定义, 必须附加在一些资源对象的定义文件上,一般附加 在 RC 和 Service 的资源定义文件中。