3.3.1 介绍标签
标签(lable)是可以附加到资源的任意键值对,用以选择具有该标签的资源(这是通过 label selectors 完成的 )。只要标签的key在资源内是唯一的, 一个资源便可以拥有多个标签。可以通过标签来组织pod和所有其他Kubernetes对象。
如图3.7所示, 通过添加两个标签基本上可以将这些pod组织为两个维度(基于应用的横向维度和基于版本的纵向维度)。
- app, 它指定pod属于哪个应用、 组件或微服务。
- rel, (release)它显示在pod中运行的应用程序版本是stable、beta还是canary。
定义:全丝雀(canary)发布是指在部署新版本时, 先只让一 小部分用户体验新版本以观察新版本的表现, 然后再向所有用户进行推广, 这样可以防止暴露有问题的版本给过多的用户。
3.3.2 创建pod时指定标签
cat >kubia-manual-with-lables.yaml <<'EOF'
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual-v2
labels: #两个标签被附加到pod上
creation_method: manual
env: prod
spec:
containers:
- image: 10.0.0.10:5000/luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
EOF
Usage:
显示资源所有的标签
kubectl get TYPE NAME —show-labels
—show-labels=false: When printing, show all labels as the last column
(default hide labels column)
只显示资源指定的标签(标签中的key):即将label中的key作为一个列进行显示
kubectl get TYPE NAME -L label1,label2…
-L, —label-columns=[]: Accepts a comma separated list of labels that are going to be presented as columns. Names are case-sensitive. You can also use multiple flag options like -L label1 -L label2…
3.3.3 修改现有pod的标签
Usage:
添加标签:
kubectl label TYPE NAME KEY_1=VAL_1 KEY_N=VAL_N
修改已有标签:
kubectl label TYPE NAME KEY_1=VAL_1 KEY_N=VAL_N —overwrite