k8s标签Labels概念和操作详解
標(biāo)簽(Labels),是附加到k8s對(duì)象上的鍵值對(duì)標(biāo)識(shí),支持高效的查找和監(jiān)聽。作用就是字面意思,給k8s對(duì)象打上標(biāo)簽,我們可以使用標(biāo)簽來選擇對(duì)象。
和**注解(annotations)**的區(qū)別在于注解僅用于記錄一些元數(shù)據(jù),不能用來做標(biāo)識(shí)。不支持高效查找和監(jiān)聽
為什么要有標(biāo)簽
開發(fā)人員日常工作中肯定會(huì)用到類似id的概念,id就是用來唯一標(biāo)識(shí)某個(gè)對(duì)象。標(biāo)簽也是用來做標(biāo)識(shí),不過它可以從多個(gè)維度來標(biāo)識(shí),這就增加了通過標(biāo)識(shí)來管理的靈活性。
k8s管理的對(duì)象往往是很靈活而不是有固定層次結(jié)構(gòu)的,比如管理應(yīng)用的發(fā)布,會(huì)涉及到環(huán)境env、版本release、區(qū)域region,還經(jīng)常是交叉管理。用標(biāo)簽的話,就可以直接查找到自己想要管理的對(duì)象。
標(biāo)簽的語(yǔ)法
標(biāo)簽鍵:
- 一般情況下,鍵包括前綴和名稱,用/分隔
- 前綴可以省略,省略則視為用戶私有標(biāo)簽。
- 指定前綴,前綴必須是DNS子域,
- 名稱必須,不超過63個(gè)字符
- k8s.io/和kubernetes.io/前綴是為k8s核心組件保留的
標(biāo)簽值
- 不超過63個(gè)字符,可以為空
- 字母數(shù)字開頭和結(jié)尾
- 可以包含 - _ . 字母 數(shù)字
其他
- 每個(gè)對(duì)象都可以有多個(gè)標(biāo)簽,但是同一對(duì)象每個(gè)標(biāo)簽的鍵值必須是唯一的。
- 不同對(duì)象間的標(biāo)簽可以相同
標(biāo)簽選擇運(yùn)算符
=: 相等 ==: 相等 !=: 不相等,包括鍵不存在的情況 in: 在范圍之內(nèi) notin: 不在這個(gè)范圍之內(nèi),包含不存在這個(gè)標(biāo)簽的對(duì)象 exists: # 示例 env! = test 獲取全部env的值不為 test 和不存在 env 標(biāo)簽的對(duì)象- , (逗號(hào))表示與的關(guān)系
- 標(biāo)簽選擇器為空,則選擇所有。為null,全部不選擇
使用示例
命令后加上-v=9可以查看詳細(xì)的請(qǐng)求
設(shè)置標(biāo)簽
# 為命名空間test設(shè)置標(biāo)簽env=test kubectl label ns test env=test修改標(biāo)簽
內(nèi)部操作是先獲取全部label,再找到對(duì)應(yīng)鍵的label,修改值,再使用設(shè)置標(biāo)簽的接口
kubectl label --overwrite ns test env=production刪除標(biāo)簽
內(nèi)部操作也是先獲取全部label,再將對(duì)應(yīng)label置為null,再調(diào)用設(shè)置標(biāo)簽請(qǐng)求
kubectl label ns test env- # {"metadata":{"labels":{"env":null}}}查看命名空間標(biāo)簽
kubectl describe ns test | grep "Labels" -A 10根據(jù)標(biāo)簽搜索資源對(duì)象
kubectl get pods -l environment=production,tier=frontend# 實(shí)際訪問接口 # api/v1/namespaces/default/pods?labelSelector=environment=production&tier=frontend kubectl get pods -l 'environment in (production, test),tier in (frontend)'總結(jié)
以上是生活随笔為你收集整理的k8s标签Labels概念和操作详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发编程(七)好用的线程池ThreadP
- 下一篇: mysql index函数用法_mysq