筆記 k8s通訊相關

2021-10-17 09:33:48 字數 1558 閱讀 9324

高效檢測變化,resourceversion機制

get list的resourceversion語義

watch的resourceversion語義

從文件推測,list和watch的resourceversion語義的暗示都是一樣的

如果不指定,則從etcd quorum read 的獲取最新版本資源

(etcd 讀。linearizability:要麼raft讀超時,要麼返回最新值,withserializable非一致性讀,可以通過–etcd-quorum-read配置apiserver)。

如果指定為0,則獲取apiserver快取中的最舊的歷史版本(多例項apiserver提高可用性)。

如果指定明確,則從指定版本獲取,等於或者大於。

apiserver對etcd的這些擴充套件特性和etcd原生介面和儲存實現原則是一致的,都是快取昂貴的不常變化的配置資料(一切皆宣告的配置,過期刪除),並且k8s各元件均通過reflector抽象,基於resync和revision機制,實現listwatch介面。以最好的效能和可選擇的cp/ap提供通訊服務

條條道路通羅馬,k3s 用的是 sqlite,但是畢竟缺乏分布式能力,還得用rqlite,

etcd都把raft這些搞好了,關係型資料庫也不是必須的,kv儲存已經夠用,為啥要重新造輪子呢。

這裡說的比較實在。

etcd的前世今生:為什麼kubernetes使用etcd?

apiserver和元件(kubelet)通訊原始碼分析

reflector 通過 listwatch 將訊息事件同步到資料目的地store,kubelet的store實現是undeltastore,controller的store實現是deltafifo,scheduler的store實現是fifo。

對於apiserver, reflector.listerwatcher 來自於 newcacherlisterwatcher,其storage就是資料來源,大家都知道apiserver的資料來源是etcd,他實現了storage的介面。

對於其他元件,reflector.listerwatcher 來自於 newlistwatchfromclient,其資料來源是c.corev1().restclient(),也就是對應apiserver的rest介面。

雜亂筆記 k8s

k8s中 1.排程 etcd kubectl 以及資源都要呼叫api server 2.資源排程機制 listwatch 隨時監控節點加入刪除,新pod的 原有節點加標籤 觸發creatset 3.建立應用 service demoset satefulset 補充 無狀態應用,比如 3個pod服務...

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...