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