羨慕!阿里內(nèi)部強推人手一份的K8S(kubernetes)學(xué)習(xí)指南,不能再詳細(xì)了
過去幾年,以 docker、kubernetes 為代表的容器技術(shù)已發(fā)展為一項通用技術(shù),BAT、滴滴、京東、頭條等大廠,都爭相把容器和 k8s 項目作為技術(shù)重心,試圖“放長線釣大魚”。
就說阿里吧,目前基本所有業(yè)務(wù)都跑在云上,其中有一半已遷移到自己定制 kubernetes 集群上。據(jù)說,今年計劃完成 100% 基于 k8s 集群的業(yè)務(wù)部署。而服務(wù)網(wǎng)格這塊兒,在阿里的一些部門(比如螞蟻金服),已經(jīng)有線上業(yè)務(wù)在用了。
這充分說明了容器在當(dāng)今軟件研發(fā)領(lǐng)域的地位。所以,掌握容器技術(shù)自然成為很多公司在招聘時的重要選項。
但是,容器技術(shù)本身偏向運維,namespace 資源隔離、cgroups 資源限制等概念,對開發(fā)者來說,理解起來比較困難。這幾年,在跟朋友探討 k8s 落地時,也有一些問題被反反復(fù)復(fù)地提及,比如:
為什么容器里只能跑“一個進(jìn)程”?
原先一直用的某個 JVM 參數(shù),在容器里就不好使了?
為什么 kubernetes 不能固定 IP 地址?容器網(wǎng)絡(luò)連不通,該如何 debug?
k8s 中 statefulSet 和 operator 到底什么區(qū)別?pv 和 pvc 又該怎么用?
這些問題的答案和原理并不復(fù)雜。但對初學(xué)者來說,很難用一兩句話就解釋清楚。因為容器技術(shù)涉及操作系統(tǒng)、網(wǎng)絡(luò)、存儲、調(diào)度、分布式原理等等方方面面的知識,是個名副其實的全棧技術(shù)。
而其技術(shù)體系里那些“牽一發(fā)而動全身”的主線,比如 Linux 進(jìn)程模型對容器本身的重要意義,“控制器”模式對整個 k8s 項目提綱挈領(lǐng)的作用等等,并不會詳細(xì)展現(xiàn)在 docker 或 kubernetes 官方文檔中,但偏偏就是它們,才是掌握容器技術(shù)體系的精髓所在。
在這里分享我資料庫里面的一份文檔,該文檔將K8S分為理論和實踐兩個部分進(jìn)行講解,雙管齊下,事半功倍,讓我們來看看文檔內(nèi)容
理論模塊
理解集群控制器
基本上來說,K8S集群的控制器,其實扮演著集群大腦的角色。有了控制器,K8S集群才有機(jī)會擺脫機(jī)械和被動,變成一個自動、智能、有大用的系統(tǒng)。
控制器原理
統(tǒng)一入口
控制器
控制器管理器
SharedInformer
ListWatcher
服務(wù)控制器
路由控制器

集群網(wǎng)絡(luò)詳解
我們主要通過網(wǎng)絡(luò)搭建和通信兩個角度去分析K8S集群網(wǎng)絡(luò)。其中網(wǎng)絡(luò)搭建包括初始階段,集群階段,節(jié)點階段以及Pod階段,這么分類有助于我們理解這些復(fù)雜的配置。而理解了各個配置,集群通信原理就比較容易理解了。
集群網(wǎng)絡(luò)搭建
通信

集群伸縮原理
總體上來說,K8S集群節(jié)點的增加與減少,主要涉及四個組件,分別是Cluster Autoscaler,ESS, 管控以及節(jié)點本身(準(zhǔn)備或清理)。根據(jù)場景不同,我們需要排查不同的組件。其中Cluster Autoscaler是一個普通的Pod,其日志的獲取和其他Pod無異;ESS彈性伸縮有其專門的控制臺,我們可以在控制臺排查其伸縮配置、伸縮規(guī)則等相關(guān)子實例日志和狀態(tài);而管控的日志,可以通過查看日志功能來查看;最后,對于節(jié)點的準(zhǔn)備與清理,其實就是排查對應(yīng)的腳本的執(zhí)行過程。
節(jié)點增加原理
手動添加已有節(jié)點
自動添加已有節(jié)點
集群擴(kuò)容
自動伸縮
節(jié)點減少原理

