原创 雲原生虛機應用託管-設計篇

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"typ

原创 Pod創建流程代碼版本[kubelet篇]

在k8s的面試中Pod的創建流程是一個常問的問題,而kubelet則無疑重中之重,之前也寫過一篇Pod的運行,不過沒有涉及到具體的代碼,本文嘗試用代碼的方式,來複數整個核心的流程,同時爲了方便記憶,又將整個過程分爲:準備、配置、清

原创 基於k8s的容器雲Paas平臺概要設計

基於K8s的容器雲Paas平臺應該是每個使用k8s的公司必須要做的一件事,今天我們嘗試以應用爲中心,採用搭積木的方式完成一個最小版本的容器雲Paas平臺的設計,Let's Go 1. 基礎功能 我們期望是實現一個儘可能自助的服務,

原创 圖解kubernetes控制器HPA橫向伸縮的關鍵實現

HPA是k8s中橫向伸縮的實現,裏面有很多可以借鑑的思想,比如延遲隊列、時間序列窗口、變更事件機制、穩定性考量等關鍵機制, 讓我們一起來學習下大佬們的關鍵實現 1. 基礎概念 HorizontalPodAutoscaler(後面簡

原创 圖解kubernetes批處理Job控制器的關鍵設計

K8s中的批處理任務模塊主要是由Job控制器完成,今天我們就來關注下其底層的關鍵設計,包括完成狀態、並行模式、並行策略等關鍵機制 1. 基礎概念 在聊k8s的任務模塊的實現的時候,我們先看一下傳統的任務系統的設計與實現,然後聊下基

原创 圖解kubernetes中informer機制基礎設計原理

kubernetes中的informer機制可能是實現集羣控制模塊的最核心的設計之一了,本文從informer如何獲取數據開始,然後介紹了爲了減少apiserver而設計的緩存、索引、無界隊列、共享informer等機制歡迎一起交

原创 圖解kubernetes中informer機制基礎設計原理

kubernetes中的informer機制可能是實現集羣控制模塊的最核心的設計之一了,本文從informer如何獲取數據開始,然後介紹了爲了減少apiserver而設計的緩存、索引、無界隊列、共享informer等機制歡迎一起交

原创 圖解kubernetes資源擴展機制實現(下)

昨天我們介紹了k8s中資源插件機制的核心關鍵組件,今天我們繼續來看下各個組件是如何進行通信的,以及k8s中針對事件處理背後的關鍵設計 1.PluginManager PluginManager是一個上層組件,其內部包含了上篇文章中

原创 圖解kubernetes容器探活機制核心實現

在k8s中通過kubelet拉起一個容器之後,用戶可以指定探活的方式用於實現容器的健康性檢查,目前支持TCP、Http和命令三種方式,今天介紹其整個探活模塊的實現, 瞭解其週期性探測、計數器、延遲等設計的具體實現 1. 探活的整體

原创 圖解kubernetes資源擴展機制實現(上)

k8s目前主要支持CPU和內存兩種資源,爲了支持用戶需要按需分配的其他硬件類型的資源的調度分配,k8s實現了設備插件框架(device plugin framework)來用於其他硬件類型的資源集成,比如現在機器學習要使用GPU等

原创 圖解kubernetes調度器framework核心數據結構

Framework是kubernetes擴展的第二種實現,相比SchedulerExtender基於遠程獨立Service的擴展,Framework核心則實現了一種基於擴展點的本地化的規範流程管理機制 1. 擴展實現目標 Fram

原创 圖解Go裏面的互斥鎖mutex瞭解編程語言核心實現源碼

1. 鎖的基礎概念 1.1 CAS與輪詢 1.1.1 cas實現鎖 在鎖的實現中現在越來越多的採用CAS來進行,通過利用處理器的CAS指令來實現對給定變量的值交換來進行鎖的獲取 1.1.2 輪詢鎖 在多線程併發的情況下很有可能

原创 圖解golang裏面的讀寫鎖實現與核心原理分析

基礎築基 讀寫鎖的特點 讀寫鎖區別與互斥鎖的主要區別就是讀鎖之間是共享的,多個goroutine可以同時加讀鎖,但是寫鎖與寫鎖、寫鎖與讀鎖之間則是互斥的 寫鎖飢餓問題 因爲讀鎖是共享的,所以如果當前已經有讀鎖,那後續goroutine繼續

原创 圖解kubernetes容器運行時狀態緩存數據結構

緩存和發佈訂閱都是後端開發中常用的手段,其中緩存主要是用於可丟失數據的暫存,發佈訂閱主要是用於消息傳遞,今天給大家介紹一個k8s中帶有發佈訂閱的緩存實現,其目標是給定一個時間,只關注該時間後續的事件,主要是用於近實時狀態數據的獲取

原创 圖解kubernetes scheduler基於map/reduce模式實現優選階段

優選階段通過分map/reduce模式來實現多個node和多種算法的並行計算,並且通過基於二級索引來設計最終的存儲結果,從而達到整個計算過程中的無鎖設計,同時爲了保證分配的隨機性,針對同等優先級的採用了隨機的方式來進行最終節點的分