Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的作業負載和服務,可促進宣告式配置和自動化, Kubernetes 擁有一個龐大且快速增長的生態系統,Kubernetes 的服務、支持和工具廣泛可用,
名稱 Kubernetes 源于希臘語,意為“舵手”或“飛行員”,Google 在 2014 年開源了 Kubernetes 專案, Kubernetes 建立在 Google 在大規模運行生產作業負載方面擁有十幾年的經驗 的基礎上,結合了社區中最好的想法和實踐,
時光回溯
讓我們回顧一下為什么 Kubernetes 如此有用,

傳統部署時代:
早期,組織在物理服務器上運行應用程式,無法為物理服務器中的應用程式定義資源邊界,這會導致資源分配問題, 例如,如果在物理服務器上運行多個應用程式,則可能會出現一個應用程式占用大部分資源的情況, 結果可能導致其他應用程式的性能下降, 一種解決方案是在不同的物理服務器上運行每個應用程式,但是由于資源利用不足而無法擴展, 并且組織維護許多物理服務器的成本很高,
虛擬化部署時代:
作為解決方案,引入了虛擬化,虛擬化技術允許你在單個物理服務器的 CPU 上運行多個虛擬機(VM), 虛擬化允許應用程式在 VM 之間隔離,并提供一定程度的安全,因為一個應用程式的資訊 不能被另一應用程式隨意訪問,
虛擬化技術能夠更好地利用物理服務器上的資源,并且因為可輕松地添加或更新應用程式 而可以實作更好的可伸縮性,降低硬體成本等等,
每個 VM 是一臺完整的計算機,在虛擬化硬體之上運行所有組件,包括其自己的作業系統,
容器部署時代:
容器類似于 VM,但是它們具有被放寬的隔離屬性,可以在應用程式之間共享作業系統(OS), 因此,容器被認為是輕量級的,容器與 VM 類似,具有自己的檔案系統、CPU、記憶體、行程空間等, 由于它們與基礎架構分離,因此可以跨云和 OS 發行版本進行移植,
容器因具有許多優勢而變得流行起來,下面列出的是容器的一些好處:
- 敏捷應用程式的創建和部署:與使用 VM 鏡像相比,提高了容器鏡像創建的簡便性和效率,
- 持續開發、集成和部署:通過快速簡單的回滾(由于鏡像不可變性),支持可靠且頻繁的 容器鏡像構建和部署,
- 關注開發與運維的分離:在構建/發布時而不是在部署時創建應用程式容器鏡像, 從而將應用程式與基礎架構分離,
- 可觀察性不僅可以顯示作業系統級別的資訊和指標,還可以顯示應用程式的運行狀況和其他指標信號,
- 跨開發、測驗和生產的環境一致性:在便攜式計算機上與在云中相同地運行,
- 跨云和作業系統發行版本的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方運行,
- 以應用程式為中心的管理:提高抽象級別,從在虛擬硬體上運行 OS 到使用邏輯資源在 OS 上運行應用程式,
- 松散耦合、分布式、彈性、解放的微服務:應用程式被分解成較小的獨立部分, 并且可以動態部署和管理 - 而不是在一臺大型單機上整體運行,
- 資源隔離:可預測的應用程式性能,
- 資源利用:高效率和高密度,
為什么需要 Kubernetes,它能做什么?
容器是打包和運行應用程式的好方式,在生產環境中,你需要管理運行應用程式的容器,并確保不會停機, 例如,如果一個容器發生故障,則需要啟動另一個容器,如果系統處理此行為,會不會更容易?
這就是 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)、交付和部署(CI/CD)作業流取決于組織的文化和偏好以及技術要求,
- 不提供應用程式級別的服務作為內置服務,例如中間件(例如,訊息中間件)、 資料處理框架(例如,Spark)、資料庫(例如,mysql)、快取、集群存盤系統 (例如,Ceph),這樣的組件可以在 Kubernetes 上運行,并且/或者可以由運行在 Kubernetes 上的應用程式通過可移植機制(例如, 開放服務代理)來訪問,
- 不要求日志記錄、監視或警報解決方案, 它提供了一些集成作為概念證明,并提供了收集和匯出指標的機制,
- 不提供或不要求配置語言/系統(例如 jsonnet),它提供了宣告性 API, 該宣告性 API 可以由任意形式的宣告性規范所構成,
- 不提供也不采用任何全面的機器配置、維護、管理或自我修復系統,
- 此外,Kubernetes 不僅僅是一個編排系統,實際上它消除了編排的需要, 編排的技術定義是執行已定義的作業流程:首先執行 A,然后執行 B,再執行 C, 相比之下,Kubernetes 包含一組獨立的、可組合的控制程序, 這些程序連續地將當前狀態驅動到所提供的所需狀態, 如何從 A 到 C 的方式無關緊要,也不需要集中控制,這使得系統更易于使用 且功能更強大、系統更健壯、更為彈性和可擴展,
https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
- 查閱 Kubernetes 組件
- 開始 Kubernetes 入門?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/255888.html
標籤:其他
上一篇:關于年度述職報告總結雜語
