Namespace與它的好朋友們(annotation/label/selector)

閱讀時間約 9 分鐘

今天分別針對3個基本中的基本資源物件類型來說明:

  • Namespace
  • Annotation
  • Label
annotation: 什麼都可以寫

annotation: 什麼都可以寫


1. Namespace

負責在cluster內進行資源群組的隔離。同一個命名空間的名字必須具備唯一性。對於cluster-level的資源就不具備隔離的能力(ex. storageclass, nodes, PV…)。

在Kubernetes建立之後,預設會有以下四個namespaces:

(1) default: 預設的命名空間

(2) kube-node-lease: 內含一些與每個節點交互的物件,允許kubelet傳送heartbeats來確保control plane可以偵測到節點錯誤

(3) kube-public: 所有client都可以讀取這個命名空間的內容。大部分都存放cluster level會用的到的物件。

(4) kube-system: 由kubernetes system創立

Initial namespaces

Initial namespaces

然後,我們也可以修改預設的namespace,做法如下:

[master]# kubectl create ns test-ns
[master]# kubectl config set-context --current --namespace=test-ns
Context "kubernetes-admin@kubernetes" modified.

[master]# kubectl config view --minify | grep namespace:
namespace: test-ns

基本上Namespace的組成通常會是:

  • 某一個應用軟體的資源集合
  • 屬於特定使用者的資源,user建立自已的namespace後,在namespace內建立許多將會使用到的資源(pvc…)
  • 特定環境所需要的資源群組,例如Dev與Test分別為不同的namespace,但可能內部用的資源類型都相同

Note: 如果要在namespace內再建立不同的sub namespace,則就會利用到HNC(Hierarchical Namespaces Controller),之後再另外說明。

2. Annotation

簡單來說,就是註解。使用者任意定義的附加資訊,用來給外部工具查詢。可以用來描述這個資源的。

(1) 將metadata附加到物件

label 或 annotation都可以用來附加metadata到K8S 物件,但annotation不是用來識別並選擇物件使用,而且可是結構化或非結構化。連不允許在label使用的字元都可以使用。

"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}

(2) Label與Annotation的差異

raw-image

3. Label & Selector

Label為key/value pairs的概念,用來指定特定的物件屬性,一般是在物件建立時順便指派label。每個物件都可以定義label(key/value), 但每個key名稱就必須在該物件內是唯一。

apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80


(1) Label可以用在那些地方:

  • 從使用者可以理解的方式識別出物件
  • 透過定義來將物件再組合成群組
  • 在cluster識別物件
  • 更容易一次對一群物件進行操作
  • 對Kubernetes成本的追蹤、配置與管理

(2) Label selector

透過label selector, 使用者可以識別出一組物件。label selector是K8S的核心群組概念。

目前支援二種類型的selector:equality-basedset-based。一個label selector可以由多個需求以,分隔來組成。

  • equality-based
※ Syntax:
environment = production
tier != frontend

※ Example:
# kubectl get pods -l environment=production,tier=frontend
  • set-based
※ Syntax:
environment in (production, qa)
tier notin (frontend, backend)
partition
!partition

※ Example:
# kubectl get pods -l 'environment in (production),tier in (frontend)'
# kubectl get pods -l 'environment in (production, qa)'
# kubectl get pods -l 'environment,environment notin (frontend)'

以下範例說明在YAML檔內如何撰寫

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: label-test
spec:
replicas: 2
selector:
matchLabels:
app: labelapp <<< selector
template:
metadata:
labels:
app: labelapp <<< label
spec:
containers:
- name: label-app
image: github/labelapp
imagePullPolicy: Always
ports:
- containerPort: 8080
resources:
limits:
cpu: "0.2"
memory: 20Mi
---
apiVersion: apps/v1
kind: Service
metadata:
name: label-svc
spec:
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer
selector:
app: labelapp <<< selector
label selector

label selector

官方建議應用服務可以照下圖建立相關的Label:

https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/#labels

https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/#labels

# This is an excerpt
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxzy
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress
app.kubernetes.io/managed-by: helm

4. 一些建議的使用方式

  • 透過附加labelannotation來優化對Kubernetes物件的可視性
  • 保持一致的標籤命名規範避免混淆、重覆與重工
  • 保持標籤和註釋的簡潔性能夠降低複雜性,特別是對於標籤來說,因為Kubernetes在內部操作中使用它們。
  • 盡早使用官方建議的label與annotation的寫法
  • 通過按照每個類型的正確字符集和語法來建立共識
  • 不要把機密訊息寫在label或annotation
  • 設計備份時,記得利用label與annotation來設計策略
  • 可有意義的方式來組織資源。團隊可以更輕鬆地大量檢測和排除問題

參考資料:

