Kubernetes 第一章 基礎知識

Kubernetes 第一章 基礎知識

Kubernetes是一個開源容器編排引擎,用於自動化容器化應用程序的部署,擴展和管理。開源項目由Cloud Native Computing Foundation(CNCF託管mysql

Kubernetes是一個可移植,可擴展的開源平臺,用於管理容器化工做負載和服務,有助於聲明性配置和自動化。它擁有龐大,快速發展的生態系統。Kubernetes服務,具備普遍的工具和支持可用。sql

 

發展歷程

 

傳統部署時代: 早期,組織在物理服務器上運行應用程序。沒法爲物理服務器中的應用程序定義資源邊界,這會致使資源分配問題。例如,若是在物理服務器上運行多個應用程序,則可能存在一個應用程序佔用大部分資源的狀況,所以其餘應用程序將表現不佳。解決方案是在不一樣的物理服務器上運行每一個應用程序。可是因爲資源未獲得充分利用,這並無擴展,組織維護許多物理服務器的成本很高。數據庫

虛擬化部署時代:做爲解決方案,引入了虛擬化。它容許您在單個物理服務器的CPU上運行多個虛擬機(VM)。虛擬化容許應用程序在VM之間隔離,並提供必定程度的安全性,由於另外一個應用程序沒法自由訪問一個應用程序的信息。json

虛擬化能夠更好地利用物理服務器中的資源,而且能夠實現更好的可擴展性,由於能夠輕鬆添加或更新應用程序,下降硬件成本等等。緩存

每一個VM都是在虛擬化硬件之上運行全部組件(包括其本身的操做系統)的完整計算機。安全

容器部署時代:容器相似於VM,但它們具備寬鬆的隔離屬性,可在應用程序之間共享操做系統(OS)。所以,容器被認爲是輕質的。與VM相似,容器具備本身的文件系統,CPU,內存,進程空間等。當它們與底層基礎架構分離時,它們能夠跨雲和OS分發進行移植。服務器

容器愈來愈受歡迎,由於它們有不少好處。下面列出了一些容器優點:markdown

  • 敏捷應用程序建立和部署:與VM映像使用相比,增長了容器映像建立的簡便性和效率。
  • 持續開發,集成和部署:經過快速簡便的回滾(因爲映像不變性)提供可靠且頻繁的容器映像構建和部署。
  • Dev和Ops關注點分離:在構建/發佈時而不是部署時建立應用程序容器映像,從而將應用程序與基礎架構分離。
  • 可觀察性不只能夠顯示操做系統級信息和指標,還能夠顯示應用程序運行情況和其餘信號。
  • 開發,測試和生產的環境一致性:在筆記本電腦上運行與在雲中運行相同。
  • 雲和操做系統分發可移植性:在Ubuntu,RHEL,CoreOS,本地,Google Kubernetes引擎和其餘任何地方運行。
  • 以應用程序爲中心的管理:提升在虛擬硬件上運行OS的抽象級別,以及使用邏輯資源在OS上運行應用程序。
  • 鬆散耦合,分佈式,彈性,解放的微服務:應用程序被分解爲更小的獨立部分,能夠動態部署和管理 - 而不是在一臺大型單一用途機器上運行的單片堆棧。
  • 資源隔離:可預測的應用程序性能。
  • 資源利用:高效率和高密度。

 

什麼是Kubernetes

此頁面是Kubernetes的概述。網絡

Kubernetes是一個可移植,可擴展的開源平臺,用於管理容器化工做負載和服務,有助於聲明性配置和自動化。它擁有龐大,快速發展的生態系統。Kubernetes服務,支持和工具普遍可用。架構

Kubernetes這個名字源於希臘語,意思是舵手或飛行員。谷歌在2014年開放了Kubernetes項目.Kubernetes創建在谷歌擁有大量運行生產工做量的十五年經驗的基礎上,結合了社區中的最佳創意和實踐。

回到過去

讓咱們來看看爲何Kubernetes如此有用,能夠追溯到時間。

部署演變

傳統部署時代: 早期,組織在物理服務器上運行應用程序。沒法爲物理服務器中的應用程序定義資源邊界,這會致使資源分配問題。例如,若是在物理服務器上運行多個應用程序,則可能存在一個應用程序佔用大部分資源的狀況,所以其餘應用程序將表現不佳。解決方案是在不一樣的物理服務器上運行每一個應用程序。可是因爲資源未獲得充分利用,這並無擴展,組織維護許多物理服務器的成本很高。

虛擬化部署時代:做爲解決方案,引入了虛擬化。它容許您在單個物理服務器的CPU上運行多個虛擬機(VM)。虛擬化容許應用程序在VM之間隔離,並提供必定程度的安全性,由於另外一個應用程序沒法自由訪問一個應用程序的信息。

虛擬化能夠更好地利用物理服務器中的資源,而且能夠實現更好的可擴展性,由於能夠輕鬆添加或更新應用程序,下降硬件成本等等。

每一個VM都是在虛擬化硬件之上運行全部組件(包括其本身的操做系統)的完整計算機。

容器部署時代:容器相似於VM,但它們具備寬鬆的隔離屬性,可在應用程序之間共享操做系統(OS)。所以,容器被認爲是輕質的。與VM相似,容器具備本身的文件系統,CPU,內存,進程空間等。當它們與底層基礎架構分離時,它們能夠跨雲和OS分發進行移植。

容器愈來愈受歡迎,由於它們有不少好處。下面列出了一些容器優點:

  • 敏捷應用程序建立和部署:與VM映像使用相比,增長了容器映像建立的簡便性和效率。
  • 持續開發,集成和部署:經過快速簡便的回滾(因爲映像不變性)提供可靠且頻繁的容器映像構建和部署。
  • Dev和Ops關注點分離:在構建/發佈時而不是部署時建立應用程序容器映像,從而將應用程序與基礎架構分離。
  • 可觀察性不只能夠顯示操做系統級信息和指標,還能夠顯示應用程序運行情況和其餘信號。
  • 開發,測試和生產的環境一致性:在筆記本電腦上運行與在雲中運行相同。
  • 雲和操做系統分發可移植性:在Ubuntu,RHEL,CoreOS,本地,Google Kubernetes引擎和其餘任何地方運行。
  • 以應用程序爲中心的管理:提升在虛擬硬件上運行OS的抽象級別,以及使用邏輯資源在OS上運行應用程序。
  • 鬆散耦合,分佈式,彈性,解放的微服務:應用程序被分解爲更小的獨立部分,能夠動態部署和管理 - 而不是在一臺大型單一用途機器上運行的單片堆棧。
  • 資源隔離:可預測的應用程序性能。
  • 資源利用:高效率和高密度。

爲何我須要Kubernetes以及它能作什麼

容器是捆綁和運行應用程序的好方法。在生產環境中,您須要管理運行應用程序的容器並確保沒有停機時間。例如,若是容器發生故障,則須要從新啓動另外一個容器。若是系統處理這種行爲會不會更容易?

這就是Kubernetes拯救的方式!Kubernetes爲您提供了一個彈性運行分佈式系統的框架。它負責您的擴展要求,故障轉移,部署模式等。例如,Kubernetes能夠輕鬆管理系統的canary部署。

Kubernetes爲您提供:

  • 服務發現和負載平衡
    Kubernetes可使用DNS名稱或使用本身的IP地址公開容器。若是容器的流量很高,Kubernetes可以負載均衡並分配網絡流量,以便部署穩定。
  • 存儲編排
    Kubernetes容許您自動安裝您選擇的存儲系統,例如本地存儲,公共雲提供商等。
  • 自動部署和回滾
    您可使用Kubernetes描述已部署容器的所需狀態,而且能夠以受控速率將實際狀態更改成所需狀態。例如,您能夠自動化Kubernetes爲您的部署建立新容器,刪除現有容器並將全部資源用於新容器。
  • 自動裝箱
    Kubernetes容許您指定每一個容器須要多少CPU和內存(RAM)。當容器指定了資源請求時,Kubernetes能夠更好地決定管理容器的資源。
  • 自我修復
    Kubernetes從新啓動失敗的容器,替換容器,殺死不響應用戶定義的運行情況檢查的容器,而且在它們準備好服務以前不會將它們通告給客戶端。
  • 密鑰和配置管理
    Kubernetes容許您存儲和管理敏感信息,例如密碼,OAuth令牌和ssh密鑰。您能夠部署和更新機密和應用程序配置,而無需重建容器映像,也不會在堆棧配置中暴露機密。

什麼Kubernetes不能作的

Kubernetes不是一個傳統的,一應俱全的PaaS(平臺即服務)系統。因爲Kubernetes在容器級而非硬件級運行,所以它提供了PaaS產品經常使用的一些通用功能,例如部署,擴展,負載平衡,日誌記錄和監控。可是,Kubernetes不是單片,並且這些默認解決方案是可選的和可插拔的。Kubernetes提供了構建開發人員平臺的構建塊,但在重要的地方保留了用戶選擇和靈活性。

Kubernetes:

  • 不限制支持的應用程序類型。Kubernetes旨在支持各類各樣的工做負載,包括無狀態,有狀態和數據處理工做負載。若是應用程序能夠在容器中運行,那麼它應該在Kubernetes上運行得很好。
  • 不部署源代碼而且不構建您的應用程序。持續集成,交付和部署(CI / CD)工做流程由組織文化和偏好以及技術要求決定。
  • 不提供應用程序級服務,例如中間件(例如,消息總線),數據處理框架(例如,Spark),數據庫(例如,mysql),高速緩存,也不提供集羣存儲系統(例如,Ceph)做爲內置服務。這些組件能夠在Kubernetes上運行,和/或能夠經過便攜式機制(例如Open Service Broker)在Kubernetes上運行的應用程序訪問。
  • 不指示記錄,監視或警報解決方案。它提供了一些集成做爲概念證實,以及收集和導出指標的機制。
  • 不提供或受權配置語言/系統(例如,jsonnet)。它提供了一個聲明性API,能夠經過任意形式的聲明性規範來實現。
  • 不提供或採用任何全面的機器配置,維護,管理或自我修復系統。
  • 此外,Kubernetes不只僅是一個編排系統。事實上,它消除了編排的須要。業務流程的技術定義是執行已定義的工做流程:首先執行A,而後運行B,而後執行C.相反,Kubernetes由一組獨立的,可組合的控制流程組成,這些流程不斷地將當前狀態驅動到所提供的所需狀態。如何從A到C可有可無。集中控制也不是必需的。這使得系統更易於使用,功能更強大,更強大,更具彈性,而且可擴展
相關文章
相關標籤/搜索