侧边栏壁纸
博主头像
汪洋

即使慢,驰而不息,纵会落后,纵会失败,但一定可以达到他所向的目标。 - 鲁迅

  • 累计撰写 190 篇文章
  • 累计创建 74 个标签
  • 累计收到 108 条评论

kubernetes - 标签操作

汪洋
2021-08-23 / 0 评论 / 0 点赞 / 292 阅读 / 1,422 字

标签

标签配置
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deployment # 标签配置
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx-deployment	# 标签配置
    spec:
      containers:
      - image: wangyanglinux/myapp:v1
        name: myapp
查看标签

kubectl get pods 命令默认不会列出任何标签,但我们可以使用 --show-labels 选项来查看 :

$ kubectl get po --show-labels

如果你只对某些标签感兴趣,可以使用 L 选项指定它们并将它们分别显示在 自己的列中,而不是列出所有标签。

指定标签列查看
$ kubectl get po -L creation_method,env 

添加标签:
$ kubectl label pod pod名 key=values

修改标签:
$ kubectl label pod pod名 key=values --overwrite

标签选择器

标签选择器允许我们选择标记有特定标签的 pod 子集, 并对这些 pod 执行操作。是一种能够根据是否包含 key/values 来进行过滤资源的准则。标签选择器根据资源的以下条件来选择资源 :

  • 包含或不包含特定键的标签
  • 包含特定键和值的标签
  • 包含特定键的标签,但其值与我们指定的不同(也就是 not )
查看匹配 标签 key= 标签 values 的 pod
[root@k8s-master01 ~]# kubectl  get pod -l app=nginx-deployment
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-697746d6c5-btn87   1/1     Running   0          9m
查看匹配 标签 key 的 pod
[root@k8s-master01 ~]# kubectl  get pod -l app
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-697746d6c5-btn87   1/1     Running   0          9m57s
tomcat-657759dcdb-g45nf             1/1     Running   0          59s
查看 不包含标签 env 的 pod
[root@k8s-master01 ~]# kubectl  get pod -l '!app'
No resources found.
更多匹配
  • 匹配标签 key 不是标签 values 的 pod  creation_method!=manual
  • 匹配带有 env 标签且值是 prod 或 devel 的 pod  env in (prod, devel)
  • 匹配带有 env 标签且值不是 prod 或 devel 的 pod  env notin (prod, devel)
多条件匹配

使用逗号分隔的情况下,即可使用多个条件匹配。在包含多个逗号分隔的情况下,可以在标签选择器中同时使用多个条件,此时资源需要全部匹配才算成功匹配了选择器。例如,如果我们只想选择 product catalog 微服务的 beta 版本 pod,可以使用如下选择器

app=pc,rel=beta

0

评论区