虛擬化原理到K8s實踐經驗路線總結


  以下這些內容均為自行學習總結的內容,很多內容沒有寫概括介紹,看起來可能會有些突兀,但並不影響整體性,我自己的學習經驗告訴我,這些內容還僅僅是最精簡的核心部分,周邊還有很多可擴展內容,主要是操作系統生態方面的內容,這些內容我目前無法概括總結,但會陸續將計算機原理和網絡原理部分梳理成系列文章,以便能成系統,學習技術到一定階段一定是需要有無全局觀的,否則很容易迷失方向而無法深入。另外因為我自己的能力也很有限,無法將下面文章寫的盡善盡美,但還是斗膽將自己走的彎路過濾出去,希望能分享一些有價值的東西,能讓想我一樣的初學者能規避一些不必要的錯誤; 另外我的經驗是積極捕捉每一個學習的機會,不分Windows,Linux,Unix,其實你積累的多了,有了對系統生態的整體感覺相信你就會發現,下面這些內容學起來就不難了,另外告訴所有認真對待自己的道友一個小竅門,就是“慢慢來”,總結8個字“慢就是快,快就是慢”。

  對於虛擬化來說,下面這些僅僅還只是入門,它誕生很早,早在80-90年代時就已經提出了虛擬化,但因為硬件技術無法承載它,因此被擱置,直到本世紀初,硬件性能隨着莫爾定律每18個月在不斷翻新,不斷創造奇跡,CPU性能,內存容量,磁盤容量都不斷富余,人們發現業務增長帶來了階段性服務器性能不足,比如 一個外買平台,其24個小時中,可能只有在中午11:30~13:00,晚上6~8點之間業務流量可能非常巨大,但其它時間業務量可能很小,但為了避免在高峰期巨大訪問流量導致整個網站"雪崩",就不得不增加服務器數量,來應對這短短的3~4個小時的高峰流量,這讓這些平台的成本不斷增高,因為服務器需要用電,需要降溫,需要有地方放,需要安保,需要有專業人員管理等等,但仔細想想,這些服務器在大部分時間里基本非空閑,但我們不得不為3~4個小時付出巨大代價,在這樣的需求之下,以及硬件技術的升級,使得虛擬化技術迎來了自己的春天.
  虛擬化技術之所以抽象,是源於它自身是建立在兩項基礎技術的基礎上產生的,一方面是硬件技術,另一方面是軟件技術,這兩個巨人讓虛擬化變得可能,變得簡單,我對硬件了解不多,我僅想通過軟件技術來引出一個點,希望每個想了解它的初學道友有一個全局概念.
  最早軟件技術僅是單機上運行一個執行單個計算任務的程序,這些程序輸出信息是靠紙袋打孔的方式,后來輸出技術演進出現了顯示器,但這不是我們要關注的,這些程序僅僅在單機上運行,並不能滿足我們所有需要,我們更想要的是能多機通信,將一個主機上程序的運行結果輸出給另一個主機,由它根據這些數據做其它事,但如何讓兩個機器通信? 於是研究員們就發明了網絡通信, 網絡通信出現后,最早並沒有標准,你有你的實現, 我有我的實現,於是就是出現了很多局域網通信技術,如:令牌環,以太網等等,后來大家發現,光我們內部自己玩,還是太局限,於是研究員們又開始嘗試將多個局域網連起來一起玩,這就誕生了廣域網通信技術,如:點對點(PPP),ATM,幀中繼(虛電路)等等,這看上去好像一切都搞定了,但細想一下,軟件要如何通信?早期是沒有TCP/IP協議的,所有協議都在各自為政,各自發展,如ipx,tcp/ip等等,每種協議各不兼容,也就ipx不認識tcp/ip,反過來依然,程序要怎么通信? 在局域網通信時,只能自行調用底層硬件驅動接口,寫一套基於某局域網通信協議的通信組件,然后,只能跟基於這種局域網通信協議的程序通信,換一種就不能通信了,但廣域網來了,大家要通信,問題又來了,我通過局域網能通信的程序,不能認識廣域網通信協議的數據包,必須在重寫一套能識別廣域網協議的網絡組件,然后才能進行廣域網通信,但對端也必須和你一樣,它也要使用相同的廣域網通信協議開發網絡組件,並且還要開發一個跟你一樣的局域網通信組件,才能識別廣域網轉為局域網協議后,你發來的數據包到底是什么. 非常之麻煩! 如何才能解決這些問題? 所以各種各樣的通信標准就出現了, 在局域網中以太網技術最終因其成本低,易維護,帶寬高等優勢成為了標准,廣域網技術中,TCP/IP協議最終成為主流,成為標准, 這些就墊定了Internet的基礎,但早期網絡通信是非常復雜的,因為它太底層,對程序員的要求非常高,你必須對底層硬件驅動接口有非常精深的了解,才能完成操縱網卡收發數據包,才能使用好,因此就有大牛看不慣了,於是就對這些非常底層的驅動接口做了一層封裝,對外提供了一個統一的操作接口,這就是socket編程,后來軟件技術繼續發展,人們發現即便是socket編程也是非常底層的,門檻依然很高,后來就又有大牛出來,對socket做了一層封裝,RPC調用就出現了,網絡編程的難度再次降低,這也就是目前比較常用的網絡通信方法.
  說了這么多,這些和虛擬化有什么關系?
  想想看,虛擬化用最通俗的理解就是我們經常用到虛擬機,但這不准確,但可先這樣理解,我們的筆記本上安裝一個VMware就能安裝很多台虛擬機,當然前提是你筆記本的CPU是支持硬件虛擬化的,在VMware中,VM之間通信我們都很清楚,它是通過VMnet虛擬網卡來通信的,這個虛擬網卡其實相當於一個虛擬網橋,所有連接到這個虛擬網橋上的VM都屬於同一個局域網,因此它們之間就可以通信了,這個過程在我們看來很簡單,但是其背后隱藏的虛擬網絡才是虛擬化中最不可缺少的重要基礎組件,而虛擬網絡的根基則源於物理網絡,而物理網絡的根源則來源於網絡通信,因此了解本源對深入技術的本質會有更深層次的理解,這個過程我個人覺得就是找到技術感覺的方法。
  

