Kubernetes 學習筆記 1 基本知識
kubernetes是一個開源的容器編排引擎,用來對容器化應用進行自動化部署、擴縮和管理。該專案託管在CNCF。
-
基礎概念
Kubernetes 是一個可移植的、可擴充套件的開源平臺,用於管理容器化的工作負載和服務,可促進宣告式配置和自動化。 Kubernetes 擁有一個龐大且快速增長的生態系統。Kubernetes 的服務、支援和工具廣泛可用。
Kubernetes 這個名字源於希臘語,意為“舵手”或“飛行員”。k8s 這個縮寫是因為 k 和 s 之間有八個字元的關係。 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 金鑰。 你可以在不重建容器映象的情況下部署和更新金鑰和應用程式配置,也無需在堆疊配置中暴露金鑰