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