Day07-Kubernetes 那些事 -Label 篇

前言

上一篇文章讲完 Pod 後不晓得大家会不会有一种疑惑,假如我今天 Pod 越创越多,这样要如何快速得知每个 Pod 到底在做什麽事情呢?除了 Pod 的命名以外还有第二个方式就是:Label

谜之声:工程师表示命名命好就行了,谁还在那边跟你写注解加标签那麽麻烦 XD

什麽是 Label?

Label 顾名思义就是标签,简单来说就是把这个 Pod 贴上标签让 K8s 可以方便控管这些 Pod 。

Label 的写法也很简单,就是自己新增一对具有辨识度的 key/value pair ,举例来说:你可以在 Labels 内这样定义 environment: developapp: frontend 等等非常弹性,整体写法就会像这样:

labels:
  app: frontend
  environment: develop

Label 的好处

讲了那麽多 Label 的用意後到底可以在实质上做到哪些事情呢?这边就要稍微提一下 Selector 了,假如读者有写过前端的话应该对这个字不陌生,其实 K8s 的 Selector 做的事情也差不多,目的就是要选取对应到的物件,为了要方便选取到我们设定好的 Pod 所以 Label 就派上用场啦!而 Selector 的写法也很简单就只要把我们 Label 定义好的 key/value pair 一五一十的复制进去就可以了,像底下这样:

selectors:
  app: frontend
  environment: develop

至於为何要选取这个後续的文章会提到所以就稍微卖个关子吧XD

什麽是 Annotation?

讲完 Label 後来讲点跟 Label 有点关联的孪生兄弟:Annotation 吧!

前面提到 Label 是给 K8s 看的那有没有办法是我们也想贴标签但是不想给 K8s 知道的,这时候就可以利用 Annotation 了,透过 Annotation 我们可以将这些标签单纯给开发人员看,听起来 Annotation 好像也没有实质上的意义毕竟 K8s 并不会采用此标签,但其实 Annotation 也是有用的喔!这边笔者在後续的文章也会讲到也稍微卖个关子吧XD

既然 Annotation 跟 Label 是孪生兄弟,想必写法应该也差不了多少,没错 Annotation 也是一组具有辨识性的 key/value pair 所以写法会像这样:

annotations:
  author: Andy Chen
  contact: [email protected]

套用到 Pod 上

接下来就让我们把上面提到的 Label 以及 Annotation 加到上一篇文章设定好的 Pod 中吧~

由於 metadata 是用来摆放描述性资料地方,所以这边要记得不管是 Label 还是 Annotation 都要摆在 metadata 中喔!

apiVersion: v1
kind: Pod
metadata:
  name: helloworld
  labels:
    app: frontend
    environment: develop
  annotations:
    author: Andy Chen
    contact: [email protected]
spec:
  containers:
    - name: helloworld
      image: w5151381guy/helloworld
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 8080

重新建立 Pod

由於我们 Pod 并没有更改 spec 内的内容只是新增 Label 以及 Annotation 而已,因此没办法直接用 kubectl replace -f fileName.yaml 的方式替换原本的 Pod ,这边只能删除再重建了。

建立完後为了确保 label 真的有成功贴到 Pod 上,这时候可以下 kubectl get pods --show-labels

小结

今天介绍了 Label 以及 Annotation ,相信大家应该更了解 K8s 的分类机制,这个分类机制相当重要在之後的文章会常常使用到这个技巧,毕竟一个专案肯定会越来越复杂没有做好这些分类的动作日後可是很难去追朔的。

如果对於文章有任何问题都欢迎留言给我,下一篇文章会提到 Service,那我们就下篇文章见喽~


<<:  Day 7. Compare × G2 × Draft

>>:  2021-Day17. Serverless(五):建立 GCP 帐号 (Google Cloud Platform)

以Ardiuno控制CPU散热器呼吸灯

▲ AR12-TUF采用导热管与CPU直接接触的热导管直触技术(HDC),4根Ø 6mm全铜热导管...

Day1 所以,网路到底是什麽?

在这个人手一机的时代,没接触过网路的人应该不多吧,不管是购物、查资料、追剧都会用到网路,但这个每天都...

【Day10】Git 版本控制 - 将档案 push 到 GitHub 的懒人包

今天来总结一下该如何将档案从本地数据库 push 到 GitHub 上,写个简单的懒人包,也算再复习...

D25 - 如何用 Apps Script 自动化地创造与客制 Google Sheet?(二)结合股票价格通知与信件

今天的目标: 帮自己用 Google Sheet 和 GAS 做一个数值到了就用 mail 提醒的程...

[DAY28] 战略设计的别扭事件

上一篇提到,要深入了解需求,需要大量的沟通,对应到 DDD 中非常重要的一环——与领域专家一同开会。...