第九章 kubernetes 核心技术-Label

一、Label 概述

Label是Kubernetes系统中另外一个核心概念。一个Label是一个key=value的键值对,其中key与vaue由用户自己指定。Label可以附加到各种资源对象上,例如Node、Pod、Service、RC等,一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

	我们可以通过指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置、部署等管理工作。例如:部署不同版本的应用到不同的环境中;或者监控和分析应用(日志记录、监控、告警)等。一些常用等label示例如下。
•	版本标签:"release" : "stable" , "release" : "canary"
•	环境标签:"environment" : "dev" , "environment" : "production"
•	架构标签:"tier" : "frontend" , "tier" : "backend" , "tier" : "middleware"
•	分区标签:"partition" : "customerA" , "partition" : "customerB"
•	质量管控标签:"track" : "daily" , "track" : "weekly"
	
	Label相当于我们熟悉的“标签”,給某个资源对象定义一个Label,就相当于給它打了一个标签,随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,Kubernetes通过这种方式实现了类似SQL的简单又通用的对象查询机制。
	
[root@k8s-master-01 ~]# kubectl  get  pods --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
test-nginx-84c57cc6c8-76ttk   1/1     Running   1          18h   app=test-nginx,pod-template-hash=84c57cc6c8
test-nginx-84c57cc6c8-7wg8p   1/1     Running   1          18h   app=test-nginx,pod-template-hash=84c57cc6c8

二、根据标签来查询Pod

#查看所有pod标签
[root@k8s-master-001 ~]# kubectl get pods --show-labels
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
test-nginx-84c57cc6c8-76ttk   1/1     Running   1          18h   app=test-nginx,pod-template-hash=84c57cc6c8,task=test
test-nginx-84c57cc6c8-7wg8p   1/1     Running   1          18h   app=test-nginx,pod-template-hash=84c57cc6c8
test-nginx-84c57cc6c8-bl59z   1/1     Running   1          18h   app=test-nginx,pod-template-hash=84c57cc6c8


[root@k8s-master-001 ~]# kubectl get pod --show-labels -n docs
NAME                    READY   STATUS    RESTARTS   AGE   LABELS
docs-85686dc954-6jv56   1/1     Running   1          10d   app=docs,pod-template-hash=85686dc954
docs-85686dc954-hr427   1/1     Running   0          10d   app=docs,pod-template-hash=85686dc954

[root@k8s-master-001 ~]# kubectl get pods -l task=test
NAME                          READY   STATUS    RESTARTS   AGE
test-nginx-84c57cc6c8-76ttk   1/1     Running   1          18h

三、增加标签

[root@k8s-master-001 ~]# kubectl label pod -n docs docs-85686dc954-6jv56 dev=test
pod/docs-85686dc954-6jv56 labeled

[root@k8s-master-001 ~]# kubectl get pod --show-labels -n docs
NAME                    READY   STATUS    RESTARTS   AGE   LABELS
docs-85686dc954-6jv56   1/1     Running   1          10d   app=docs,dev=test,pod-template-hash=85686dc954
docs-85686dc954-hr427   1/1     Running   0          10d   app=docs,pod-template-hash=85686dc954

四、删除标签

[root@k8s-master-001 ~]# kubectl label pod -n docs docs-85686dc954-6jv56 dev-
pod/docs-85686dc954-6jv56 labeled

[root@k8s-master-001 ~]# kubectl get pod --show-labels -n docs
NAME                    READY   STATUS    RESTARTS   AGE   LABELS
docs-85686dc954-6jv56   1/1     Running   1          10d   app=docs,pod-template-hash=85686dc954
docs-85686dc954-hr427   1/1     Running   0          10d   app=docs,pod-template-hash=85686dc954

五、将标签显示为列

[root@k8s-master-001 ~]# kubectl get pods -L app -n docs
NAME                    READY   STATUS    RESTARTS   AGE   APP
docs-85686dc954-6jv56   1/1     Running   1          10d   docs
docs-85686dc954-hr427   1/1     Running   0          10d   docs
posted @ 2021-11-23 17:47  年少纵马且长歌  阅读(90)  评论(0编辑  收藏  举报