一、控制器
1.Label与seletor
Labels就是一对key/vaule。被关联到对象上,对用户来说很有用,通过labels能够知道对象的意义。
通过Labels可以实现多维度的资源分组管理
示例:
"release" : "stable", "release" : "canary" "environment" : "dev","environment" : "qa","environment" : "production" "tier" : "frontend","tier" : "backend","tier" : "cache" "partition" : "customerA", "partition" : "customerB" "track" : "daily", "track" : "weekly"
1.1 Label key的组成
- 不得超过63个字符
- 可以使用前缀,使用/分隔,前缀必须是DNS子域,不得超过253个字符,系统中的自动化组件创建的label必须指定前缀,
kubernetes.io/
由kubernetes保留 - 起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点
1.2 Label value的组成:
- 不得超过63个字符
- 起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点
1.3 seletor
1.3.1 equality-based: 可以使用=、==、!=操作符,可以使用逗号分隔多个表达式
environment = production tier != frontend 第一个选择所有key等于 environment 值为 production 的资源。后一种选择所有key为 tier 值不等于 frontend 的资源,和那些没有key为 tier 的label的资源。
1.4 使用场景
1 kube-controller进程通过资源对象RC上定义的Label Selector来筛选要监控的Pod副本的数量,从而实现Pod副本的数量时钟符合预期设定的全自动控制流程 2 kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service到对应Pod的请求转发路由表,从而实现Service的只能负载均衡机制。 3 通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,kube-scheduler进程可以实现Pod“定向调度”的特性。