1.虛擬化原理介紹
2.libvirt
3.virsh
4.KVM原理(刪除)
5.KVM原理和使用
6.KVM系統鏡像制作
7.Xen原理
8.Xen簡單使用(不建議花時間學習,以包含在Xen原理中了)

9.OpenStack總體架構概覽&OpenStack核心組件介紹(待完善)
10.OpenStack一鍵部署Mitaka實現【這是我使用shell實現的測試環境部署腳本】
  https://github.com/zhang75656/openstarck-mitaka

11.TCP協議深度刨析
12.TCP Socket通信詳細過程

13.網絡虛擬化的基本模型簡介(刪除)
14.OpenFlow和SDN的歷史和原理介紹
15.VxLAN原理
16.容器原理
17.OpenVSwitch原理
18.OpenVSwitch使用參考
19.容器虛擬化原理
20.Cloud-init
21.Docker原理及使用
22.Docker網絡(待總結)
23.Harbor簡介及配置
24.Harbor高可用

25.系統架構概念及思想1
26.系統架構概念及思想2
27.傳統IT容量估算思路

28.iptables使用總結
29.firewall-cmd使用總結
30.TC學習總結
31.ipset使用總結
32.LVS負載均衡總結

33.Ubuntu使用小結(主要為后面部署K8s集群做基礎鋪墊)
34.Kubernetes簡介
35.yaml語法介紹(K8s基礎)
36.Kubeasz部署K8s基礎測試環境簡介
37.k8s實現灰度發布(K8s基礎測試鏡像制作參考)
38.K8s無狀態控制器原理介紹
39.K8s Service原理介紹
40.K8s的存儲卷使用總結
41.K8s configMap原理介紹
42.K8s StatfulSet使用總結
43.K8s集群認證之RBAC
44.K8s之flannel網絡+Calico策略
45.調度器/預選策略/優選函數
46.容器資源限制
47.helm原理
48.ELK原理
49.Elasticsearch狀態API接口排障總結
50.fluentd日志收集器簡介(待總結)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM