Label

  1. 键值
  2. KEY_REFIX/KEY_NAME : KEY_VALUE
  3. 选择器: = ,==, != ,基于集合的 key in (…) ,key notin (…), key: , !key:
  4. 一些资源类型的spec字段中嵌套使用selector
    通过matchLabels 指定选择器
    matchExpressions

使用apply命令如遇到下错误,需要删除原有pod

The Pod "pod-demo" is invalid: spec.containers: Forbidden: pod updates may not add or remove containers

新增label

kubectl apply 或者使用kubectl label 命令都可以

修改label

[root@test basic]# kubectl label pods pod-demo app=mm
error: 'app' already has a value (pod-deo), and --overwrite is false    修改失败,请使用--overwrite选项
[root@test basic]# kubectl label pods pod-demo app=mm  --overwrite              
pod/pod-demo labeled     修改完成

删除label
不能通过删除yaml中的标签键值来处理

[root@test basic]# kubectl get pods --show-labels
NAME       READY   STATUS    RESTARTS   AGE     LABELS
pod-demo   1/1     Running   0          5m22s   app=pod-deo,rel=stable,se=wang,tire=111
[root@test basic]# cat pod-demo-3.yaml
apiVersion: v1
kind: Pod
metadata:
 name: pod-demo
 namespace: default
 labels:
  app: pod-deo
  rel: stable
  se: wang           备注:此处仅有三个标签
spec:
 containers:
 - name: ngx
   image: nginx:latest
   imagePullPolicy: IfNotPresent
[root@test basic]# kubectl apply  -f pod-demo-3.yaml
pod/pod-demo unchanged       结果显示pod没有任何调整

如果需要删除指定标签,请在键名后面加上- 减号

[root@test basic]# kubectl label pods pod-demo app-
pod/pod-demo labeled

使用标签进行查询
支持使用转义字符,请使用单引号

[root@test basic]# kubectl get pod --show-labels -l 'se'
NAME       READY   STATUS    RESTARTS   AGE   LABELS
pod-demo   1/1     Running   0          21m   rel=stable,se=wang,tire=111

[root@test ~]# kubectl get pods -l ' se in ( wang )'
NAME       READY   STATUS    RESTARTS   AGE
pod-demo   1/1     Running   0          130m

annotation

  1. 键值型数据,资源注解,不受字符数量限制
  2. 不能被标签选择器选择
  3. 常用命令 kubectl annotate
  4. 定义在metadata内嵌字段中
  5. . 使用describe查看
  6. 用途 记录每次apply的差异信息
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