kubernetes的标签和标签选择器

标签

标签( Labels ) 是附加到 Kubernetes 对象(比如 Pods)上的键值对。 标签旨在用于指定对用户有意义且相 关的对象的标识属性,但不直接对核心系统有语义含义。 标签可以用于组织和选择对象的子集。标签可以在创建时附 加到对象,随后可以随时添加和修改。每个对象都可以定义一组键 / 值标签。每个键对于给定对象必须是唯一的

标签选择器

通过 标签选择算符,客户端 / 用户可以识别一组对象。标签选择算符是 Kubernetes 中的核心分组原语。API 目前支持两种类型的选择算符:基于等值的 和 基于集合的。
标签选择算符可以由逗号分隔的多个需求组成。 在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑 与( && )运算符。

基于等值的

基于等值 或 基于不等值 的需求允许按标签键和值进行过滤。匹配对象必须满足所有指定的标签约束,尽管它们也可能具有其他标签。可接受的运算符有 = == != 三种。前两个表示 相等(并且只是同义词),而后者表示不相等。例如
#格式
environment = production 
tier != frontend

#yaml文件格式
  selector:
    matchLabels:
      k8s-app: metrics-server
      version: v0.3.6

基于集合的

基于集合 的标签需求允许你通过一组值来过滤键。支持三种操作符: in notin exists ( 只可以用在键标识符上)。
#基于集合的格式
environment in (production, qa) 
tier notin (frontend, backend) 
partition 
!partition
#yaml格式引用
matchExpressions: 
  - key: kubernetes.io/hostname
    operator: NotIn
    values: 
      - xuh04
      - k8s-node02
  - key: environment
    operator: NotIn
    values: dev

针对标签和标签选择器的操作命令和示例

#给节点打标签
kubectl label node k8s-worker02 disk=ssd
#给service打标签
kubectl label service my-nginx app=nginx
#给pod打多个标签
kubectl label pod my-nginx app=nginx env=test
#删除标签
kubectl label node k8s-worker02 disk-
#修改标签
kubectl label pod my-nginx app=web --overwrite
#根据标签进行过滤
kubectl get pods -l app=nginx
kubectl get pod -l "app in (web,nginx)" --show-labels
kubectl get pod -l app
#当标签较多时,也可以使用 -L 来指定显示那些标签
kubectl get pods -L app
#显示对应资源的所有标签
kubectl get svc my-nginx --show-labels

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忍冬行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值