認(rèn)證與調(diào)度
在這節(jié)中,我們以一個簡單的容器化web程序為例,著重分析了客戶端怎么樣通過Kubernetes集群API Server認(rèn)證,以及容器應(yīng)用怎么樣被分派到合適節(jié)點這兩件事情。
“關(guān)在籠子里”的程序
雙向數(shù)字證書驗證
KubeConfig文件
Pod配置

集群服務(wù)的三個要點和一種實現(xiàn)
K8S集群服務(wù)的本質(zhì)是什么
自帶通信員
把服務(wù)照進(jìn)現(xiàn)實
過濾器框架
節(jié)點網(wǎng)絡(luò)
升級過濾器框架
用自定義鏈實現(xiàn)服務(wù)的反向代理

鏡像拉取
理解OAuth2.0協(xié)議
Docker扮演的角色
K8s實現(xiàn)的私有鏡像自動拉取
阿里云實現(xiàn)的Acr credential helper

實踐
讀懂這一篇,集群節(jié)點不下線
需要知道的Kubernetes知識
什么是PLEG
容器runtime
Docker Daemon調(diào)用棧分析
Containerd調(diào)用棧分析
什么是Dbus
RunC請求Dbus
Systemd
Live Debugging
問題修復(fù)

節(jié)點下線姊妹篇
問題現(xiàn)象
止步不前的 PLEG
無響應(yīng)的 Terwayd

我們?yōu)槭裁磿h除不了集群的命名空間?
從集群入口開始
Controller 在做什么?
API、Group、Version
Controller 為什么不能刪除命名空間里的資源
節(jié)點與 Pod 之間的通信
Route Controller 為什么不工作?
集群節(jié)點訪問云資源

阿里云ACK產(chǎn)品安全組配置管理
安全組在 ACK 產(chǎn)品中扮演的角色
安全組與 ACK 集群網(wǎng)絡(luò)
怎么樣管理 ACK 集群的安全組規(guī)則
限制集群訪問外網(wǎng)
IDC 與集群互訪
使用新的安全組管理節(jié)點
典型問題與解決方案
使用多個安全組管理集群節(jié)點
限制集群訪問公網(wǎng)或者運營級 NAT 保留地址
容器組跨節(jié)點通信異常

二分之一活的微服務(wù)
代理與代理的生命周期管理
就緒檢查的實現(xiàn)
控制面和數(shù)據(jù)面

半夜兩點Ca證書過期問題處理慘況總結(jié)
不斷重啟的 Citadel
一般意義上的證書驗證
Citadel 證書體系

總結(jié)
以上就是這份文檔的概況,一次搞懂6個核心原理吃透基礎(chǔ)理論,學(xué)會6個典型問題的華麗操作,不管是架構(gòu)師還是開發(fā)者,又或是運維,都能夠從中學(xué)到不少。
好嘍~~以上便是展示的部分內(nèi)容,由于內(nèi)容實在是太長,為了不影響整體的觀看體驗,就先展示一部分到這里了,如果這份資料對大家有用,或者這份資料有想要深入學(xué)習(xí)鞏固自身的技術(shù)棧的小伙伴,需要這份資料來學(xué)習(xí)提升的小伙伴,
直接微信掃描下方二維碼,添加助理微信即可免費獲取,即可獲得文中提到的這份資料喲~~
騰訊、阿里、滴滴后臺面試題匯總總結(jié) — (含答案)
面試:史上最全多線程面試題 !
最新阿里內(nèi)推Java后端面試題
JVM難學(xué)?那是因為你沒認(rèn)真看完這篇文章
關(guān)注作者微信公眾號 —《JAVA爛豬皮》
了解更多java后端架構(gòu)知識以及最新面試寶典
看完本文記得給作者點贊+在看哦~~~大家的支持,是作者源源不斷出文的動力
