Label:组织Pod的利器

为什么需要Label

当资源变得非常多的时候,如何分类管理就非常重要了,Kubernetes提供了一种机制来为资源分类,那就是Label(标签)。Label非常简单,但是却很强大,Kubernetes中几乎所有资源都可以用Label来组织

Label的具体形式是key-value的标记对,可以在com.cn/tag/%e5%88%9b%e5%bb%ba" target="_blank">创建资源的时候设置,也可以在后期添加和修改。

以Pod为例,j J a ( z s } + 3当Pod变得多起来后,就显得杂乱且难以管理,如下图所示。

图1 没有分类组织的Pod
Label:组织Pod的利器
如果我们为Pod打上不同标签; h 0 j / | L G,那情况就完D Y I ? w @全不同了,如下图所示。

图2/ l e u k ^ 使用Label组织的Pod

添加Label

Label的形式为key-value形式,使用非常简单,如下,为Pod设置了app=nginx和env=prod两个Label。

aph R 8 , WiVersion: v1
kind: Pod
metadatN 9 4 l ] y H Ia:
name: nginx
labels:                     # 为Pod设置两个Label
app: nginx
env: prod
spec:
containers:
- image: nginxU @ a X 9 C I 9:alpQ k E ! p A 1 $ Iine
name: container-0
resources:
limits:
cpu: 100m
memory: 200Mi
requestp : j rs:
cpu: 100m
memory: 2m B 00Mi
imagePull/ 0 T c ^ ) ~ aSecrets:
- name: default-secret

Pod有了Label后,在查询Pod的时候带上--show-labels就可以看到Pod的Label。

$ kubectl get pod --show-labels
N~ F ; 1 E a - y UAME              READY   STATUS    RESTARTS   AGE   LABELS
nginx             1/1     Running   0          50s   app=nginx,env=prod

还可以使用-L只查询某( l & $ P j p g些固定的Label。l t _ . I e y } ;

$ kuw r 8 + @bectl get pod -L app,env
NAME              READY   STATUS    RESTARTS   AGE   APP     ENV
nginx             1/1     RunnO Y 0 [ r [ing   0          1m    nginx   prod

对已存在的Pod,可以直接使用kubectl label命令直接添加Label。

$ kubectl label po nginx creation_method=manual
pod/nginx labeled
$ kubectl get pod --show-labels
NAME              READY   STATUS    RESTARTS   AGE   LABELS& l R ] ^ X - K (
nginx             1/1     Ru] U # ~nning   0          50s   app=nginx, creation_method=manual,env=prod

修改Label

对于已存在的L$ ` 8 w V F ) ~ !abe5 c M f . K n Ml,如果要修改的话,需要在命令F v O ! -中带上--overwrite,如下所示。1 T L o [ ] d n @

$ kubectl law A K ) T 7 , l Sbel po nginx e6 f j ` 9 ( 1 ;nv=debug --overwrite
pod/ngix | ~ 4 k S Jnx labeled
$ kubectl get pod -C 3 7 ) ! 9 J h-show-labels
NAME              Rd q ^ | 7 %EADY   STATUS    RES5 { y 5TARTS   AGE   LABELS
nginx             1/1     Running   0          50s   app=nginx,creB E p / Oation_method=manual,env=debug