1、Docker起源
2010年,在美國舊金山成立了一家名叫“dotCloud”的公司,主要提供基于PaaS的云計算技術服務,是和LXC(Linux container:Linux容器虛擬技術)有關的容器技術,后來dotCloud公司將自己的容器技術進行了簡化和標準化,并命名為——Docker,Docker火了之后,dotCloud公司把公司名字也改成了Docker Inc.。
在容器技術之前,業界的網紅是虛擬機,虛擬機技術的代表,是VMWare和OpenStack。但是為什么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學習路線
待添加。。。
浙公網安備 33010602011771號