什么是 Kubernetes?
Kubernetes 是一個可移植、可擴展的開源平臺,用于管理容器化工作負載和服務,有助于聲明式配置和自動化,它擁有龐大且快速發展的生態系統,Kubernetes 服務、支持和工具隨處可見。
您可以將運行 Linux? 容器的主機組集群在一起,Kubernetes 可幫助您輕松高效地管理這些集群。
Kubernetes 集群 可以跨越本地、公共、 私有或 混合云的主機,因此,Kubernetes 是托管 需要快速擴展的云原生應用程序的理想平臺 ,例如通過Apache Kafka的實時數據流 。
Kubernetes 的名字來源于希臘語,意思是舵手或飛行員,K8s 作為縮寫的結果來自計算“K”和“s”之間的八個字母,Google 于 2014 年開源了 Kubernetes 項目。Kubernetes 結合了 Google 超過 15 年的大規模運行生產工作負載的經驗以及來自社區的最佳創意和實踐。
為什么我們需要 Kubernetes?
保持容器化應用程序的啟動和運行可能很復雜,因為它們通常涉及部署在不同機器上的許多容器,Kubernetes 提供了一種調度和部署這些容器的方法,并將它們擴展到您想要的狀態并管理它們的生命周期,使用 Kubernetes 以可移植、可擴展和可擴展的方式實現基于容器的應用程序。
Kubernetes 的好處?
容器是捆綁和運行應用程序的好方法。在生產環境中,您需要管理運行應用程序的容器并確保沒有停機,例如,如果一個容器宕機,另一個容器需要啟動,如果這種行為由系統處理會不會更容易?
Kubernetes 提供了一個彈性運行分布式系統的框架,負責應用程序的擴展和故障轉移,提供部署模式等等,例如,Kubernetes 可以輕松管理系統的金絲雀部署。
Kubernetes 提供:
- 服務發現和負載平衡 :Kubernetes 可以使用 DNS 名稱或使用自己的 IP 地址公開容器,如果容器的流量很高,Kubernetes 能夠負載均衡和分配網絡流量,從而使部署穩定。
- 存儲編排 :Kubernetes 允許您自動掛載您選擇的存儲系統,例如本地存儲、公共云提供商等。
- 自動推出和回滾 :可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控速率將實際狀態更改為所需狀態,例如,您可以自動化 Kubernetes 為您的部署創建新容器、刪除現有容器并將其所有資源用于新容器。
- 自動裝箱 :您為 Kubernetes 提供了一組節點,可用于運行容器化任務,您告訴 Kubernetes 每個容器需要多少 CPU 和內存 (RAM),Kubernetes 可以將容器安裝到您的節點上,以充分利用您的資源。
- 自我修復 :Kubernetes 會重啟失敗的容器、替換容器、殺死不響應用戶定義的健康檢查的容器,并且在它們準備好提供服務之前不會向客戶端通告它們。
- 秘密和配置管理 :Kubernetes 允許您存儲和管理敏感信息,例如密碼、OAuth 令牌和 SSH 密鑰,可以部署和更新機密和應用程序配置,而無需重建容器映像,也無需在堆棧配置中公開機密。
Kubernetes 如何工作?
隨著應用程序擴展到跨多個服務器部署的多個容器,操作它們變得更加復雜,為了管理這種復雜性,Kubernetes 提供了一個開源 API,用于控制這些容器的運行方式和位置。
Kubernetes 編排虛擬機集群并根據它們的可用計算資源和每個容器的資源要求安排容器在這些虛擬機上運行,容器被分組為 pod ,這是 Kubernetes 的基本操作單元,這些 pod 可以擴展到您想要的狀態。
Kubernetes 還自動管理服務發現、整合負載平衡、跟蹤資源分配并根據計算利用率進行擴展,而且,它會檢查單個資源的健康狀況,并通過自動重啟或復制容器使應用程序能夠自我修復。
- 在同一個 Kubernetes 集群中一起快速迭代、測試和調試應用程序的不同部分。
- 將代碼合并并檢查到 GitHub 存儲庫中以進行持續集成,然后,運行自動化構建和測試作為持續交付的一部分。
- 驗證容器鏡像的來源和完整性,圖像被隔離,直到它們通過掃描。
- 使用 Terraform 等工具配置 Kubernetes 集群。Terraform 安裝的 Helm 圖表定義了應用程序資源和配置的所需狀態。
- 實施策略來管理對 Kubernetes 集群的部署。
- 發布管道自動對每個代碼執行預定義的部署策略。
- 向 CI/CD 管道添加策略審計和自動修復,例如,只有發布管道有權在您的 Kubernetes 環境中創建新的 Pod。
- 啟用應用遙測、容器運行狀況監控和實時日志分析。
- 用洞察力解決問題并為下一個沖刺制定計劃。
什么是POD?
Kubernetes pod 是一組 容器 ,是 Kubernetes 管理的 最小單元 ,Pod 有一個 IP 地址,應用于 Pod 內的每個容器。Pod 中的容器共享相同的資源,例如內存和存儲,這允許將 pod 內的各個 Linux 容器作為一個應用程序共同處理,就好像所有容器化進程在更傳統的工作負載中在同一臺主機上一起運行一樣。
當應用程序或服務是需要運行的單個進程時,只有一個容器的 pod 是很常見的,但是當事情變得更復雜,多個進程需要使用相同的共享數據卷協同工作才能正確運行時,
例如,如果您正在使用創建 GIF 的圖像處理服務,一個 pod 可能有多個容器協同工作來調整圖像大小,主容器可能正在運行接收請求的非阻塞微服務應用程序,然后一個或多個輔助(side-car)容器運行批處理后臺進程或清理存儲卷中的數據工件,作為管理整體應用程序性能的一部分。
-
Linux
+關注
關注
87文章
11345瀏覽量
210394 -
容器
+關注
關注
0文章
499瀏覽量
22120 -
開源平臺
+關注
關注
0文章
8瀏覽量
6886 -
kubernetes
+關注
關注
0文章
227瀏覽量
8752
發布評論請先 登錄
相關推薦
評論