Label 與 Annotation

Label

標籤,用在 Pod 的身上。

Label 語法

可以使用 / 的方式分隔主鍵的資料,如果有使用,則 / 之前必須使用 DNS 的格式,總長度不得超過 253 個字元,單一名稱不得超過 63 個字元,可以使用 -_.

範例:

主鍵
acme.com/app-version 1.0.0
appVersion 1.0.0
app.version 1.0.0
kube.io/cluster-service true

範例

建立一個有 ver=1,app=alpaca,env=prod 的 pod:

$ kubectl run alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:1 --replicas=2 --labels="ver=1,app=alpaca,env=prod"

建立 ver=2,app=alpaca,env=test 的 pod:

$ kubectl run alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:2 --replicas=2 --labels="ver=2,app=alpaca,env=test"

建立 ver=2,app=bandicoot,env=pord 的 pod:

$ kubectl run alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:1 --replicas=2 --labels="ver=2,app=bandicoot,env=pord"

建立 ver=2,app=bandicoot,env=staing 的 pod:

$ kubectl run alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:1 --replicas=2 --labels="ver=2,app=bandicoot,env=staing"

顯示 Labels

$ kubectl get deployments --show-labels
$ kubectl get deployments -L "(label-name)"
$ kubectl get pods --show-labels

修改 Label

在建立 Label 標籤後,可以修改或刪除標籤

修改:

$ kubectl label deployments alpaca-test "canary=true"

刪除,在標籤後面加一個 -,就可以除標籤:

$ kubectl label deployments alpaca-test "canary-"

Label 篩選器

--selector 就可以篩選標籤

$ kubectl get pods --selector="ver=2"
$ kubectl get pods --selector="ver=2,app=bandicoot"
$ kubectl get pods --selector="app in (bandicoot,alpaca)"

其他篩選運算子:

運算子 說明
key=value key 等於 value
key!=value key 不等於 value
ken in (val1,val2) key 等於 val1 或是 val2
key notin (val1,val2) key 不等於 val1 或是 val2
key 有定義 key
!key 沒有定義 key
$ kubectl get pods --show-labels

幫所有的 Pod 加上標籤

$ kubectl label pods --all status=abc

刪除所有
$ kubectl label pods –all status-

Annotation

讓 K8S 儲存中繼資料的空間,讓其他工具可以讀取的資料,像是 Json ,可以儲存在 Annotation 內,但是不能給選擇器使用。

可以想像 Annotation 是給其他工具的設定值(像是 etc 的作用,但不是真的 etcd),其中也會記錄一些滾動升級的狀態。

Annotaion 的格式與 Label 一樣。

文章資訊

slug:label_and_annotation
title:Label 與 Annotation
tags:label,annontation,k8s,Kubernetes
categories:k8s
thumbnail:banner-1.jpg

最後修改日期: 2019-08-27

作者