1. 程式人生 > 其它 >Kubernetes學習之Kubernetes起源及簡介

Kubernetes學習之Kubernetes起源及簡介

1、Docker起源

  2010年,在美國舊金山成立了一家名叫“dotCloud”的公司,主要提供基於PaaS的雲端計算技術服務,是和LXC(Linux container:Linux容器虛擬技術)有關的容器技術,後來dotCloud公司將自己的容器技術進行了簡化和標準化,並命名為——Docker,Docker火了之後,dotCloud公司把公司名字也改成了Docker Inc.。

  在容器技術之前,業界的網紅是虛擬機器,虛擬機器技術的代表,是VMWareOpenStack。但是為什麼Docker能成功呢,就是因為它“輕”。虛擬機器屬於虛擬化技術,而Docker這樣的容器技術,也是虛擬化技術,但是屬於輕量級的虛擬化

  虛擬機器雖然可以隔離出很多“子電腦”,但佔用空間更大,啟動更慢,虛擬機器軟體可能還要花錢(例如VMWare),而容器技術恰好沒有這些缺點。它不需要虛擬出整個作業系統,只需要虛擬一個小規模的環境(類似“沙箱”),它啟動時間很快,幾秒鐘就能完成。而且,它對資源的利用率很高(一臺主機可以同時執行幾千個Docker容器)。此外,它佔的空間很小,虛擬機器一般要幾GB到幾十GB的空間,而容器只需要MB級甚至KB級。

        

2、Kubernetes起源

  • Kubernetes最初源於谷歌內部的Borg,後面谷歌基於Borg系統,採用go語言重寫成了Kubernetes,去掉頭尾正好8個字元,簡稱K8S,類似於我們在專案中使用的國際化(internationalization)叫做 i18n 是一樣效果。

  • 2014年6月 谷歌雲端計算專家Eric Brewer在舊金山的釋出會為這款新的開源工具揭牌。

  • 2015年7月22日K8S迭代到 v 1.0並在OSCON大會上正式對外公佈。

  • 為了建立容器編排領域的標準和規範,Google、RedHat 等開源基礎設施領域玩家們,在 2015 年共同牽頭髮起了名為 CNCF(Cloud Native Computing Foundation)的基金會。Kubernetes 成為 CNCF 最核心的專案。發起成員:AT&T, Box, Cisco, Cloud Foundry Foundation, CoreOS, Cycle Computing, Docker, eBay, Goldman Sachs, Google, Huawei, IBM, Intel, Joyent, Kismatic, Mesosphere, Red Hat, Switch SUPERNAP, Twitter, Univa, VMware and Weaveworks。

  • 2018年,超過 1700 開發者成為 Kubernetes 專案社群貢獻者,全球有 500 多場沙龍。國內出現大量基於 Kubernetes 的創業公司。

  • 2020 年,Kubernetes 專案已經成為貢獻者僅次於 Linux 專案的第二大開源專案。成為了業界容器編排的事實標準,各大廠商紛紛宣佈支援 Kubernetes 作為容器編排的方案。

3、為什麼Kubernetes能成功

  容器技術雖然解決了應用和基礎設施異構的問題,讓應用可以做到一次構建,多次部署,但在複雜的微服務場景,單靠 Docker 技術還不夠,它仍然有以下問題沒有解決:

  • 整合和編排微服務模組

  • 提供按需自動擴容,縮容能力

  • 故障自愈

  • 叢集內的通訊

  除了Kubernetes,還有Apache的Mesos,以及Docker公司的Docker Swarm,能實現容器編排管理,那麼為啥Kubernetes能成功呢?

  

 

 

  Mesos大而全,雖然很穩定,但是它的使使用者快速學習應用變得更加困難;Docker Swarm 的優點和缺點都是使用標準的 Docker 介面,因為使用簡單,容易整合到現有系統,所以在支援複雜的排程系統時候就會比較困難,而Kubernetes具備以下核心能力:

  • 輕量級:Go語言實現,資源消耗小。

  • 儲存編排:Kubernetes 允許您自動掛載您選擇的儲存系統,例如本地儲存、公共雲提供商等。

  • 彈性伸縮:按需的垂直擴容,新的伺服器(node)能夠輕易的增加或刪除;按需的水平擴容,容器例項能夠輕鬆擴容,縮容。

  • 負載均衡IPVS:可以使用 DNS 名稱或自己的 IP 地址公開容器,如果到容器的流量很大,Kubernetes 可以負載均衡並分配網路流量,從而使部署穩定。

  • 自動部署和回滾:可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控的速率將實際狀態更改為所需狀態。例如,您可以自動化 Kubernetes 來為您的部署建立新容器,刪除現有容器並將它們的所有資源用於新容器。

  • 自我修復:Kubernetes 重新啟動失敗的容器、替換容器、殺死不響應使用者定義的執行狀況檢查的容器,並且在準備好服務之前不將其通告給客戶端。

  • 金鑰與配置管理:Kubernetes 允許您儲存和管理敏感資訊,例如密碼、OAuth 令牌和 ssh 金鑰。您可以在不重建容器映象的情況下部署和更新金鑰和應用程式配置,也無需在堆疊配置中暴露金鑰。

  • 自動二進位制打包:Kubernetes 允許您指定每個容器所需 CPU 和記憶體(RAM)。當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源。

4、Kubernetes學習路線

  待新增。。。