为什么需要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
如果我们为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
发表评论