文章 86
评论 0
浏览 124464
Label与Selector

Label与Selector

Label:对k8s中各种资源进行分类、分组,添加一个具有特别属性的一个标签。

Selector:通过一个过滤的语法进行查找到对应标签的资源

一、Label & Selector

官方文档:https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/labels/

当Kubernetes对系统的任何API对象如Pod和节点进行“分组”时,会对其添加Label(key=value形式的“键-值对”)用以精准地选择对应的API对象。而Selector(标签选择器)则是针对匹配对象的查询方法。注:键-值对就是key-value pair。

例如,常用的标签tier可用于区分容器的属性,如frontend、backend;或者一个release_track用于区分容器的环境,如canary、production等。

1.1 Label的介绍

label可以给k8s中大多数资源进行标签的定义,主要作用为用于指定对用户有意义且相关的对象的标识属性,但并不对资源工作参数任何影响。

标签是键值对。有效的标签键有两个段:可选的前缀和名称,用斜杠(/)分隔。 名称段是必需的,必须小于等于 63 个字符,以字母数字字符([a-z0-9A-Z])开头和结尾, 带有破折号(-),下划线(_),点( .)和之间的字母数字。

kubernetes.io/k8s.io/ 前缀是为 Kubernetes 核心组件保留的。

官方说明文档:https://kubernetes.io/zh/docs/reference/labels-annotations-taints/

1.2 标签的使用

添加label

大多数kubernetes中的资源都是可以进行打标签的,命令是kubectl label

#给指定的资源添加label
kubectl label deployments.apps nginx-1 app=nginx 

#给某一类型的所有资源打标签
kubectl label deployments.apps app=test --all

删除label

#删除指定资源的label
kubectl label deployments.apps nginx-1 app-

#删除某一类型所有资源的标签
kubectl label deployments.apps app- --all

修改标签

kubectl label deployments.apps nginx-1 app=nginx-1 --overwrite

查看资源标签

kubectl get deployments.apps --show-labels

1.3 利用label查找资源

kubectl get可以打印资源列表,并且可以使用-l参数利用label进行资源筛选

  • ==,=:等于
  • !=:不等于
  • in:包含
  • notin:不包含
#一个条件
kubectl get po -l app=nginx
kubectl get po -l app!=nginx

#多个label的and关系
kubectl get po -l app=nginx,app=nginx-1

#多个label的in关系
kubectl get po -l 'app in(nginx,nginx-1)'

#多个label的notin关系
kubectl get po -l 'app notin(nginx,nginx-1)'

标题:Label与Selector
作者:Carey
地址:HTTPS://zhangzhuo.ltd/articles/2022/01/05/1641346702655.html

生而为人

取消