K8S-疑难知识点

发布时间 2023-08-31 15:00:49作者: 东行天下

一、控制器

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“定向调度”的特性。