天天看點

雲發展曆程簡介:雲計算->容器->容器雲->kubernetes

版權聲明:本文為部落客原創文章,部落格位址:

https://blog.csdn.net/zxy_666/article/details/80022455,未經部落客允許不得轉載。

前言:

在開始k8s的學習之前,我覺得能先了解一下相關的背景知識會更加有助于知識的貫通和了解。因為k8s是容器的編排(通俗點可了解為“管理”)工具,那麼容器是如何産生的呢?說到這個還得涉及雲計算的發展。下面将簡單地講述這一路發展過程。

本文内容摘錄自《Docker容器與容器雲》一書

雲計算平台

雲計算是什麼

這個問題,衆說紛纭。

· 維基百科定義為:雲計算是一種基于網際網路的計算新方式,通過網際網路異構,自治的服務為個人和企業使用者提供按需即取的計算。

· IBM認為:雲計算是一種新興的IT服務傳遞方式,應用,資料和計算資源能夠通過網絡作為标準服務在靈活的價格下快速地提供給最終使用者。

·有的則認為:雲計算是一種資源的服務模式。該模式可以實作随時随地、便捷按需地從可配置計算資源共享池中擷取所需的資源(如網絡,伺服器,存儲,應用及服務等),資源能夠快速供應并釋放,大大減少了資源管理工作開銷,你甚至可以不用理會那些令人頭痛的傳統服務供應商了。

總的來說:

雲計算是一種資源的服務模式,是一種新興的IT服務模式,能通過網際網路将資源(網絡,存儲,計算資源,伺服器,應用等)按需提供給使用者。快速地資源供應和釋放,不僅大大提供了資源的使用率,減少資源管理的工作開銷,且提高了使用者體驗并大大降低其成本。

一句話總結:

雲計算是通過網絡将資源按需地提供給使用者,提供了更好的使用者體驗和低廉的成本。

經典雲計算架構

雲發展曆程簡介:雲計算->容器->容器雲->kubernetes

經典雲計算架構包括三層服務:

· IaaS:基礎設施即服務

為基礎設施運維人員服務,提供計算、存儲、網絡及其他基礎資源,雲平台使用者可以再上面部署包括作業系統和應用程式在内的任意軟體,無需再為基礎設施的管理而分心。

· PaaS:平台即服務

為應用開發人員服務,提供支撐應用運作所需的軟體運作時環境、相關工具與服務,如資料庫服務、日志服務、監控服務等,讓應用開發者可以專注于核心業務的開發。

· SaaS:軟體即服務

為一般使用者服務,提供了一套完整可用的軟體系統,讓一般使用者無需關注技術細節,隻需通過浏覽器、應用用戶端等方式就能使用部署在雲上的應用服務。

更細的架構圖可參考:

雲發展曆程簡介:雲計算->容器->容器雲->kubernetes

圖檔來自:

https://blog.csdn.net/enweitech/article/details/53405153

雲計算發展産生的問題

雲計算發展壯大的同時,随着計算機技術推陳出新,應用的規模愈發龐大,邏輯愈發複雜,疊代更新愈發頻繁,應用開發所需的統一規範和原有開發模式雜亂無章成立追求進步的主要障礙。

IaaS的發展主要以虛拟機為最小粒度的資源排程機關,出現了資源使用率低,排程分發緩慢,軟體棧環境不統一等一系列問題。PaaS在IaaS基礎上發展而來,衆多PaaS已經意識到可以利用容器技術解決資源使用率問題,但是PaaS通常在應用架構選擇、支援的軟體環境服務方面有較大的限制,這帶來了應用與平台無法解耦、應用運作時環境局限性強、運維人員控制力下降的問題。

可見無論IaaS還是PaaS都有各自适用的場景,但依舊存在諸多缺陷,人們亟需一個真正可用的解決方案。在這場革命中,Docker抓住了機遇,帶來了容器新革命。

Docker

docker是什麼

官方定義:

Docker是以Docker容器為資源分割和排程的基本機關,封裝整個運作時環境,為開發者和系統管理者設計的,用于建構、釋出、和運作分布式應用的平台。它是一個跨平台,可移植并且簡單易用的容器解決方案。

容器生态系統

一個軟體項目成功與否的一個重要特征是能否帶動一個生态系統的發展,以Docke為代表的容器技術顯然做到了這一點。當然,容器技術的迅猛發展與其強大的生态系統息息相關。下面通過2張圖來整體審視一下它。

雲發展曆程簡介:雲計算->容器->容器雲->kubernetes
以上圖檔來自:https://xxbandy.github.io/2017/11/05/%E5%AE%B9%E5%99%A8%E7%94%9F%E6%80%81%E6%8A%80%E6%9C%AF/
雲發展曆程簡介:雲計算->容器->容器雲->kubernetes

從圖中可以看出,容器技術的生态系統自下而上分别覆寫了IaaS層和PaaS層涉及的各類問題,包括資源排程,編排,部署,監控,配置管理,存儲網絡管理,安全,容器化應用支撐平台等。

容器技術的好處

  • 持續部署與測試

    容器消除了線上線下的環境差異,保證了應用生命周期的環境一緻性和标準化。開發人員使用鏡像實作标準開發環境的建構,開發完成後通過封裝着完整環境和應用的鏡像進行遷移。由此,測試和運維人員可以直接部署軟體鏡像來進行測試和釋出,大大簡化了持續內建、測試和釋出的過程。

  • 跨平台支援

    容器帶來的最大好處之一就是其适配性,越來越多的雲平台都支援容器,使用者再也無需擔心應平台的捆綁,同時也能讓應用多平台混合部署成為可能。目前支援容器的IaaS平台包括但不限于亞馬遜平台(AWS)、Google雲平台(GCP)、微軟雲平台(Azure)、OpenStack等,還包括如Chef、Puppet、Ansible等配置管理工具。

  • 環境标準化和版本控制

    基于容器提供的環境一緻性和标準化,你可以使用Git等工具對容器鏡像進行版本控制,相比于代碼的版本控制來說,你還能夠對整個應用運作環境實作版本控制,一旦出現故障可以快速復原。相比以前的虛拟機鏡像,容器壓縮和備份速度更快,鏡像啟動也像啟動一個普通進行一樣快速。

  • 高資源使用率與隔離

    容器沒有管理程式的額外開銷,與底層共享作業系統,性能更加優良,系統負載更低,在同等條件下可以更充分地利用系統資源。同時,容器擁有不錯的資源隔離與限制能力,可以精确地對應用配置設定CPU和記憶體等資源,保證了應用間不會互相影響。

  • 容器跨平台與鏡像

    linux容器雖然早在Linux 2.6版本核心已經存在,但是缺少容器的跨平台性,難以推廣。容器在原有Linux容器的基礎上大膽革新,為容器設定了一整套标準化的配置方法,将應用依賴的運作環境打包成鏡像,真正實作了“建構一次,到處運作”的理念,大大提高了容器的跨平台性。

  • 易于了解且易用

    Docker的英文原意是集裝箱碼頭勞工,标志是鲸魚運送一大堆集裝箱,集裝箱就是容器,生動好記,易于了解。一個開發者可以在15分鐘内入門Docker并進行安裝和部署,這是容器史上的一次飛躍。因為它的易用性,有更多的人開始關注容器技術,加速了容器标準化的步伐。

  • 應用鏡像倉庫

    Docker官方建構了一個鏡像倉庫,組織和管理形式類似于GitHub,其上已累積了成千上萬的鏡像,因為Docker的跨平台适配性,相當于使用者提供了一個非常有用的應用商店,所有人都可以自由地下載下傳為服務元件,這為開發者提供了巨大便利。

容器雲

背景:

容器為使用者打開了一扇通往新世界的大門,真正進入容器的世界後,卻發現新的生态系統如此龐大。在生産使用時,無論是個人還是企業,都會提出更複雜的需求。這時,我們需要衆多跨主機的容器協同工作,需要支援各種類型的工作負載,企業級應用開發更是需要基于容器技術,實作支援多人協作的持續內建、持續傳遞平台。及時Docker隻需一條指令便可啟動一個容器,一旦試圖将其推廣到軟體開發和生産環境中,麻煩便層出不窮,容器相關的網絡、存儲、叢集、高可用等就是不得不面對的問題。從容器到容器雲的進化應運而生。

容器雲是什麼?

容器雲以容器為資源分割和排程的基本機關,封裝整個軟體運作時環境,為開發者和系統管理者提供用于建構,釋出和運作分布式應用的平台。當容器雲專注于資源共享與隔離、容器編排與部署,它更接近傳統的IaaS;當容器雲滲透到應用支撐與運作時環境時,它更接近與傳統的PaaS.

容器雲并不僅限與Docker,基于rkt容器的CoreOS項目也是容器雲。Docker的出現讓人們意識到了容器的價值,使得一直以來長期存在但并未被重視的輕量級虛拟化技術得到快速地發展和應用。

Kubernetes

簡單地說kubernetes是一個管理跨主機容器化應用的系統,是一個容器的編排工具。它實作了包括應用部署、高可用管理和彈性伸縮在内的一系列基礎功能,并封裝成為一整套完整、簡單易用的RESTful API對外提供服務。

更多關于kubernetes的介紹請期待後續文檔

繼續閱讀