4.3.2 管理资源标签
创建资源时,可直接在其 metadata 中嵌套使用 “labels” 字段以定义要附加的标签项。例如,下面的 Pod 资源清单文件示例 pod-with-labels.yaml 中使用了两个标签 env=qa 和 tier=frontend:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-labels
labels:
env: qa
tier: frontend
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
基于此资源清单创建出定义的Pod对象之后,即可在“kubectl get pods”命令中使用“--show-labels”选项,以额外显示对象的标签信息:
**[terminal]
**[delimiter $ ]**[command kubectl apply -f pod-with-labels.yaml]
pod/pod-with-labels created
**[delimiter $ ]**[command kubectl get pods --show-labels]
NAME READY STATUS RESTARTS AGE LABELS
pod-example 1/1 Running 1 2d4h <none>
pod-with-labels 1/1 Running 0 32s env=qa,tier=frontend
标签较多时,在 “kubectl get pods” 命令上使用 “-L key1, key2, ...” 选项可指定显示有着特定键的标签信息。例如,仅显示各 pods 之上的以 env 和 tier 为键名的标签:
**[terminal]
**[delimiter $ ]**[command kubectl get pods -L env,tier]
NAME READY STATUS RESTARTS AGE ENV TIER
pod-example 1/1 Running 1 2d4h
pod-with-labels 1/1 Running 0 4m3s qa frontend
“kubectl label” 命令可以直接管理活动对象的标签,以按需进行添加或修改等操作。例如,为 pod-example 添加 env=production 标签:
**[terminal]
**[delimiter $ ]**[command kubectl label pods/pod-example env=production]
pod/pod-example labeled
不过,对于已经附带了指定键名的标签,使用“kubectl label” 为其设定新的键值时需要为命令同时使用 “--overwrite” 命令以强制覆盖原有的键值。例如,将 pod-with-labels 的 env 的值修改为 “testing”:
**[terminal]
**[delimiter $ ]**[command kubectl label pods/pod-with-labels env=testing --overwrite]
pod/pod-with-labels labeled
用户若期望某标签之下的资源集合执行某类操作,例如,查看或删除等,则需要先使用“标签选择器”挑选出满足条件的资源对象。