雲原生是一條最佳路徑或者最佳實踐。更詳細的說,雲原生為使用者指定了一條低心智負擔的、敏捷的、能夠以可延伸、可複製的方式最大化地利用雲的能力、發揮雲的價值的最佳路徑。因此,雲原生其實是一套指導進行軟體架構設計的思想。
2004 年— 2007 年,Google 已在內部大規模地使用像 Cgroups 這樣的容器技術;
2008 年,Google 將 Cgroups 合併進入了 Linux 核心主幹;
2013 年,Docker 專案正式釋出。
2014 年,Kubernetes 專案也正式釋出。這樣的原因也非常容易理解,因為有了容器和 Docker 之後,就需要有一種方式去幫助大家方便、快速、優雅地管理這些容器,這就是 Kubernetes 專案的初衷。在 Google 和 Redhat 釋出了 Kubernetes 之後,這個專案的發展速度非常之快。
2015 年,由Google、Redhat 以及微軟等大型雲端計算廠商以及一些開源公司共同牽頭成立了 CNCF 雲原生基金會。CNCF 成立之初,就有 22 個創始會員,而且 Kubernetes 也成為了 CNCF 託管的第一個開源專案。在這之後,CNCF 的發展速度非常迅猛;
2017 年,CNCF 達到 170 個成員和 14 個基金專案;
2018 年,CNCF 成立三週年有了 195 個成員,19 個基金會專案和 11 個孵化專案,如此之快的發展速度在整個雲端計算領域都是非常罕見的。
Kubernetes,從官方網站上可以看到,它是一個工業級的容器編排平臺。Kubernetes 這個單詞是希臘語,它的中文翻譯是「舵手」或者「飛行員」。在一些常見的資料中也會看到「ks」這個詞,也就是「k8s」,它是通過將8個字母「ubernete 」替換為「8」而導致的一個縮寫。
如今,Kubernetes 和更廣泛的容器生態系統日益成熟,成為通用的計算平臺和生態系統,可與作為現代雲基礎架構和應用基本構建塊的虛擬機器器 (VM) 一爭高下,甚至大有後來居上之勢。這個生態系統使組織能夠交付高效的平臺即服務 (PaaS),用於應對與基礎架構和運營相關的多個雲原生開發任務和問題,從而使開發團隊能夠專心致志地從事編碼和創新工作。
部署
將指定數量的容器部署到指定的主機,並確保它們以期望的狀態持續執行。
服務發現和負載均衡
Kubernetes 可以使用 DNS 名稱或自己的 IP 地址來暴露容器。 如果進入容器的流量很大, Kubernetes 可以負載均衡並分配網路流量,從而使部署穩定。
儲存編排
Kubernetes 允許你自動掛載你選擇的儲存系統,例如本地儲存、公共雲提供商等。
自動部署和回滾
你可以使用 Kubernetes 描述已部署容器的所需狀態, 它可以以受控的速率將實際狀態更改為期望狀態。 例如,你可以自動化 Kubernetes 來為你的部署建立新容器, 刪除現有容器並將它們的所有資源用於新容器。
自動完成裝箱計算
你為 Kubernetes 提供許多節點組成的叢集,在這個叢集上執行容器化的任務。 你告訴 Kubernetes 每個容器需要多少 CPU 和記憶體 (RAM)。 Kubernetes 可以將這些容器按實際情況排程到你的節點上,以最佳方式利用你的資源。
自我治癒以實現高可用性
當某個容器出現故障時,Kubernetes 可自動重新啟動或替換它,以防止發生宕機情況。 它還可以關閉不滿足執行狀況檢查要求的容器。
金鑰與設定管理
Kubernetes 允許你儲存和管理敏感資訊,例如密碼、OAuth 令牌和 SSH 金鑰。 你可以在不重建容器映象的情況下部署和更新金鑰和應用程式設定,也無需在堆疊設定中暴露金鑰。
k8s將一切資源抽象成物件,核心物件包括
命令式:我要你做什麼,怎麼做,嚴格按照我說的做
宣告式:我需要什麼,而不是告訴你應該怎樣做
宣告式操作在分散式系統中的好處主要包括穩定性以及可預測性。在分散式系統中,如果一個操作是宣告式的,例如設定副本數為3,無論執行多少次這個操作,結果都是一樣的。相對而言,如果是一個命令式的操作,例如給副本數加1,那麼執行多次就會得到不同的結果,這就可能導致系統的穩定性受到影響。
__EOF__
歡迎轉載,但請註明出處!
歡迎大家一起交流學習!如果有什麼疑問,大家可以在評論區一起交流!
如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是我的最大動力!