Kubernetes(一):雲計算發展歷程


  
  

一、雲計算

  

雲計算發展歷程

  在學習k8s的過程中接觸到了Serverless的概念,這里先對雲計算的發展歷程做一個簡單的總結,以便引入Serverless。2006年,Google董事長 Eric Schmidt 在搜索引擎大會首次提出雲計算(Cloud Computing)的概念,一轉眼十多年過去了,雲計算的發展勢如破竹,從傳統的IDC到現在的FaaS,逐漸快捷,愈發高效

  • IDC( Internet Data Center ):互聯網數據中心。自建或者租用。自建自己干全套;租用就是服務器自己買,租人家的機櫃,硬件安裝和調試都由被托管方負責。
  • IaaS(Infrastructure as a Service):基礎設施即服務。IaaS提供商給你提供硬件, 想怎么用自己搞。
  • PaaS(Platform as a Service):平台即服務。PaaS提供商給你提供硬件並裝好操作系統、相關中間件及運行庫等基礎環境,至於要裝什么應用看需求。
  • SaaS(Software as a Service):軟件即服務。所有的東西都由IaaS提供商提供,用戶只管用。
  • FaaS(Function as a Service):函數即服務。將應用程序抽象成函數,只有當程序被調用時才會執行函數啟動,平時不啟動不占用資源。

  

Serverless

  Serverless是無服務器架構,這並不是說不用服務器了,而是通過技術手段將服務器透明化了,讓開發者減少對服務器資源的關注,能夠更加專注於自己的開發工作(業務)。Faas就是Serverless概念的一種體現。

  • 低成本

    • Serverless將用戶的服務器,數據庫,中間件委托於FaaS,用戶不再參與基礎設施及軟件的維護,而是直接使用相關的資源,大大節約了維護成本,降低了開發難度。
  • 按需計費

    • 不同於以往雲計算的計費方式,FaaS是按照請求次數及運行時間計費,最大程度利用了資源並降低了成本
  • 簡化管理

    • 自動化的彈性擴展、減小了打包和部署的復雜度、可以快速發布出去。

  

二、容器化的演變過程

  • 傳統服務

    • 在微服務和容器化還沒有盛行的時候,系統服務架構如下圖,這種單體架構的好處就是便於管理和初次部署,但是當后續產品規模越來越大時,壞處就體現出來了。

      • 項目過於臃腫。大大小小的模塊都幾種在同一個項目中,開發者不易維護
      • 資源無法隔離。如果其中一個模塊出現內存泄漏,整個系統都會被拖垮
      • 無法靈活擴展。有時並不是產品的每個模塊都會提供對外訪問,訪問量大做集群負載時無法輕易水平擴展。
  • 微服務

    • 微服務是近幾年流行的一種架構思想,它提倡化整為零,將單一應用程序划分為一個一個的小服務,每個小服務運行在一個單獨的環境中,互不影響卻又能相互協調、相互配合達到化零為整的效果。微服務有以下特點:

      • 獨立測試、部署、升級、發布。可以單獨只測試某一個模塊。
      • 便於擴展。比如商品模塊訪問量比較大,一個節點扛不住,那就再弄一台服務器部署一個商品模塊,前端做LB。
      • 提高了容錯,比如某個模塊出問題了,不會影響到其它模塊
      • 提高了管理的復雜度。當你單個服務過多時,互相之間的調用就是問題,如果單個寫靜態配置文件的話對運維人員會是一個不小的挑戰。這時候就需要一個叫服務注冊中心的東西,每個單服務實例在啟動的時候,向注冊中心注冊自己的IP地址等信息,這樣別的服務調用它時,都會先去注冊中心查詢,然后根據查詢到的信息再去調用。比如訂單模塊之前調用的是支付模塊A,支付模塊A的服務掛了,那一定時間內注冊中心就會移除支付模塊A的注冊信息。訂單模塊連接不上原本的支付模塊A了,就會再次向注冊中心查詢有沒有其他的支付模塊。
      • 客戶端調服務端都需要一個統一的入口,就是API Gateway。此處的客戶端是一個相對的說法,除去外部訪問,內部訪問A調用B,相對B來說A就是客戶端。API Gateway有身份驗證、請求分片、負載均衡等功能。個人理解有限,想深入了解的自行查資料。
  • 容器化

    • 容器概念的出現是要比微服務晚不少的,近幾年流行的docker,為微服務架構提供了有效的容器。資源的有效隔離是微服務的設計原則之一,而docker恰好可以實現。

      • 一般情況下一個容器一個服務
      • 容器的資源隔離(PID、IPC、UTS等)、限制(CPU、Mem等)。
      • 可擴展性、可移植性。

  

三、容器編排工具

  • 容器編排工具概念

    • 當容器數量達到一定規模,就需要編排工具去管理,就是容器生命周期管理工具。容器編排工具提供調度和管理集群的技術,提供用於基於容器應用可擴展性的基本機制。這些工具使用容器服務,並編排他們以決定容器之間如何進行交互。 ---百度百科
  • 容器編排工具的核心價值

    • 准備和部署容器
    • 容器的高可用和負載均衡
    • 應用規模的自動擴縮容
    • 底層硬件故障,能夠把容器遷移到其他節點上,用戶無感知。
    • 容器資源分配
    • 容器的注冊與自動發現
    • 容器和宿主機的健康檢查
    • 容器配置和存儲管理
  • 容器編排工具種類

    • Docker Swarm:docker自己的容器編排工具。
    • Apache Mesos and Marathon:Mesos是一個數據中心的資源統一管控的工具,本身沒有編排容器的功能,需要和Marathon結合使用。后來Apache Mesos自己說不但支持Marathon也支持Kubernetes,且當時docker也說不但原生支持docker swarm也支持k8s。。。。。k8s的地位已經顯而易見了。
    • Kubernetes: 壓軸滴啦,請看下篇文章k8s介紹


寫作不易,轉載請注明出處,謝謝~~


免責聲明!

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



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