3.3.1 介绍标签

标签(lable)是可以附加到资源的任意键值对,用以选择具有该标签的资源(这是通过 label selectors 完成的 )。只要标签的key在资源内是唯一的, 一个资源便可以拥有多个标签。可以通过标签来组织pod和所有其他Kubernetes对象。
image.png
如图3.7所示, 通过添加两个标签基本上可以将这些pod组织为两个维度(基于应用的横向维度和基于版本的纵向维度)。

  • app, 它指定pod属于哪个应用、 组件或微服务。
  • rel, (release)它显示在pod中运行的应用程序版本是stable、beta还是canary。

定义:全丝雀(canary)发布是指在部署新版本时, 先只让一 小部分用户体验新版本以观察新版本的表现, 然后再向所有用户进行推广, 这样可以防止暴露有问题的版本给过多的用户。

3.3.2 创建pod时指定标签

  1. cat >kubia-manual-with-lables.yaml <<'EOF'
  2. apiVersion: v1
  3. kind: Pod
  4. metadata:
  5. name: kubia-manual-v2
  6. labels: #两个标签被附加到pod上
  7. creation_method: manual
  8. env: prod
  9. spec:
  10. containers:
  11. - image: 10.0.0.10:5000/luksa/kubia
  12. name: kubia
  13. ports:
  14. - containerPort: 8080
  15. protocol: TCP
  16. EOF

image.png
image.png
image.png

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的标签

image.png
image.png
image.png

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