Concepts 有關k8s物件

2021-10-24 19:05:09 字數 2124 閱讀 8964

目錄

物件管理

參考資料

物件命名與id

命名規範:

命名空間(namespace)

labels(標籤)

annotations(注釋)

label與annotation的最佳實踐

k8s物件管理方式分3類,

型別操作物件

適用環境

優點缺點

命令式物件管理

活動物件

開發、測試

簡單易學

只能操作活動物件。無法審計、跟蹤

命令式物件配置

單個檔案

生產配置檔案可以使用版本控制,可以審計、跟蹤

專案大時,配置檔案多,操作麻煩。只能通過配置檔案更新活動物件

宣告式物件配置

目錄生產

支援目錄操作

意外情況下難以除錯。可以直接更改活動物件並保留資訊

【參考文件】:

【參考部落格】:

同乙個集群,同型別的資源,資源名不能相同;

同乙個集群,不同型別的資源,資源名可以相同;

同乙個集群,不同資源其資源的uid一定是唯一的。

遵循rfc 1123

k8s能將物理機集群化成多個虛擬集群,不同專案、不同團隊可使用不同的虛擬集群。這個虛擬集群就是命名空間(namespace)。同乙個命名空間內的資源名必須要保持唯一。命名空間是集群資源劃分的一種方式(通過resource quota劃分)。

k8s預設建立4類命名空間:

不是所有資源物件都有歸屬的namespace,想namespace資源本身就不屬於任何namespace。

檢視哪些資源屬於namespace,哪些不屬於namespace:

# in a namespace

kubectl api-resources --namespaced=true

# not in a namespace

kubectl api-resources --namespaced=false

集群資源劃分:用namespace

namespace內的資源劃分:用label(如用label區分不同版本的 軟體)

label 允許在 kubernetes 資源上附加對於系統或者使用者有意義的標示性屬性,方便對 kubernetes 資源進行分組管理。 這些屬性對不會直接對 kubernetes 核心元件產生語義,不過可能間接地被 kubernetes 核心元件處理產生效果。例如:使用者在 pod 或者 node 上加一些 label,然後配置一些排程策略,kubernetes 的 scheduler 會基於這些 label 資訊進行排程。

labels以「鍵/值」對的形式存在,可以將labels附加在物件上(可以在建立物件時直接編寫label,也可以後期再通過api的方式附加上)。如下:

"metadata": 

}

不像name和uuid,label不需要保證唯一性。即不同資源語法上可以有相同的label(實際label的命名,要根據實際意義)。通過label selector(標籤選擇器)可以選擇指定的物件。當前api支援兩種型別的選擇器:

如:

environment = production

tier != frontend

如:

environment in (production, qa)

tier notin (frontend, backend)

partition

!partition

annotations 允許在 kubernetes 資源上附加任意的非標識性元資料,用來記錄資源的一些屬性。這些元資料主要是給工具或者庫來提取資訊,一般不會直接開放給使用者。絕大多數基於 kubernetes 的開源專案都不依賴於 db,完全可以利用 kubernetes 的能力,滿足對 db 的需求。對於需要持久化的資料,除了定義 crd,另一種通用的做法就是將資料儲存在 annotation 中。

由於 annotation 的定位是 kubernetes 資源上附加任意的非標識性元資料,除了在 key 上有跟 label key 完全一樣的限制外,在 value 上沒有任何限制:可長可短,可結構化可非結構化,可包含任意字元。

K8s部署prometheus監控K8s細節

prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...

k8s 多租戶 k8s 基礎介紹

備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...

K8S(二) 核心物件概念

pod pod是最小部署單元,乙個pod有乙個或者多個容器組成,pod中容器共享儲存和網路,在同一臺docker主機上執行。service service乙個應用服務抽象,定義了pod邏輯集合和訪問這個pod集合的策略。service pod集合對外表現是為乙個訪問入口,分配乙個集群ip位址,來自這...