雲原生已經是雲端計算行業的事實標準,改變了軟體開發、部署和運維的工作、思維方式,也讓運維人員的職業方向發生了極大的轉變,這也要求雲原生運維工程師相比傳統運維需要掌握不同的技術與方法論。
1、雲原生運維的前景
一個職業方向是否有前途,崗位需求量是否大,又需要掌握哪些核心技能,最靠譜的做法當然是去招聘網站上搜尋相關崗位,比如關於雲原生運維,可以搜尋“雲原生運維”、“ DevOps 工程師”、“SRE工程師”、“雲原生架構師”、“ Kubernetes 運維”等關鍵詞,就可以瞭解到當前雲原生運維的崗位需求量比較大,待遇前景也遠非傳統運維可比。
而同時隨著雲端計算行業的不斷演變,雲原生運維的工作內容和職責相比傳統運維有了很大的不同,尤其是從傳統 Linux 作業系統的運維轉向了雲原生時代的作業系統Kubernetes的運維上:
- 熟悉 DevOps、CI/CD,負責應用產品的持續交付和持續運維的工具體系的建設,支撐業務的快速迭代與穩定性工具建設;
- 完善 Kubernetes 叢集的監控體系、日誌分析和全方位資料運營(包括可用性指標、歷史事故、資源利用率等),提高監控有效性及時發現故障,保障業務可用;
- 優化 Kubernetes 叢集運維體系,對底層基礎元件的部署持續調優,提升各線的運維能力和問題處理效率
- 負責 Kubernetes 叢集運維平臺的建設,打造自動化運維和管控體系;負責Kubernetes叢集管理、部署釋出、可觀測體系等系統的設計和實現;
反觀傳統的 Linux 運維,由於雲服務商提供的 IaaS、PaaS的普及,以及運維自動化程度越來越高,傳統運維諸多工作內容也漸被取代。計算機基礎設施(容器化、公有云、混合雲等),應用架構(微服務、分散式、十二要素應用程式)以及DevOps、FinOps、DevSecOps等開發流程和方法論對運維人員所需要掌握的技術技能提出了新的要求。
2、雲原生運維需要掌握哪些技術
1、掌握一門程式語言
通常,運維工程師對程式語言的要求遠沒有程式設計師那麼高,傳統運維工程師需要熟練掌握一些比較流行的指令碼語言 Shell 、Python 。不少公司底層使用的是 Java ,如果你能瞭解Java,尤其是能夠獨立部署上線 Java 專案(倒不需要會開發)就更好了。
而絕大多數流行的雲原生專案都是 Golang 開發的,作為雲原生運維工程師更推薦去學習Golang 並把 Golang 作為自己的主力程式語言。
學習 Golang ,比較推薦 Golang 官方在“go.dev/learn”(可在瀏覽器裡輸入這個連結)裡提供的學習資料,比如技術文件、《Tour of Go》、Go的Web Dev、CLIs、《Go by example》等等。
如果網站訪問慢或不習慣通過英文來學習,推薦被譽為“ Go 語言聖經”的《Go程式設計語言》(The Go Programming Language)這本書,Manning 的《Go語言實戰》(Go in Action)、O'reilly的《Head First Go語言程式設計》(這本書非常適合入門)。
2、作業系統基礎與命令列
Linux作業系統及其命令列可以說是每個程式設計師都應該掌握的基礎知識,更是運維工程師的“傳統藝能”,雲原生運維工程師也不例外。
這部分的知識實踐性是非常強的,建議在電腦本地或通過虛擬機器安裝一個 Ubuntu ,或在騰訊雲上購買一個雲伺服器CVM,不能只看書或視訊。
比較推薦的是《 Linux 命令列大全》、《鳥哥的 Linux 私房菜》、《Linux/UNIX 系統程式設計手冊》
3、計算機網路
DevOps 是開發 Development 和運維 Operations 的合稱,因此雲原生運維也需要掌握開發人員必學的電腦科學的核心知識,除了作業系統外,計算機網路也是需要重點掌握的內容。
除了需要了解 OSI 七層網路模型、程式通訊方式、TCP/IP協議、HTTP/HTTPS、抓包、iptables 等一些本地或自建伺服器運維所需要掌握的網路與安全知識;
還建議通過雲服務商提供的產品服務來實踐學習,比如騰訊雲的雲伺服器 CVM、物件儲存 COS、雲資料庫 MySQL、負載均衡、NAT 閘道器、私有網路、CDN、訊息佇列等產品的使用來深入瞭解一些雲端計算相關的服務以及背後所涉及的計算機網路相關的知識。
4、開發環境編譯與部署
可以從基礎的 LAMP、LNMP、Wordpress 以及一些比較流行的開源專案的部署上線到雲服務入手,掌握 Nginx、Tomcat、Apache等網頁伺服器、負載均衡,MySQL、Redis資料庫和快取。
以上這些知識基本都是傳統運維工程師需要掌握的內容,當然也是雲原生運維的基礎,雲原生運維( DevOps 工程師、SRE 工程師等)則主要需要掌握雲原生產品生態以及文化:
5、雲原生基礎
Docker 容器化和 Kubernetes 叢集可以說是雲原生最為重要的基礎,學習時也推薦先從動手實踐來入手。動手實戰時,建議在本地安裝部署好 Docker 環境、Kubernetes 叢集以及使用雲服務商提供的線上託管 Kubernetes(如騰訊雲容器產品TKE、EKS)搭配來學習,這才貼近企業實際生產時的真實環境。
儘管 Docker 和 Kubernetes 官方技術文件是一個不錯的入門教程,但是仍然存在很多新手不可避免的一些“坑”。
為此騰訊雲【燎原社】推出了一套學習門檻更低、步驟性更強、內容更為詳細且更加適合國內使用者學習的雲原生技術工坊,旨在幫助更多對雲原生技術感興趣的開發者快速且系統的掌握Docker與Kubernetes。
作為一款入門課程,對初學者非常友好,不僅免費,還配有專門的學習交流群,群內學員打卡分享,氛圍超棒!
詳情可戳連結: 騰訊雲燎原社技術工坊
6、微服務、DevOps與雲原生監控
微服務、DevOps 以及雲原生監控方面,除了掌握基礎的技術產品外,比如 Jenkins、Prometheus 等之外,還涉及到一些企業上雲以及雲原生落地的流程與方法論,推薦閱讀一下《基於Kubernetes的雲原生DevOps》、《Kubernetes in Action》、《雲原生模式》、《Kubernetes設計模式》(Kubernetes Patterns)等相關的書籍。
騰訊雲【燎原社】還推出了為期3天的線下【雲原生技術實戰營】,騰訊雲技術專家團隊會面對面傾囊相授一線雲原生實戰經驗,手把手教你業務容器化改造的“最佳實踐”,參與者不僅可以和社群各領域程式設計師一起進步,還能與騰訊資深架構師、產品持續交流。
詳情可戳連結:騰訊雲燎原社雲原生技術實戰營
7、雲原生不同方向的學習
以上內容都是雲原生運維需要掌握的基礎內容了,在不同的企業,雲原生運維可能會分一些方向,比如DevOps工程師、SRE工程師、平臺架構工程師等等,不同的方向需要進階學習的點都會有所不同,但是Docker、Kubernetes以及雲原生在企業的落地是這些方向的基石。
不同方向的深入學習,需要結合企業自身業務以及去參考一下CNCF的一些開源專案了。
3、關於考證與進階
對於初、中級的雲原生運維工程師來說,無論是想給自己設立一個目標,或者考察知識掌握水平,抑或是求職來說,不妨去考一下雲原生相關的證照。雲原生計算基金會CNCF,通常來說比很多雲廠商提供的認證證照含金量更高,不少企業在招聘時也明確提出CKA和CKAD是加分項。這些考試大多數都是實操題,Kubernetes官方技術文件是考試時唯一可能參考的資料
- Kubernetes應用程式開發者認證 Certified Kubernetes Application Developer (CKAD):CKAD考試證明使用者可以為 Kubernetes 設計、構建、配置和釋出雲原生應用。通過 CKAD 認證的人員能夠在 Kubernetes 中定義軟體資源並且使用核心元件來搭建、監控、檢查可伸縮應用;
- Kubernetes管理員認證 Certified Kubernetes Administrator (CKA):CKA認證確保CKA認證人員具有履行 Kubernetes 管理員職責的技能、知識和能力。通過認證的 Kubernetes 管理員展示了包括基礎安裝和配置、管理產品級別的 Kubernetes 叢集方面的能力。
- Kubernetes 認證安全專家 (CKS):Kubernetes 認證安全專家專案確保證照持有人員容易勝任各種最佳實踐。CKS 認證包括在構建、部署和執行時確保基於容器的應用程式和 Kubernetes 平臺安全的技能。參加CKS的候選人必須持有現行的 CKA證照,以證明他們具有足夠的 Kubernetes 專業知識。
當然也還有一些其他證照,這裡就不多做介紹了,畢竟證照不是目的,更建議在掌握了Linux運維以及雲原生基礎的童鞋去參加騰訊雲【燎原社】組織的線下技術實戰營,更貼近企業的生產實踐以及有大廠的架構師可以去深入交流。