Label

    Kubernetes最终将对labels最终索引和反向索引用来优化查询和watch,在UI和命令行中会对它们排序。不要在label中使用大型、非标识的结构化数据,记录这样的数据应该用annotation。

    Label能够将组织架构映射到系统架构上(就像是康威定律),这样能够更便于微服务的管理,你可以给object打上如下类型的label:

    • "environment" : "dev", "environment" : "qa", "environment" : "production"
    • "tier" : "frontend", "tier" : "backend", "tier" : "cache"
    • "partition" : "customerA",
    • "track" : "daily", "track" : "weekly"
    • "team" : "teamA","team:" : "teamB"

    Label key的组成:

    • 可以使用前缀,使用/分隔,前缀必须是DNS子域,不得超过253个字符,系统中的自动化组件创建的label必须指定前缀,kubernetes.io/由kubernetes保留
    • 起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点
    • 不得超过63个字符
    • 起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点

    Label不是唯一的,很多object可能有相同的label。

    通过label selector,客户端/用户可以指定一个object集合,通过label selector对object的集合进行操作。

    Label selector有两种类型:

    • equality-based :可以使用===!=操作符,可以使用逗号分隔多个表达式

    JobDeploymentReplicaSet和这些object中,支持set-based的过滤,例如:

    如Service通过label selector将同一类型的pod作为一个服务expose出来。