iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
Kubernetes

Kubernetes~成為Devops工程師的必經試煉系列 第 6

Day6  用 Label 做好Kubernate 管理

Label 介紹

在Kubernates上的實際操中,我們需要管理不同的Pod,例如像是要將不同環境的Pod同時起動,或是將有耦合的Pod分類在一起,這是我們在實際工作中需要用到的,而Kubernates提供Pod,讓我們針對不同的元件貼上不同的Pod,Label是附著到object上(例如Pod)的Key/Value值。可以在建立元件的時候指定,也可以在元件創建後隨時指定。Labels的值對系統本身並沒有什麼含義,只對User才有意義。

實際操作

我們先新增一個只有env=developmen label 的 Pod

$ kubectl create -f https://raw.githubusercontent.com/mhausenblas/kbe/master/specs/labels/pod.yaml

並且查詢該Pod目前的Label

$ kubectl get pods --show-labels
NAME       READY     STATUS    RESTARTS   AGE    LABELS
labelex    1/1       Running   0          10m    env=development

透過上面的指令我們可以看到 多了一個 "LABELS",這時候我們在Label 上多加一個owner的Key/Value值

$ kubectl label pods labelex owner=timtsai

$ kubectl get pods --show-labels
NAME        READY     STATUS    RESTARTS   AGE    LABELS
labelex     1/1       Running   0          3m    env=development,owner=timtsai

當我們再一次查詢時,可以看到這個Label已經加到了owener=timtsai

我們現在可以用--selector來查詢我們目前有的Pod

$ kubectl get pods --selector owner=timtsai
NAME      READY     STATUS    RESTARTS   AGE
labelex   1/1       Running   0          27m

也可以用 -l 來查詢我們目前LABEL有 env=development 的Pod

$ kubectl get pods -l env=development
NAME      READY     STATUS    RESTARTS   AGE
labelex   1/1       Running   0          27m

我們也可以在一開始建立元件的時候,就設定他的Label。
以下的建立的 Pod 有兩個Label,分別是(env=production 和 owner=michael)

$ kubectl create -f https://raw.githubusercontent.com/mhausenblas/kbe/master/specs/labels/anotherpod.yaml

我們現在可以用 in 查詢多的Label,這邊查詢 production 跟 development

$ kubectl get pods -l 'env in (production, development)'
NAME           READY     STATUS    RESTARTS   AGE
labelex        1/1       Running   0          33m
labelexother   1/1       Running   0          4m

參考資料

  1. Label
  2. Kubernetes labels by example

上一篇
Day 5 Kubernetes 最小部署單位 - Pod
下一篇
Day 7 隔離Kubernate中不同的元件 - Namespace
系列文
Kubernetes~成為Devops工程師的必經試煉17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言