Label
Label(标签)是 Kubernetes 系统中的另一个核心概念。
一个 Label 是一个 key=value 的键值对,其中 key 与 value 由用户自己指定。
Label 可以被附加到各种资源对象上,例如 Node、Pod、Service、RC 等,一个资源对象可以定义任意数量的 Label,同一个 Label 也可以被添加到任意数量的资源对象上。
Label 通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。
我们可以通过给指定的资源对象捆绑一个或多个不同的 Label 来实现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。例如,部署不同版本的应用到不同的环境中;监控和分析应用(日志记录、监控、告警)等。
一些常用的 Label 示例如下:
版本标签:"release" : "stable"、"release" : "canary"。
环境标签:"environment":"dev"、"environment":"qa"、"environment":"production"。
架构标签:"tier" : "frontend"、"tier" : "backend"、"tier" : "middleware"。
分区标签:"partition" : "customerA"、"partition" : "customerB"。
质量管控标签:"track" : "daily"、"track" : "weekly"。
给某个资源对象定义一个 Label,就相当于给它打了一个标签,随后可以通过 Label Selector(标签选择器)查询和筛选拥有某些 Label 的资源对象。
Label Selector 在 Kubernetes 中的重要使用场景有以下几处:
kube-controller 进程通过资源对象 RC 上定义的 Label Selector 来筛选要监控的 Pod 副本的数量,从而实现 Pod 副本的数量始终符合预期设定的全自动控制流程。
kube-proxy 进程通过 Service 的 Label Selector 来选择对应的 Pod,自动建立起每个 Service 到对应 Pod 的请求转发路由表,从而实现 Service 的智能负载均衡机制。
通过对某些 Node 定义特定的 Label,并且在 Pod 定义文件中使用 NodeSelector 这种标签调度策略,kube-scheduler 进程可以实现 Pod “定向调度”的特性。
当前有两种 Label Selector 的表达式:
最后更新于
这有帮助吗?