一.簡介
隨着容器的火爆,利用容器架構來搭建業務系統的人越來越多。可是,大家在實操中發現,像 Docker 之類的容器引擎,折騰少量容器還行。但如今的雲原生應用、機器學習任務或者大數據分析業務,動輒就要使用成百上千的容器。要管理這么多容器,Docker 們就力不從心了。
江山代有才人出,各領風騷三五年,有需求就有改變,於是乎,市場上就出現了一批容器編排工具,典型的是 Swarm、Mesos 和 K8S。
經過幾年大浪淘沙,K8S“擊敗”Swarm 和 Mesos,幾乎成了當前容器編排的事實標准。
K8S 最初是由 Google 開發的,后來捐贈給了 CNCF(雲原生計算基金會,隸屬 Linux 基金會)。
K8S 的全名是 kubernetes,讀作“庫伯耐踢死”,很多國人既拼不對也寫不對,而 K 和 S 之間有 8 個字母,索性就簡單一點,叫“開八司”了。
K8S 是個雜技高手,最擅長的就是“搬箱子”,盤各種容器玩。
K8S 的大致架構,就像上面。Master 節點,用來放“腦子”,“腿腳”搭在工作節點上“搬磚”,工作節點就是實際業務容器的存放地。
單個容器或多個關系密切的容器,被編成一組,稱為 pod。K8S 就是以 pod 為單位進行編排操作。
同時,K8S 還要和其它相關軟件配合,來完成聯網、存儲、安全等功能。
誕生六年來,K8S 一路高歌,成為容器編排和調度領域的 No.1。但需要注意的是,K8S 和 Docker 們不是替代關系,而是配合關系。
K8S 仍然會使用 Docker 之類的容器引擎(Docker、Containerd、RKT、CRI-O 等),來對容器進行生命周期管理。
二.能直接拿來用嗎?
這樣做,看起來沒毛病,K8S 是開源軟件,社區版 K8S 也很完美。
你可以在網上找到各種安裝指導文檔,然后從 github 輕松找到最新的版本,然后一步一步搭建集群。
只是安裝過程漫長而痛苦,畢竟搭建集群不是我們的目的,我們的目的是利用集群來干活。
搭一個 K8S 學習環境倒也罷了,權當練手漲經驗。可當我們要搭建生產環境的時候,事情就變得不一樣了。
這時候,為了保證集群的可靠性,我們可能要跨多個可用區來部署 K8S 集群。對於大多數人來說,這個工作不太好玩。
不止搭建集群過程很復雜,后期還要面對更繁瑣的 K8S 控制平面維護工作:版本升級、安全管控、數據備份等等。
所以,面對生產級別的業務,大家往往喜歡選擇 Turnkey (一站式)的商用方案,而不是自己慢慢鼓搗,老牛拉破車。
目前,各大雲服務商幾乎都推出了 Turnkey 方案,幫助用戶快速搭建 K8S 集群。
到底哪家強呢?王婆賣瓜,自賣自誇,似乎沒有定論。
但是有個數據很有參考意義,根據咨詢機構「Nucleus Research」的數據,所有雲中 K8S 的工作負載,竟然有 82%都是運行在 Amazon Web Services (AWS) 上的。
So,我們差不多可以這樣說,雲上 K8S,還是 AWS 最強!
AWS 提供了一個神器,叫做 Amazon Elastic Kubernetes Service (Amazon EKS),可以快速幫我們搭建高可用的雲上托管 K8S 服務。