所屬技術領域:
K8s
|名詞定義|
标簽其實就一對 key/value ,被關聯到對象上,比如Pod,标簽的使用我們傾向于能夠标示對象的特殊特點,并且對使用者而言是有意義的(就是一眼就看出了這個Pod是尼瑪資料庫),但是标簽對核心系統是沒有直接意義的。标簽可以用來劃分特定組的對象(比如,所有女的),标簽可以在建立一個對象的時候直接給與設定,也可以在後期随時修改,每一個對象可以擁有多個标簽,但是,key值必須是唯一的
"labels": {
"key1" : "value1",
"key2" : "value2"
}
我們最終會索引并且反向索引(reverse-index)labels,以獲得更高效的查詢和監視,把他們用到UI或者CLI中用來排序或者分組等等。我們不想用那些不具有指認效果的label來污染label,特别是那些體積較大和結構型的的資料。不具有指認效果的資訊應該使用annotation來記錄。
|技術特點|
Label的文法和字元集
Label其實是一對 key/value,有效的Label keys必須是部分:一個可選字首+名稱,通過/來區分,名稱部分是必須的,并且最多63個字元,開始和結束的字元必須是字母或者數字,中間是字母數字和”_”,”-“,”.”,字首是刻有可無的,如果指定了,那麼字首必須是一個DNS子域,一系列的DNSlabel通過”.”來劃分,長度不超過253個字元,“/”來結尾。如果字首被省略了,這個Label的key被假定為對使用者私有的,自動系統組成部分(比如kube-scheduler, kube-controller-manager, kube-apiserver, kubectl),這些為最終使用者添加标簽的必須要指定一個字首,Kuberentes.io 字首是為Kubernetes 核心部分保留的。
合法的label值必須是63個或者更短的字元。要麼是空,要麼首位字元必須為字母數字字元,中間必須是橫線,下劃線,點或者數字字母。
Label選擇器
與name和UID不同,label不提供唯一性。通常,我們會看到很多對象有着一樣的label。
通過label選擇器,用戶端/使用者能友善辨識出一組對象。label選擇器是kubernetes中核心的組織原語。
API目前支援兩種選擇器:基于相等的和基于集合的。一個label選擇器一可以由多個必須條件組成,由逗号分隔。在多個必須條件指定的情況下,所有的條件都必須滿足,因而逗号起着AND邏輯運算符的作用。
一個空的label選擇器(即有0個必須條件的選擇器)會選擇集合中的每一個對象。
一個null型label選擇器(僅對于可選的選擇器字段才可能)不會傳回任何對象
Labels的例子
第一個中繼資料,也是最重要的一個中繼資料是:資源标簽。資源标簽是一種具有辨別型的 Key:Value 中繼資料,這裡展示了幾個常見的标簽。

前三個标簽都打在了 Pod 對象上,分别辨別了對應的應用環境、釋出的成熟度和應用的版本。從應用标簽的例子可以看到,标簽的名字包括了一個域名的字首,用來描述打标簽的系統和工具, 最後一個标簽打在 Node 對象上,還在域名前增加了版本的辨別 beta 字元串。
标簽主要用來篩選資源群組合資源,可以使用類似于 SQL 查詢 select,來根據 Label 查詢相關的資源。
|資料來源|
名詞定義:
https://www.kubernetes.org.cn/kubernetes-labels技術特點: