理清定位,找準你的 Kubernetes 與容器技術學習方法
張磊,阿里集團高階技術專家,Kubernetes 專案資深成員和聯合維護者。主要關注容器執行時介面(CRI)、排程、資源管理和基於虛擬化技術的容器執行時等特性,共同負責 Kubernetes 上游和阿里集團大型叢集管理系統的工程工作。張磊曾就職於微軟研究院(MSR)和 KataContainers 團隊,也是 KubeCon 大會上備受歡迎的演講者。
今天我們來談一談,學習 Kubernetes 和容器技術體系的最佳方法,到底是什麼。學習一門綜合性的技術,不應該著急一頭扎進去看原始碼。理清楚自己的定位,才是最重要的。
定位一:純粹的開發人員
如果你是一位純粹的開發人員,無論是前端、後端,還是應用、遊戲的開發,你首先應該明白這樣兩個道理:
Kubernetes 和容器技術主要解決的,是程式碼編寫完成後的事情。這不單單是釋出或者 CI/CD,而是指從你執行完 git commit & git push 之後開始,都應該進入容器化的管理流程當中,當然包括後續的釋出、運維、升級、回滾等所有階段。
Kubernetes 體系的核心,是為開發者提供編寫程式碼過程中的“微服務程式設計正規化”。
比如,在你編寫程式碼的時候,你應該清楚地知道:我該如何劃分模組,就能更方便地利用到 Kubernetes 的 Pod 模型,來構建更加低耦合、高內聚的程式碼製品,讓我後面的升級和重構工作更加容易。
再比如,當你的程式碼需要與一個外部資源進行互動的時候,你應該首先想到:我的這個外部資源,是不是可以作為一個 Kubernetes 的 CRD 放到 Etcd 裡面。這樣,我編寫的程式碼,就可以遵循一個自定義 Controller 或者 Operator 的程式設計正規化,通過宣告式 API 的方式來執行業務邏輯。這樣寫出來的程式碼一定會更加簡單、健壯、容易維護。
這樣的例子其實非常多。作為開發人員,你最應該關注的,是 Kubernetes API 物件的細節、容器設計模式以及 Kubernetes API 程式設計正規化。
Kubernetes 裡的所有 API 物件
你應該習慣於把你的服務想象成一個個容器,把整個應用想象成一個 Pod,學會把基於容器和 Kubernetes 的設計思想和架構方式,融入到自己平常的工程實踐當中。你應該大量實踐這些思想和設計模式,編寫各種各樣的 CRD 和 Controller,並想辦法提高這些自己編寫的自定義 Controller 專案的效能和服務能力。你應該嘗試扮演公司或者組織中推廣微服務和雲原生體系倡導者,並熱心地幫助團隊成員共同學習 Kubernetes 的設計思想和 API,全力幫助 Istio 或者 Knative 這樣的 Service Mesh 和 PaaS 平臺在組織中落地。
這些,都是增強你在即將到來的雲端計算時代競爭力的有效手段。
定位二:專注於伺服器端的程式設計人員/運維工程師
而如果你是一位專注於伺服器端的程式設計人員,或者運維工程師,那麼你更應該關注的是 Kubernetes 這個專案背後的實現原理,它所體現出來的 Borg 和 Omega 專案多年來大規模叢集管理的經驗教訓。
比如,宣告式 API 的設計與實現原理,Informer、Controller 這些機制的實現方式,為什麼說 Etcd 最適合的場景是配置管理,集中式叢集排程器的核心機制與常用策略都有哪些。
此外,Kubernetes 專案的各個可擴充套件性介面,也是你需要重點關注和理解的物件,比如 CNI 和網路外掛的工作方式、CSI 和儲存外掛的設計、Kubernetes Volume 管理的完整流程,以及 CRI 的設計和各種 container runtime 的異同。
從這個角度來說,Kubernetes 專案就是當前雲端計算平臺層開源專案的事實標準,熟悉它的思想、架構、實現細節甚至核心元件的原始碼,不僅是學習這項技術的必經之路,也是傳統後端技術人員向雲端轉型的最佳途徑。
Kubernetes 通過儲存外掛管理容器持久化儲存的原理
你應該嘗試扮演公司和組織中進行雲原生和基礎架構轉型的關鍵角色,而不是充當傳統和守舊那一方。你應該嘗試用容器和 Kubernetes 化的思想來影響周邊的每一位工程師。要記住,這個程式每前進一步,你的價值就放大一分。
定位三:學生、剛剛入行的初學者
而作為學生、剛剛入行的初學者,或者是對這個領域充滿興趣準備在這裡作為一番的後端從業人員,我希望你對容器和 Kubernetes 技術體系的學習和實踐,更要關注這個專案和平臺背後更深層的基礎和底盤部分,這包括:
1、瞭解作業系統和硬體的實際工作方式,尤其是 CPU、儲存和網路。
2、充分理解作業系統的設計,甚至可以根據需要重新實現或者繞過某些部分,這是你後面進行系統效能優化的關鍵所在。
3、理解“所有系統都是分散式系統”的道理。瞭解經典的分散式系統設計的思想,並從實際的工程實踐中理解這些解決思路,這也是 Kubernetes 這個分散式專案構建的基礎。
只有清楚了自己的定位,你才能夠在 Kubernetes 這樣一個大而全的技術體系面前做到“有所放矢,有的放矢”,才能夠把容器和 Kubernetes 這項技術發展浪潮,與自己的技術路線和個人成長曆程,真正地關聯起來。
Kubernetes 專案核心功能的“全景圖”
一旦明確了定位,抓到了這其中的精髓和主線,那麼接下來的學習過程對於你來說,其實就是“無招勝有招”,可以隨心所欲地按照你實際的專案、所關心的領域逐步展開,而完全不必拘泥於某種特定的套路了。
本文轉自公眾號「極客時間」
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555606/viewspace-2565236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學習Linux,你找對方法了嗎Linux
- 大資料學習路線圖 讓你精準掌握大資料技術學習大資料
- Kubernetes – Google分散式容器技術初體驗Go分散式
- 容器、Docker與Kubernetes——Kubernetes的配置入門Docker
- 用於HPC和深度學習工作負載的容器技術深度學習負載
- 容器技術之容器引擎與江湖門派
- 找技術外包 技術加盟
- 技術宅找女朋友的技術分析
- 基於kubernetes自研容器管理平臺的技術實踐
- 探秘Kubernetes:在本地環境中玩轉容器技術
- 為什麼Kubernetes和容器與機器學習密不可分?機器學習
- 前端技術學習路線及技術彙總(從瞭解到學習,你的思維格局決定你的未來)前端
- 你的容器化學習第一課
- Docker容器技術與Docker介紹Docker
- 基於 GitHub 的敏捷學習方法之道與術Github敏捷
- 技術分享 | Kubernetes 學習筆記之基礎知識篇筆記
- Kubernetes Dashboard - 每天5分鐘玩轉 Docker 容器技術(173)Docker
- 我的Flutter學習與實踐 | 掘金技術徵文Flutter
- 零基礎快速學習Java技術的方法整理Java
- 以 Kubernetes 為代表的容器技術,已成為雲端計算的新介面
- 容器化 RDS:藉助火焰圖定位Kubernetes效能問題
- Docker容器學習與分享12Docker
- 為什麼從事雲原生開發需要學習容器技術
- 深度學習技術實踐與圖神經網路新技術深度學習神經網路
- 【java深入學習第4章】精通 Java 微服務:Spring Boot 與 Spring Cloud 的核心技術與設計準則Java微服務Spring BootCloud
- docker技術學習Docker
- 機器學習的技術原理、應用與挑戰機器學習
- 最火的容器技術|Docker入門與實踐Docker
- 1.明確你的前端學習路線與方法前端
- 人工智慧:原理與技術 學習筆記人工智慧筆記
- Laravel技術微信群-方便學習與交流Laravel
- Docker容器編排技術解析與實踐Docker
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- 除了深度學習,你需要知道AI技術的23個方向深度學習AI
- 渝中區:找準場景應用,區塊鏈技術加速落地區塊鏈
- 年度大盤點:那些最值得你瞭解的容器技術
- 路徑偏移定位不準確?華為定位SuperGNSS技術幫您解決這一難題!
- 小程式:技術標準與生態的演變