乐趣区

关于kubernetes:05kubernetes笔记-labels-标签

kubernetes labels 标签简介

标签中的键名称通常由 ” 键前缀 ” 和键名 ”“组成,其格局形如 ”KEY PREFIX/KEY_NAME”,键前缀为可选局部。键名至少能应用 63 个字符,反对字母、数字、连接号 (-)、下划线(_)、点号(.) 等字符,且只能以字母或数字结尾。而键前缀必须为 DNS 子域名格局。且不能超过 253 个字符。省路键前缀时,键将被视为用户的公有数据。那些由 Kubernetes 零碎组件或第三方组件主动为用户资源增加的键必须应用键前缀,kubernetes.io/ 和 k8s.io/ 前缀预留给了 kubernetes 的外围组件应用,
例如:Node 对象上罕用的 kubernetes.io/os、kutbernetes.io/arch 和 kubernetes.io/hostname 等。

标签的键值必须不能多于 63 个字符,它要么为空,要么是以字母或数字结尾及结尾,且两头仅应用了字母、数字、连接号(-)、下划线(_)或点号(.)等字符的数据。

标签选择器用于表白标签的查问条件或抉择规范,Kubernetes API 目前反对两个选择器; 基于等值关系 (equality-based》的标签选项器以及基于汇合关系(set-bsel) 的标签选择器。同时指定多个选择器时须要以逗号将其分隔,各选择器之间遵循“与 ” 逻辑,即必须要满足所有条件,而且空值的选择器将不抉择任何对象。

基于等值关系的标签选择器的可用操作符有 =、== 和!= 三种,其中前两个意义雷同, 都示意 ” 等值 ” 关系,最初一个示意 ” 不等”。例如 env=dev 和 env!=prod 都是基于等值关系的选择器,而 tier in (frontend,backend)则是基于汇合关系的选择器。

创立标签时:release=alpha,
标签选择器应用:release==alpha

罕用标签:

  • 版本标签: “release” : “stable”,”release” : “canary”, “release” : “beta”.
  • 环境标签: “environment” : “dev”,“environment” : “qa”,”environment” : “prod”
  • 利用标签: “app” : “ui”,”app” : “as”,”app” : “pc”,”app” : “sc”
  • 架构层级标签: “tier” : “frontend”, “tier” : “backend” , “tier” : “cache”
  • 分区标签: “partition” : “customerA”,”partition” : “customerB”。
  • 品控级别标签:”track” : “daily”,“track” : “weekly”。

匹配条件

  • KEY in (VALUE1,VALUE2,.….)∶指定的键名的值存在于给定的列表中即满足条件;
  • KEY notin (VALUE1,VALUE2,.)︰指定的键名的值不存在于给定列表中即满足条件;
  • KEY: 所有存在此键名标签的资源;
  • !KEY: 所有不存在此键名标签的资源。

示例 1: 手动增加标签

[root@k8s-master svc]# kubectl label  --help
[root@k8s-master svc]# kubectl get pod --show-labels   #查看标签
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
stress-pod                    1/1     Running   1          25h   <none>

[root@k8s-master svc]# kubectl label pods stress-pod release=alpha   #增加标签
pod/stress-pod labeled

[root@k8s-master svc]# kubectl get pod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
stress-pod                    1/1     Running   1          25h   release=alpha
[root@k8s-master svc]# kubectl label pods stress-pod release-   #删除标签
pod/stress-pod labeled
[root@k8s-master svc]# kubectl get pod --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
stress-pod                    1/1     Running   1          25h   <none>
  • 标签匹配抉择 过滤
[root@k8s-master svc]# kubectl get pod --show-labels
NAME                          READY   STATUS              RESTARTS   AGE   LABELS
demoapp-66db74fcfc-9wkgj      1/1     Running             0          11m   app=demoapp,pod-template-hash=66db74fcfc,release=stable
demoapp-66db74fcfc-vzb4f      1/1     Running             0          11m   app=demoapp,pod-template-hash=66db74fcfc,release=stable
liveness-httpget-demo         0/1     ContainerCreating   0          25s   <none>
liveness-tcpsocket-demo       0/1     ContainerCreating   0          20s   <none>
my-grafana-7d788c5479-kpq9q   1/1     Running             4          27d   app.kubernetes.io/instance=my-grafana,app.kubernetes.io/name=grafana,pod-template-hash=7d788c5479


[root@k8s-master svc]# kubectl get pods -l app=demoapp  --show-labels    #过滤标签 app=demoapp 的 pod
NAME                       READY   STATUS    RESTARTS   AGE   LABELS
demoapp-66db74fcfc-9wkgj   1/1     Running   0          12m   app=demoapp,pod-template-hash=66db74fcfc,release=stable
demoapp-66db74fcfc-vzb4f   1/1     Running   0          12m   app=demoapp,pod-template-hash=66db74fcfc,release=stable

[root@k8s-master svc]# kubectl get pods -l app!=demoapp  --show-labels    #所有不匹配 app=demoapp 的 pod 蕴含没有 app 标签的 pod  
NAME                          READY   STATUS    RESTARTS   AGE     LABELS
liveness-httpget-demo         1/1     Running   2          3m28s   <none>
liveness-tcpsocket-demo       1/1     Running   2          3m23s   <none>
my-grafana-7d788c5479-kpq9q   1/1     Running   4          27d     app.kubernetes.io/instance=my-grafana,app.kubernetes.io/name=grafana,pod-template-hash=7d788c5479
stress-pod                    1/1     Running   1          27h     <none>

[root@k8s-master svc]# kubectl get pods -l app  --show-labels   #过滤所有含 app 标签的容器
NAME                       READY   STATUS    RESTARTS   AGE   LABELS 
demoapp-66db74fcfc-9wkgj   1/1     Running   0          16m   app=demoapp,pod-template-hash=66db74fcfc,release=stable
demoapp-66db74fcfc-vzb4f   1/1     Running   0          16m   app=demoapp,pod-template-hash=66db74fcfc,release=stable

[root@k8s-master svc]# kubectl get pods -l '!app'  --show-labels  #过滤所有不含 app 标签的容器
NAME                          READY   STATUS    RESTARTS   AGE     LABELS
liveness-httpget-demo         1/1     Running   3          6m33s   <none>
liveness-tcpsocket-demo       1/1     Running   3          6m28s   <none>
my-grafana-7d788c5479-kpq9q   1/1     Running   4          27d     app.kubernetes.io/instance=my-grafana,app.kubernetes.io/name=grafana,pod-template-hash=7d788c5479

[root@k8s-master svc]# kubectl label pods liveness-httpget-demo app=liveness    #增加 app 标签
pod/liveness-httpget-demo labeled

[root@k8s-master svc]# kubectl get pods -l 'app in (demoapp,liveness)'  --show-labels   #过滤 app= demoapp 或 liveness 的 pod
NAME                       READY   STATUS    RESTARTS   AGE     LABELS
demoapp-66db74fcfc-9wkgj   1/1     Running   0          20m     app=demoapp,pod-template-hash=66db74fcfc,release=stable
demoapp-66db74fcfc-vzb4f   1/1     Running   0          20m     app=demoapp,pod-template-hash=66db74fcfc,release=stable
liveness-httpget-demo      1/1     Running   3          9m45s   app=liveness

[root@k8s-master svc]# kubectl label pods demoapp-66db74fcfc-vzb4f track=daily  #增加标签
pod/demoapp-66db74fcfc-vzb4f labeled

[root@k8s-master svc]# kubectl get pods -l 'app=demoapp,track=daily' --show-labels   #过滤 app=demoapp,track=daily 同时满足条件的 pod
NAME                       READY   STATUS    RESTARTS   AGE   LABELS
demoapp-66db74fcfc-vzb4f   1/1     Running   0          26m   app=demoapp,pod-template-hash=66db74fcfc,release=stable,track=daily

[root@k8s-master svc]# kubectl get deployment  -l app=demoapp --show-labels   #标签过滤同样对其实资源无效
NAME      READY   UP-TO-DATE   AVAILABLE   AGE   LABELS
demoapp   2/2     2            2           28m   app=demoapp,release=stable
退出移动版