14會員
40Content count
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
在建置完Kubernetes cluster之後,通常我會做的前幾件事之一就是建立一個StorageClass給應用服務使用,而NFS我認為是相對容易實現的做法。
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
在建置完Kubernetes cluster之後,通常我會做的前幾件事之一就是建立一個StorageClass給應用服務使用,而NFS我認為是相對容易實現的做法。
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
雖身體外殼帶著歲月的歷練,但是依舊能感受到她們內心的花樣年華。
Thumbnail
對我來說,這一年多來特別有感觸的,是努力和緣分,我們會在人生路上遇見很多特別的人,有些延續也許是偶然,但更多的是彼此的努力,才讓那個交會的點,能夠慢慢變成線,最後長成一個面。
Thumbnail
中午去吃了一家新開的腿庫飯,簡簡單單的小店面,看起來是母子檔經營。我非常佩服可以一起工作的家人,畢竟我的母女情節甚是嚴重,光要和平相處就已不容易,總是在愛恨交織的光譜間移動。 他們家的腿庫飯,可以把飯換成麵線,經過幾次實驗,覺得還是腿庫加麵線最對味,還趁著優惠券加點了一碗蘿蔔貢丸湯。
Thumbnail
我上輩子應該是隻住在圖書館的蠹魚,每天啃食著書中的文字,這輩子則透過書寫,還原消化過的字句,結合當下思考,成為一篇篇的方格子文章。 年齡漸長,有了經濟能力,買書成了我慰勞自己的方式,我在書中找解答,在小說中逃避現實,在字裡行間看盡新奇事物,輸入源多了,寫作成了順理成章的輸出管道。
Thumbnail
部隊這個江湖,匯流了來自五湖四海三教九流的人,身為人事士,只憑個資無法了解同袍過去人生流域的全貌,但從暴力傷害、性侵未遂、非法持有槍械...等五花八門的前科,我得以窺見有些人過往的生命河道比我曲折且凶險。很幸運的,生命中有一段在軍綠色叢林生存的時光,與這群特別的過客一起擺渡過暗潮洶湧的江湖。
Thumbnail
「如何提升抗壓性?如何培養受挫力?」是幾次在家長體驗課上,都會有學員提到的擔心,老實說這問題我也在思考著,網路上隨意搜尋一下關鍵字,就會有許多專家給的7個技巧,3個習慣之類的建議。但我真的比較想了解的是:為什麼孩子會抗拒責任?為什麼孩子會害怕失敗?當孩子遇到了這些困擾,父母該怎麼回應?
Thumbnail
「每一個開口的女性,都是在成全另外一名女性。」 普立茲獎得獎記者羅南.法羅 揭發好萊塢最大規模性暴力事件 點燃 Metoo運動的第一手實錄
Thumbnail
老師你好:在我求救無門之下,偶然看到你的文章,希望我的問題,能夠得到解決。我先生一年前外遇,外遇對象是我們夫妻都認識的好朋友,他們偷來暗去不知幾年,但被我發現是去年四月,當時的我無法去相信先生怎麼可能背叛我,因為一直以來我那麼信任他,發現先生外遇時,我曾經找了那個女人,也打了她,這口氣我嚥不下去,我
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
雖身體外殼帶著歲月的歷練,但是依舊能感受到她們內心的花樣年華。
Thumbnail
對我來說,這一年多來特別有感觸的,是努力和緣分,我們會在人生路上遇見很多特別的人,有些延續也許是偶然,但更多的是彼此的努力,才讓那個交會的點,能夠慢慢變成線,最後長成一個面。
Thumbnail
中午去吃了一家新開的腿庫飯,簡簡單單的小店面,看起來是母子檔經營。我非常佩服可以一起工作的家人,畢竟我的母女情節甚是嚴重,光要和平相處就已不容易,總是在愛恨交織的光譜間移動。 他們家的腿庫飯,可以把飯換成麵線,經過幾次實驗,覺得還是腿庫加麵線最對味,還趁著優惠券加點了一碗蘿蔔貢丸湯。
Thumbnail
我上輩子應該是隻住在圖書館的蠹魚,每天啃食著書中的文字,這輩子則透過書寫,還原消化過的字句,結合當下思考,成為一篇篇的方格子文章。 年齡漸長,有了經濟能力,買書成了我慰勞自己的方式,我在書中找解答,在小說中逃避現實,在字裡行間看盡新奇事物,輸入源多了,寫作成了順理成章的輸出管道。
Thumbnail
部隊這個江湖,匯流了來自五湖四海三教九流的人,身為人事士,只憑個資無法了解同袍過去人生流域的全貌,但從暴力傷害、性侵未遂、非法持有槍械...等五花八門的前科,我得以窺見有些人過往的生命河道比我曲折且凶險。很幸運的,生命中有一段在軍綠色叢林生存的時光,與這群特別的過客一起擺渡過暗潮洶湧的江湖。
Thumbnail
「如何提升抗壓性?如何培養受挫力?」是幾次在家長體驗課上,都會有學員提到的擔心,老實說這問題我也在思考著,網路上隨意搜尋一下關鍵字,就會有許多專家給的7個技巧,3個習慣之類的建議。但我真的比較想了解的是:為什麼孩子會抗拒責任?為什麼孩子會害怕失敗?當孩子遇到了這些困擾,父母該怎麼回應?
Thumbnail
「每一個開口的女性,都是在成全另外一名女性。」 普立茲獎得獎記者羅南.法羅 揭發好萊塢最大規模性暴力事件 點燃 Metoo運動的第一手實錄
Thumbnail
老師你好:在我求救無門之下,偶然看到你的文章,希望我的問題,能夠得到解決。我先生一年前外遇,外遇對象是我們夫妻都認識的好朋友,他們偷來暗去不知幾年,但被我發現是去年四月,當時的我無法去相信先生怎麼可能背叛我,因為一直以來我那麼信任他,發現先生外遇時,我曾經找了那個女人,也打了她,這口氣我嚥不下去,我